A very interesting and simple video explaining how the Bitcoin works. As Tom Limoncelli mentioned, this is first time I understood it:
A video from ChefConf, Phil Dibowitz’s talk about Scaling systems configuration at Facebook. Very interesting to listen what they count as important achievements and what sort of approaches they use. Few things irked me though:
What point is in comparing Chef, first released in 2010, with CFEngine 2, which was released in 1998, especially considering CFEngine 3 is around since 2008? Most of the complaints about CFEngine or its shortcomings Phil makes either have been addressed or are easily implemented in CFEngine 3.
The lessons they have learned are enlightening, though achieving idempotent systems is very complicated in cases when you do not own the systems you are supposed to manage via configuration management.
Full programming languages versus DSL — well, no one argues that full programming languages are way more versatile compared to domain-specific, but that’s their purpose. Implementing functionality which DSL is tailored for, on the other hand, is faster and more efficient in DSL. I would try to strike a balance here, using each tool in the domain it is targeted at.
And two messages I wanted to highlight:
Scale is more than number of clients — this is a very powerful message that many miss.
Regarding testing — not long ago I had a lunch with couple of younger colleagues and we were discussing release rollouts and time estimates. I started with saying ‘Suppose your release fails at the very last step of the procedure…’ and was interrupted with ‘why would it fail?!’. I had to stop and explain that ‘Why would it fail’ is a wrong question to ask. If we knew why it would fail, we could have prepared or even address it. This is just to reinforce Phil’s message that ‘until you run it in production, you cannot know it works’. Totally agree with this.
To end chef-related links, here is a web-tool that lets you browse the data in your Chef server: Chef Browser.
Switching to hiring matters, two excellent blog-posts: Interviewing as a Front-End Engineer in San Francisco and On Interviewing Front-End Engineers
Unknown MS-DOS 4.0M:
Multitasking MS-DOS 4.0 was a little known and separate development of DOS done in parallel with the development of DOS 3.x in 1985. It should not be confused with the later retail DOS 4.0 that was released in 1988. DOS 4.0 supported preemptive multitasking, shared memory, semaphores, advanced memory management, a session manager, imports, exports and a new executable format. Many of the ideas and features introduced here found their way into OS/2. Unfortunately DOS 4.0 was limited by the real-mode 8086 environment and the 640KB address space. Also programs which were not well-behaved or relied upon undocumented DOS functions would not run properly under DOS 4.0, particularly TSR programs.
From Larry Osterman’sblog: MS-DOS 4.0 was unique because it was developed “on spec” – IBM didn’t see a need for a multitasking version MS-DOS and didn’t have a new hardware offering on which to attach the product. But IBM did have the PC/AT which was an 80286 based processor and it didn’t have an OS that took advantage of that hardware. So IBM and Microsoft started negotiations to take the MS-DOS 4.0 code base and turn it into what eventually turned into OS/2. I ended up not working on the OS/2 effort, instead I worked on finishing up MS-DOS 4.0 for the OEM partners who had licensed MS-DOS 4.0.