- Material Up — material design inspiration. MD is a physics engine for UI.
- Flafka (Cloudera) — Flume plus Kafka, offers sub-second-latency event processing without the need for dedicated infrastructure. (via Abishek Tiwari)
- terraform.io — open source package providing a common configuration to launch infrastructure, from physical and virtual servers to email and DNS providers.
- Remote Work: An Engineering Leader’s Perspective — Even proponents of remote work seem to think that you should either have a distributed team from the get go, or stick to a traditional on-site team. Our experience shows that this is incorrect…
20 years of efficiently computing Bacon numbers
The Oracle at Delphi spoke just one language, a cryptic one that priests “compiled” into ancient Greek. The Oracle of Bacon—the website that plays the Six Degrees of Kevin Bacon game for you—has, in its 20-year existence, been written in six languages. Read on for the history and the reasons why.
The original version of the Oracle of Bacon, written by Brett Tjaden in 1995, was all C. The current version, my stewardship of it, and my revision control history only go back to 1999, so that’s where I’ll start. In 1999, I rewrote the Oracle… still entirely in C. Expensive shortest-path and spell-check algorithms? Definitely in C. String processing to build the database? Also C! Presentation layer to parse CGI parameters and generate HTML? C here, too!
Why C? The rationale for the algorithmic component was straightforward: the Oracle of Bacon ran on a slow, shared Unix machine that other people were using to get actual work done. Minimizing CPU and memory resource requirements was the polite thing to do. I needed a compiled language that let me optimize time and space extensively. The loops all counted down, not up, because comparing against zero was fractionally faster on SPARC. It had to be C.
But why were the offline string processing and the CGIs in C? Mostly, I think, to reuse code from the other parts of the code base and from previous projects I’d written when C was the only language I knew.
As the site added features, I got tired of writing code to generate HTML in C. I wrote new CGIs, then rewrote existing CGIs, in Perl. Simply put, writing the CGIs in an interpreted language made me more productive. I had hash tables and vectors built into the language and CGI support a simple “use” statement away. I didn’t have to compile on one server and then deploy to another—I could edit the CGIs right there on the web server. Good deployment practices it wasn’t, but it made me more productive as a programmer, and the performance of the CGIs didn’t matter all that much.
ISS Malware, Computational Creativity, Happy Birthday Go, Built Environment for Surveillance
- ISS Enjoys Malware — Kaspersky reveals ISS had XP malware infestation before they shifted to Linux. The Gravity movie would have had more registry editing sessions if the producers had cared about FACTUAL ACCURACY.
- Big Data Approach to Computational Creativity (Arxiv) — although the “results” are a little weak (methodology for assessing creativity not described, and this sadly subjective line “professional chefs at various hotels, restaurants, and culinary schools have indicated that the system helps them explore new vistas in food”), the process and mechanism are fantastic. Bayesian surprise, crowdsourced tagged recipes, dictionaries of volatile compounds, and more. (via MIT Technology Review)
- Go at 4 — recapping four years of Go language growth.
- Las Vegas Street Lights to Record Conversations (Daily Mail) — The wireless, LED lighting, computer-operated lights are not only capable of illuminating streets, they can also play music, interact with pedestrians and are equipped with video screens, which can display police alerts, weather alerts and traffic information. The high tech lights can also stream live video of activity in the surrounding area. Technology vendor is Intellistreets. LV says, Right now our intention is not to have any cameras or recording devices. Love that “right now”. Can’t wait for malware to infest it.
Open Hardware Designs, Kickstarting SDR, Go Best Practices, and US Code
- Tindie Launches Open Designs and Kickbacks (Tindie) — businesses can manufacture the open design as is, or create products derived from it. Those sellers can then kickback a portion of their sales back to the designer. Tindie will handle the disbursement of funds so it’s absolutely painless. For designers, there are no fees, no hosting costs, just a simple way to reap the benefits of their hard work.
- HackRF (Kickstarter) — an open source software-defined-radio platform to let you transmit or receive any radio signal from 30 MHz to 6000 MHz on USB power.
- Twelve Best Go Practices — to help you get the mindset of Go.
- US Code for Download — in XML and other formats. Waaaay after public resource showed them what needed to be done. First slow step of many fast ones, I hope.
OSCON 2013 Speaker Series
Go is the first major systems language to emerge in over a decade, even though computing continues to change at a rapid pace—computers are smaller, faster, and can execute operations in parallel via multi core processors. Even languages like Python and Ruby have grown in popularity in recent years among system administrators, operations, and DevOps personnel. Yet, as a relatively new kid on the block, Go is a versatile and robust language that has plenty to offer.
Let’s go through the list:
Open: It’s Open Source—Go has been open source software since November 2009, reaching Version 1 in March of 2012. It includes a language specification, standard libraries, and custom tools. Being open, Go has long-term stability.
Concurrency: Go provides support for concurrent execution and communication. There is no need to learn multiple ways of dealing with threads. Go greatly simplifies threading by providing goroutines and channels.
Fast compilation: Go compiles at a break-neck speed. It has robust dependency analysis and a rigid dependency specification to avoid wasting time with unused dependencies.
One binary to rule them all: Have you ever had to distribute your script or binary to multiple systems, then worry about libraries and dependencies in general? With Go, you simply don’t have to worry about dependencies. Gc, Go’s default compiler statically links its binaries. You can use
go build to compile your code and then distribute it to multiple machines with minimal effort.
Readability: Go ceases the debate about the best style of programming by providing a code formatter tool (
gofmt) and enforcing it in its standard library. The code you write today will be much easier to read and maintain in a few months or even years by simply sticking to
And, Go is a language that grows with you. Take the tour…
Rob Pike on how Go fits into today's computing environment
The Go programming language was created by Rob Pike, Ken Thompson, and Robert Griesemer. Pike (@rob_pike) recently told me that Go was born while they were waiting a long while for some code to compile — too long.
C++ and Java have long been the go-to languages for big server or system programs, but they were created almost 30 and 20 years ago, respectively. They don’t address very well the issues programmers see today like use of concurrency and incorporating big data and they’re not optimal for the current programming environment.
One main reason that Go will succeed is how it deals with concurrency. It outpaces Java and C++ as well as Python, Ruby, and all the other scripting languages. It simply provides a better model, with Java a close second, that is able to work within the computing environment into which it was born.
Magnetic Frames, Checkout Design, Programming Go, and New Manufacturing
- Neocover — very clever idea: magnetic light-switch frames, from which you can suspend keys and other very-losable pocket-fillers.
- Design of Checkout Forms (Luke Wroblewski) — extremely detailed, data-filled, useful guide to state of the art (and effect of) e-commerce checkout forms. In tests comparing forms with real-time feedback to those without, usability testing firm, Etre and I measured a: 22% increase in success rates; 22% decrease in errors made; 31% increase in satisfaction rating; 42% decrease in completion times.
- Less is Exponentially More (Rob Pike) — wonderfully readable introduction to the philosophy of the Go programming language. What matters isn’t the ancestor relations between things but what they can do for you. That, of course, is where interfaces come into Go. But they’re part of a bigger picture, the true Go philosophy. If C++ and Java are about type hierarchies and the taxonomy of types, Go is about composition.
- 3D Manufacturing Business Plan — numbers for an existing business built around 3D printing. Fascinating to see the economics. The author makes the point: Based on these volumes, this product would be impossible to produce profitably by any other means.
Statistical Fallacies, Sensors via Microphone, Peak Plastic, and Go Web Framework
- Common Statistical Fallacies (Flowing Data) — once you know to look for them, you see them everywhere. Or is that confirmation bias?
- Project Hijack — Hijacking power and bandwidth from the mobile phone’s audio interface.
Creating a cubic-inch peripheral sensor ecosystem for the mobile phone.
- Peak Plastic — Deb Chachra points out that if we’re running out of oil, that also means that we’re running out of plastic. Compared to fuel and agriculture, plastic is small potatoes. Even though plastics are made on a massive industrial scale, they still account for less than 10% of the world’s oil consumption. So recycling plastic saves plastic and reduces its impact on the environment, but it certainly isn’t going to save us from the end of oil. Peak oil means peak plastic. And that means that much of the physical world around us will have to change. I hadn’t pondered plastics in medicine before. (via BoingBoing)
- web.go (GitHub) — web framework for the Go programming language.
A Google I/O puzzler, more sandbox mayhem, and Go prepares to take wing.
While we wait to sign up for two of the major conferences of the year, Google has released a brainteaser, Java suffers another security breach, and a new language prepares for takeoff.