Cal Henderson, a Flickr architect and Slack co-founder, writes about web development, Unicode, scaling, and small programming experiments.
HN commenters link his posts on using bcrypt for passwords and on his Brainfuck debugger, and recommend his blog for analytical technical writing.
"... I was hoping for an insight into some cool algorithm they use, instead I get a piece of puffery ..."
If you want to read about the precise, analytical technology that by and large has been solved - yesterdays news then try Cal Hendersons blog ~ http://iamcal.com/talks Hendo has some excellent talks on massive scaling, unicode filtering, how to build cheap & fast, etc. If you want to read about the messy, yet to be solved problems that could really use a technological hand this is the type of article you should be reading.
Once the most of the easier technical problems are solved you are left with the hard ones to solve ones. Well written stories like this one about those "messy, hard to predict humans" and their complex interactions in Web Apps as big as Flickr are unexplored territory. Read here for more on this thread:
- http://thomashawk.com/2008/10/use-swear-word-in-private-email-at.html
- http://digg.com/arts_culture/Potty_mouthery_deletion_at_Flickr?t=19416393#c19416393
- http://yaniv.golan.name/blog/2008/09/22/you-may-or-may-not-be-aware/
> Chars should be 32-bit, since 16 bits aren't enough to represent all Unicode codepoints.
This would be a lot better, but even this is oversimplifying things and is going to cause problems. In this case, thinking "chars are 32 bits" ignores the fact that, in Unicode, a "char" (that is, a codepoint) and a single character you see on the screen (that is, a glyph) are not the same thing: Some codepoints don't map to glyphs, such as bidirectional markers, [1] and some codepoints modify existing glyphs, such as combining forms. [2] And Zalgo waits for people who forget about combining forms. [3] Zalgo hungers, mortal. [4]
The underlying 'problem' is that Unicode is the first text processing standard that's actually complex enough to be useful for more than one language. Its complexity reflects how complex the real world is.
[1] http://www.iamcal.com/understanding-bidirectional-text/
[2] http://en.wikipedia.org/wiki/Combining_character
[3] http://creepypasta.wikia.com/wiki/Zalgo
http://eeemo.net/
[4] http://en.wikipedia.org/wiki/Sinistar
One of the first requests for a new UI is usually the Flat design. This is usually followed by "hey, can you add a shadow or border something?" which basically turns it non-flat. The color contrast is another big problem people seem to forget.
E.G. http://www.iamcal.com/toys/colors/
Windows 8 feels cheap or at least still a work in progress. It sometimes actually reminds me of an early iteration of SkyOS.
Edit: One very seriously messed up design trend that's making the rounds is this habit of putting the page content inside in-page popups. The Chrome Web Store does it as does the default Blogger theme.
If I accidentally click anywhere else on the page (which is possible on a touchpad), the page is gone. Woosh. I now have to use the back button to get back too that.
There was once a video embedded on a site with this in-page popup and it had extended the page horizontally. I tried using the arrow keys to get there, but oops, now I'm on the next article.
I wish Web 3.0 will die soon.
Brainfuck.
Because it's fun.
My favorite Brainfuck interpreters.
http://brainfuck.tk
http://copy.sh/brainfuck/
http://www.iamcal.com/misc/bf_debug/
This is a good IDE for Brainfuck.
http://4mhz.de/bfdev.html
If you are interested, you can contribute to this Brainfuck compiler optimization project.
http://www.nayuki.io/page/optimizing-brainfuck-compiler
Back when I was a super junior php dev I stumbled across a post by Cal Henderson about using bcrypt https://www.iamcal.com/2012-06/use-bcrypt/
His lib is can be dropped in to any project (that doesn't have something similar built in already) https://github.com/iamcal/lib_bcrypt
Anyone writing code has no excuse for not using this, it's not rocket surgery.
Nice gui. It needs a fast-forward speed. It also needs to interpret the , instruction for accepting input. Maybe you could use http://www.iamcal.com/misc/bf_debug (in Debug mode) as a guide.