Hacker News

boznz
Das Blinkenlights rodyne.com

Got a boring server rack? Got a retro-computer project? Need some bling??

If you have a little electronics skill then you may want to make a few of these babies to let your server rack party like a 1970's mainframe.

Just a fun little project done over a couple of days at XMAS, and probably best not to install in the corporate server room!


croes3 days ago

Nitpicking

Blinkenlights isn’t a german word it’s pseudo german for Blinklicht originating from

https://en.wikipedia.org/wiki/Blinkenlights#:~:text=on%20the...

But the Chaos Computer Club built light installations called

https://en.wikipedia.org/wiki/Project_Blinkenlights

fuzztester3 days ago

>The Jargon File also mentions that German hackers had in turn developed their own versions of the blinkenlights poster, in broken English:[1]

    ATTENTION
    This room is fullfilled mit special electronische equippment.
    Fingergrabbing and pressing the cnoeppkes from the computers is allowed for die experts only!
    So all the "lefthanders" stay away and do not disturben the brainstorming von here working intelligencies.
    Otherwise you will be out thrown and kicked anderswhere!
    Also: please keep still and only watchen astaunished the blinkenlights.

graemep3 days ago

That is funny (I do not know German but it still made me laugh) for exactly the same reason as the Blinkelights version - the similarities between German and English that make so many works almost recognisable.

wizzwizz43 days ago

I have never been able to track down what "cnoeppkes" is supposed to mean.

wongarsu3 days ago

My guess is "Knöpfchen" (German for "little button"). The "chen" suffix is difficult to pronounce for English speakers, so it's replaced by the word "keys" (as in the buttons of a keyboard)

master-lincoln3 days ago

> The "chen" suffix is difficult to pronounce for English speakers, so it's replaced by the word "keys" (as in the buttons of a keyboard)

Not quite. The -ke ending here is just another regional variant of the diminutive. The s at the end is a colloquial plural form.

So the transformation from German to this weird german-english would be:

Knöpfe - Knöpfchen - Knöppkes - Cnoeppkes

sandbach3 days ago

Another detail you didn't mention: knopp or knoppe is a Low German (northern German) variant of Standard German Knopf. That's where the pf--pp alternation arises.

nkmnz2 days ago

Knopp is actually common in southern German dialects as well, including palatinate and hessian. Using -ke for diminutives is common across Westphalia, especially the Munster region.

Pet_Ant2 days ago

That's interesting because in Polish it is "ek" and my great-grand mother was part of the diaspora there before the war.

kemitchell3 days ago

Кнопки (k-nope-key) is Russian for "buttons". Maybe related.

pavel_lishin2 days ago

There are so many words in our language that are very clear loan-words from German!

bananasbandanas3 days ago

Definitely means buttons. Source: am German

fuzztester3 days ago

Although it is not needed, the first line of this article confirms that meaning:

https://en.m.wikipedia.org/wiki/Jim_Knopf

And the article is interesting anyway.

jansan3 days ago

I wrote "I love you" on the CCC Blinkenlights in Berlin to my then girlfriend, who has been my wife now for 20 years. The most romantic thing I ever did :)

boznzop3 days ago

In 1985 I made a similar panel which had 16 lights and mechanical switches and installed it in a rack in an operations center in GCHQ just to make it a bit more colorful. One day I came back from leave and the boss was really mad at me as they had been showing around some VIP, who stopped at the panel and asked the area director what it did. As all the technicians had been evacuated for the tour, nobody had a clue.

danielbln3 days ago

I would also use "die" instead of "das* for Blinkslights, since it's plural.

Over2Chars3 days ago

@croes I was thinking the same thing (knowing no german, but having a hunch).

And the CCC project was a whole building.

For his example, I was expecting a whole cage with some tricked out lights, maybe some smoke effects (I can see new colo signs being updated "no cardboard,no smoke machines allowed"), a sub-woofer playing some chiptunes, etc.

not2b3 days ago

I saw a version of that sign a very long time ago in a government lab at my high school summer intern job, attached to a PDP-11 that came with blinkenlights.

gonzo3 days ago

First time I saw it was 1981 on the front of a DEC-10

boznzop3 days ago

PDP-10 Was awesome. There is a nice version of the console you can buy here => https://hackaday.io/project/170111-pidp-10

i5heu3 days ago

Also Kindergarten is German :)

[deleted]3 days agocollapsed

emmelaich3 days ago

obvious? that's the fun of it.

unkeen3 days ago

The linked article begins with "[Blinkenlights] Probably the only German word I know"

Sharlin3 days ago

Ironically the author likely knows some actual German words like Schadenfreude and Kindergarten.

teddyh3 days ago

distantsounds3 days ago

welcome to hackernews, where every article posted has something made up about it and the points don't matter

CodeMage2 days ago

"Whose Blog Is It Anyway"

Animats3 days ago

> Now you need to remember this is not a metal panel it is a 1.6mm thick fibre-glass one, it does the job, but it wont take much abuse like a metal one will and flexes a little when handling it.

That's when you design in a PC board stiffener. These are just pieces of metal, U-channel, L-channel, or solid bar, to add some structural strength. Cheap and easy, but rarely seen in hobbyist work. Any board with buttons or knobs or connectors unsupported for more than a few inches should have some stiffening. You have to allow space for stiffening bars when designing the board, and you need to place screw holes.

benbristow3 days ago

Hearing 'blinkenlights' reminds me of the still very much up 'towel.blinkenlights.nl' telnet server which plays an ASCII art rendition of Star Wars if you dial into it.

There's a joke if you have IPV6 connectivity where if you use IPV4 it says it has full colour support but if you do... well, it doesn't!

Insanity3 days ago

Came to post the same..!

Someone wrote about it on Medium: https://medium.com/nerd-for-tech/telnetting-watching-star-wa...

Nice bit of nostalgia for me.

f1shy3 days ago

      >> unsigned char ascii2dec( unsigned char data) // expecting a hexedecimal num 0..F anything else returns 0
  {
  if(data=='0') return 0;
  if(data=='1') return 1;
  if(data=='2') return 2;
  if(data=='3') return 3;
  if(data=='4') return 4;
  if(data=='5') return 5;
  if(data=='6') return 6;
  if(data=='7') return 7;
  if(data=='8') return 8;
  if(data=='9') return 9;
  if(data=='A') return 10;
  if(data=='B') return 11;
  if(data=='C') return 12;
  if(data=='D') return 13;
  if(data=='E') return 14;
  if(data=='F') return 15;
  if(data=='a') return 10;
  if(data=='b') return 11;
  if(data=='c') return 12;
  if(data=='d') return 13;
  if(data=='e') return 14;
  if(data=='f') return 15;
  return 0; // default/error
}

I could probably think about a little bit shorter function for that ;)

boznzop3 days ago

Boz here and guilty on all charges. There are plenty of errors if you look hard when sober. There's professional grade coding, then there is coding for hobby projects which blink LED's, when you're drinking beers and listening to rock music in a big shed with a mate.

On another note, somebody asked me to make 30 panels using an RP2040 which I will put up on my site when ready, price will actually be less due to qty. as a side note he did want me to use the RP2350 but nobody has any in stock yet.

f1shy2 days ago

I said that tongue in cheek. I’m unable to pull the project you did. A brain fart happens to anybody.

rad_gruchalski3 days ago

Also the default case returns 0, same as data==‘0’. Good luck figuring out if there was an error.

LysPJ3 days ago

This story reminded me of the "BeBox" [0] PowerPC computer from the 1990's, which had Blinkenlights on its front bezel.

(It ran the very cool "BeOS" operating system[1], which was eventually ported to Mac, then x86.)

[0] https://en.wikipedia.org/wiki/BeBox

[1] https://en.wikipedia.org/wiki/BeOS

lproven3 days ago

And a FOSS re-implementation of which is still alive and in active development. The project recently released beta 5 -- it's very nearly ready for version 1.0 and now runs GNOME Epiphany, Firefox, LibreOffice and more.

https://www.theregister.com/2025/01/09/testing_haiku_beta_5/

endemic3 days ago

The BeBox is my holy grail of retrocomputing! Had to settle for a partition on my x86 machine. Loved BeOS back in the day.

deltarholamda3 days ago

That you felt the need to explain these makes me feel really, really old. (And you did need to explain it; it's practically Elder Lore at this point.)

It's like explaining to young people that we used to have to pay per message for SMS, or that only one person could be on the Internet at a time at your house.

Now if you'll excuse me, I see some suspicious looking clouds I need to go yell at.

unwind3 days ago

I liked how this project used "reverse mount LEDs" [1] which are perhaps not known to everyone.

It means that instead of being mounted to a PCB and having the light shine "up" from the board, it instead shines down between the solder points, and you arrange for the PCB to have a hole there. It means all the components are on one side, but the light is emitted on the back which can be clean and/or have cool silkscreens etc. Nice!

[1]: http://www.kingbrightusa.com/category.asp?catalog_name=LED&c...

mewse-hn3 days ago

Mechanical keyboards have moved this direction (lighting on the back of the pcb, through a hole) so that the LEDs don't physically interfere with the hot-swappable key switches.

aryehof3 days ago

Many, many years ago, I saw a copy of Das Blinkenlights delivered on a sheet of paper with the documentation of a brand new S/32 IBM system. Certainly a highlight of my IT career!

zaxomi3 days ago

I'm planning to do something similar, but using addressable RGB LEDs (like WS2811, also known as neopixel).

They are simple to work with. Each LED has 4 connections: GND, +5V, DATA IN and DATA OUT. Each LED grabs the first 24 bits of the data stream (8 bits for Red, Green and Blue) and sends the rest on DATA OUT for the next LED.

bitwize3 days ago

Actual German would be something like "die Blinkenlichten". "Blinkenlichten" was the form used in the original faux-German sign from which "blinkenlights" is said to derive. "Blinkenlights" is used in a faux-English sign that hung in some German computer installations: "Please keep still and only watchen astaunished the blinkenlights."

See: https://en.m.wikipedia.org/wiki/Blinkenlights http://www.catb.org/~esr/jargon/html/B/blinkenlights.html

bipson3 days ago

Die Blinklichter, if anything.

jsvaughan3 days ago

You could perhaps make it play a subtle background sound like the noise WOPR makes https://www.youtube.com/watch?v=t4vWTzs_bp4

edoceo3 days ago

Anyone using todbot blink(1)? Also a fun USB RGB.

https://blink1.thingm.com/

NKosmatos3 days ago

I read this phrase: "I had almost 200 really crappy PIC16F1782 chips" and remembered my university days when we were programming the PIC16C84 and thought that this was a very good chip (at the time) :-)

bmoe3 days ago

This looks very much like a Connection Machine. A red LED would light up when its corresponding processor was active.

teddyh3 days ago

No, IIRC, on a Connection Machine, a light blinks when the corresponding CPU is active. A LED which is on or off means the CPU is idle.

I am personally quite convinced that they chose to do it this way because the way you describe it – the obvious way – did not look cool enough.

k2enemy3 days ago

The connection machine had several modes for the front lights. The one most familiar is "random and pleasing" and the code can be found here: https://trmm.net/CM-2/

Reference: https://thedailywtf.com/articles/Thinking-Machines#comment-1...

zokier3 days ago

> Yes, I remembered now, I had almost 200 really crappy PIC16F1782 chips, left over from an update for one of my clients

> First problem there are not enough GPIO pins on the 28-pin PIC to drive 128 LED’s, plus an address line, plus a serial receive pin, minimum GPIO’s for that is 24 (16×8 LED scan matrix)+4(address)+1(RXD) = 29. A simple solution is to add two 74HC595 shift registers to increase the outputs by 16 at the expense of 4 pins to control them.

Wouldn't the simple solution be just to split the matrix in half and throw second PIC in there? Or just make 1U panels instad of 2U?

Also the PIC is rated to sink/source 25 mA so you could have skipped the led driver transistors, making the boards even simpler.

zokier3 days ago

Another note for simplification, you could use the builtin i2c peripheral and give each octet of leds its own address. You got 64 octets in total, which conveniently fits into 7 bit i2c address space. That should make the communication trivial to handle.

Also RPI has builtin i2c, so you don't need usb adapter for it.

thekevan3 days ago

I can't wait until gaming builds start adopting this trend. I want to see a high end gaming rig but it looks like a server from a 1990s sci-fi movie.

46Bit3 days ago

The effect is really cool. I like the idea of visualizing data flowing through work systems like this. I think I'll go for 3D-printed or laser-cut panels instead though - would work out cheaper. Thanks :)

mulmen3 days ago

Very cool. This scratches several itches. What data is this displaying? Are you tailing syslog and writing it to a serial output? Do you have some status monitor that assigns meaning to the lights?

boznzop3 days ago

Nothing exciting if you look at the code near the end.

for(i=0;i<8;i++) LEDRegister[i]=LEDRegister[i]+TMR0+addr;

Note this is also technically a bug, the for(i=0;i<8;i++) loop executes so fast that TMR0 (an independent PIC timer that increments every 740uS) is usually the same value added to each LEDregister. I actually added +i to the end of this line in my version, but I'm guessing someone making this will tweak the code to do whatever they want or store some patterns as consts. The code really is quite crappy now that I look at it sober, the watchdog timer is turned off and should be on, there is no checksum on the serial data, procedures called from interrupts, defines with double-slash comments, all stand out like a sore thumb. Lucky it just blinks lights and doesn't run a dialysis machine!

mulmen2 days ago

Pretty sure that’s the random junk it makes up if there’s no serial data coming in. The comment says:

> // no data coming in so do something interesting

My question is what they send over serial.

boznzop2 days ago

Apologies for not reading the question.

I currently have a small program on the RPi NAS which polls my AWS server showing a few metrics, uptime, load, traffic and latest sessionID, but it was off at the time of the video as it is pretty static. Only the top panel is actually used for this the others are just random for now work in progress I guess.

For my retro computer, it is still a bit of a mess, but should be easy to clock out the 16 CPU registers into a serial stream which I will hook a small micro into to send it over a UART. I have actually gotten more excited about completing the retro computer project since having the lights to look at.

mulmen2 days ago

Very cool! Thanks for sharing.

bqmjjx0kac3 days ago

Not to be confused with the Justine Tunney's debugger named Blinkenlights: https://justine.lol/blinkenlights/

hinkley3 days ago

NICHT FÜR DER GEFINGERPOKEN UND MITTENGRABEN

[deleted]3 days agocollapsed

robertlagrant3 days ago

Yes - I was coming here for that.

yjftsjthsd-h3 days ago

> Working C Code below for those in the know.

It would be nice to explicitly attach a (FOSS) license to this. (Apologizes if there is one and I just missed it)

boznzop3 days ago

Boz here, I just assumed a design so obvious would not need one, my bad, anyway it is totally public domain so knock yourself out.

Over2Chars3 days ago

Like they used to say in Art school during critiques "go big! I'd like to see what this looks like bigger"

halyconWays3 days ago

I'd love to see a design that uses a dirt-cheap uC, because the PIC16F1782 chips he had laying around are $2.50 each on Mouser!

Edit: Tried to buy these (either PCBs, the BOM, or ideally fully assembled boards) and holy shit I've never seen a worse website than oshwlab/easyeda. So far: clicked 'purchase parts,' had to sign up, captcha was at max strength and had to agonizingly select slowly fading in cards over four times; clicked to send code; code took a while to get here and captcha expired; entered code but it had ambiguous "i" vs. "l" vs. "1" and I entered the wrong one; repeat captcha, this time only two pages of slowly fading cards; click to send code again; enter code; captcha expired; enter captcha again, enter code again; told I already have an account (I do??); go to forgot password; solve another long captcha; click to send code; captcha expired; enter code and captcha; password reset; get taken to generic landing page; go back to main site and click 'purchase parts' again; says I'm not logged in. log in again; taken to generic landing page; go back to main site and click 'purchase parts'; page loads...takes me to "lcsc" and tells me to make an account. JFC.

boznzop2 days ago

I agree, it shouldn't be that hard. Ironically I keep using EasyEDA over the other CAD programs as it is quite intuitive to use and, if you use the LCSC stock parts, it has a 1-click button to order the assembled board from JLPCB. A simple "re-order link" for JLPCB I could have given out would have been too easy I guess!

I have just added a link on the project webpage with the Gerber/pick and place files zipped up and any good PCB shop should be able to manufacture a board from this.

$2.50 is a bit steep, I guess Microchip are probably running down this older chip and have far better 28-pin SOIC PIC16F's starting at $0.70, any PIC16F/18F should run the code with a few tweaks. My current uP of choice is the RP2040 and I will put out a design using that when my normal work quietens down a bit.

halyconWays2 days ago

I had better luck going to jlcpcb.com and uploading the files. I did modify the BOM for U5 but they didn't have any in stock, so I ended up getting them from mouser and will hand-solder those. I'm super excited for the project, I've wanted something like this for a long time...though the next step would be functional switches!

dvh3 days ago

I like the KISS implementation of the ascii2dec function ;)

boznzop3 days ago

The retro 1970's coding was thrown in for authenticity.

keyle3 days ago

I would feel so productive! Well done.

TacticalCoder3 days ago

[dead]

helf3 days ago

[dead]

gnabgib3 days ago

This doesn't look like a valid Show HN. It is an interesting blog post (without the Show HN prefix), though!

> Show HN is for something you've made that other people can play with. HN users can try it out, give you feedback, and ask questions in the thread.

> Off topic: blog posts

https://news.ycombinator.com/showhn.html

stephen_g3 days ago

I disagree, on the very same page it says:

> On topic: things people can run on their computers or hold in their hands. For hardware, you can post a video or detailed article. For books, a sample chapter is ok.

While it's posted on a blog, I would say it meets the criteria for having the video and write-up showing off the cool thing that has been built.

I think what that page is saying about blog posts is that you shouldn't post a Show HN as a 'look at this blog post I made about [some random topic]', as in when it's the blog post itself that you're showing off. It's not saying you can't post any blog post as a Show HN.

dang3 days ago

As stephen_g pointed out, it's ok by the hardware exemption in https://news.ycombinator.com/showhn.html.

But I like the title Das Blinkenlights so have changed it anyway. @boznz: I hope that's ok!

(The post is currently at #3 on the frontpage so there's not much need for it to be high on /show in any case.)

boznzop3 days ago

All good with me. Just assumed others might want to build one. Lots of empty rack space out there that might not mind shedding a few extra watts for some color. Also its nice to get noticed every now and then even if it is for the crappy stuff :-)

thekevan3 days ago

Oh wow, I never read that and thought Show HN was simply, "Look at this cool thing I did."

dang3 days ago

It basically is! but the rules provide a few guardrails.

hn-front (c) 2024 voximity
source