"programming" entries

Four short links: 9 July 2015

Four short links: 9 July 2015

Conservation of Attractive Profits, Prototyping Tool, Open Source PM, and Dev Snark

  1. Netflix and the Conservation of Attractive Profits (Stratechery) — Note the common element to all three of these companies: all have managed to modularize the production/delivery of their service which has allowed them to move closer to the customer. To put it another way, all of this new value is being created by specialized CRM companies: Airbnb for travelers, Uber for commuters, and Netflix for the bored.
  2. Origami — Facebook’s prototyping tool.
  3. Go as Open Source — keynote from this year’s Gophercon. I’ve been pondering lately how successful open source projects go beyond “anyone can scratch their itch,” and instead actively manage the tendency for scope creep. We’d rather have a small number of features that enable, say, 90% of the target use cases, and avoid the orders of magnitude more features necessary to reach 99% or 100%.
  4. The Universal Data StructureGiven the abysmal state of of today’s software engineering, I believe that a full embrace of the universal hash will result in better, simpler programs. Your weekly dose of snark.
Comment
Four short links: 7 July 2015

Four short links: 7 July 2015

SCIP Berkeley Style, Regular Failures, Web Material Design, and Javascript Breakouts

  1. CS 61AS — Berkeley self-directed Structure and Interpretation of Computer Programs course.
  2. Harbingers of Failure (PDF) — We show that some customers, whom we call ‘Harbingers’ of failure, systematically purchase new products that flop. Their early adoption of a new product is a strong signal that a product will fail – the more they buy, the less likely the product will succeed. Firms can identify these customers either through past purchases of new products that failed, or through past purchases of existing products that few other customers purchase.
  3. Google Material Design LiteA library of Material Design components in CSS, JS, and HTML.
  4. Breakoutsvarious implementations of the classic game Breakout in numerous different [Javascript] engines.
Comment
Four short links: 3 July 2015

Four short links: 3 July 2015

Storage Interference, Open Source SSL, Pub-Sub Reverse-Proxy, and Web Components Checklist

  1. The Storage Tipping Pointthe performance optimization technologies of the last decade – log structured file systems, coalesced writes, out-of-place updates and, soon, byte-addressable NVRAM – are conflicting with similar-but-different techniques used in SSDs and arrays. The software we use is written for dumb storage; we’re getting smart storage; but smart+smart = fragmentation, write amplification, and over-consumption.
  2. s2n — Amazon’s open source ssl implementation.
  3. pushpina reverse proxy server that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. It communicates with backend web applications using regular, short-lived HTTP requests (GRIP protocol). This allows backend applications to be written in any language and use any webserver.
  4. The Gold Standard Checklist for Web ComponentsThis is a working draft of a checklist to define a “gold standard” for web components that aspire to be as predictable, flexible, reliable, and useful as the standard HTML elements.
Comment
Four short links: 1 July 2015

Four short links: 1 July 2015

Recovering from Debacle, Open IRS Data, Time Series Requirements, and Error Messages

  1. Google Dev Apologies After Photos App Tags Black People as Gorillas (Ars Technica) — this is how you recover from a unequivocally horrendous mistake.
  2. IRS Finally Agrees to Release Non-Profit Records (BoingBoing) — Today, the IRS released a statement saying they’re going to do what we’ve been hoping for, saying they are going to release e-file data and this is a “priority for the IRS.” Only took $217,000 in billable lawyer hours (pro bono, thank goodness) to get there.
  3. Time Series Database Requirements — classic paper, laying out why time-series databases are so damn weird. Their access patterns are so unique because of the way data is over-gathered and pushed ASAP to the store. It’s mostly recent, mostly never useful, and mostly needed in order. (via Thoughts on Time-Series Databases)
  4. Compiler Errors for Humans — it’s so important, and generally underbaked in languages. A decade or more ago, I was appalled by Python’s errors after Perl’s very useful messages. Today, appreciating Go’s generally handy errors. How a system handles the operational failures that will inevitably occur is part and parcel of its UX.
Comment
Four short links: 30 June 2015

Four short links: 30 June 2015

Ductile Systems, Accessibility Testing, Load Testing, and CRAP Data

  1. Brittle SystemsMore than two decades ago at Sun, I was convinced that making systems ductile (the opposite of brittle) was the hardest and most important problem in system engineering.
  2. tota11y — accessibility testing toolkit from Khan.
  3. Locustan open source load testing tool.
  4. Impala: a Modern, Open-source SQL Engine for Hadoop (PDF) — CRAP, aka Create, Read, and APpend, as coined by an ex-colleague at VMware, Charles Fan (note the absence of update and delete capabilities). (via A Paper a Day)
Comment
Four short links: 23 June 2015

Four short links: 23 June 2015

Irregular Periodicity, Facebook Beacons, Industry 4.0, and Universal Container

  1. Fast Lomb-Scargle Periodograms in Pythona classic method for finding periodicity in irregularly-sampled data.
  2. Facebook Bluetooth Beacons — free for you to use and help people see more information about your business whenever they use Facebook during their visit.
  3. Industry 4.0 — stop gagging at the term. Interesting examples of connectivity and data improving manufacturing. Human-machine interfaces: Logistics company Knapp AG developed a picking technology using augmented reality. Pickers wear a headset that presents vital information on a see-through display, helping them locate items more quickly and precisely. And with both hands free, they can build stronger and more efficient pallets, with fragile items safeguarded. An integrated camera captures serial and lot ID numbers for real-time stock tracking. Error rates are down by 40%, among many other benefits. Digital-to-physical transfer: Local Motors builds cars almost entirely through 3-D printing, with a design crowdsourced from an online community. It can build a new model from scratch in a year, far less than the industry average of six. Vauxhall and GM, among others, still bend a lot of metal, but also use 3-D printing and rapid prototyping to minimize their time to market. (via Quartz)
  4. runCa lightweight universal runtime container, by the Open Container Project. (OCP = multi-vendor initiative in hands of Linux Foundation)
Comment
Four short links: 19 June 2015

Four short links: 19 June 2015

Computational Journalism, Bio Startups & Patents, Ad Blocker Wars, and The Night Watch

  1. Computational Journalism — Google awards to projects around computational journalism. Sample: The goal of the project is to automatically build topic “event threads” that will help journalists and citizens decode claims made by public figures, in order to distinguish between personal opinion, communication tools, and voluntary distortions of the reality.
  2. Editing the Software of Life — research yielding the ability to edit DNA has spawned a new set of biotech startups, and a patent morass. Zhang already holds the first of several vital and broad patents covering cas9 genome editing. Yet, Doudna and Charpentier had filed patent applications covering similar ground earlier than Zhang.
  3. Ad Blocker-Stopping Software — the evolutionary battle between ads and blockers is about to get gunpowder. As Ethan Zuckerman said, advertising is the original sin of the Internet.
  4. The Night Watch (PDF) — There is nothing funny to print when you have a misaligned memory access, because your machine is dead and there are no printers in the spirit world.
Comment

The art of design patterns

Communicate more efficiently, concisely, and accurately.

Download a free copy of An Engineering Manager’s Guide to Design Patterns, a brain-friendly report that shows you how object-oriented design patterns are ideal for solving specific problems in application design.

If you haven’t had the pleasure of viewing Hal Abelson & Gerald Sussman’s 1986 MIT introductory computer science course, you owe it to yourself to set aside a few hours to view it. “1986?”, you say — “Could that really be relevant to my work today?” Unless you came through MIT or a similar program that teaches from their seminal book The Structure and Interpretation of Computer Programs, I’d bet you are most likely going to learn a few new things (even if you consider yourself a seasoned software developer).

Play the video, and right away you might be surprised, as Abelson, in the first five minutes of the class, states that not only is computer science not a science, it doesn’t have all that much to do with computers. Rather, Abelson suggests, computer science is more of an engineering discipline, or perhaps even an art; and, rather than being concerned with computers, computer science is more an exercise in creating imperative knowledge and managing complexity.

Anyone who has ever been late on a software development project (who hasn’t?) can relate to this. Software development starts to feel more like an art or craft when the best you can do is roughly estimate the size and scope of a job and then cross your fingers and hope for the best — certainly, it is at times like these when our field doesn’t feel like much of a science. And, for anyone who has worked on a project of moderate size, at some point you find complexity staring you in the face. All too often our first designs, and our code, turn into the dreaded big ball of mud (yes, that is a technical term).
Read more…

Comment: 1
Four short links: 17 June 2015

Four short links: 17 June 2015

Academic Publishing Concentration, Hardware Independence, Exception Monitoring, and Negotiating Tactics

  1. The Oligopoly of Academic Publishers in the Digital Era (PLoSone) — Combined, the top five most prolific publishers account for more than 50% of all papers published in 2013. (via CBC)
  2. LLVM Bitcode Gives Apple Hardware Independence (Medium) — Bob [Mansfield] has been quietly building a silicon team with the skills to rival all other players in the industry. Bob works for one of 15 companies with an ARM architecture license, giving his team carte blanche to modify and extend ARM in any way they see fit. And Bob’s CPUs only have to satisfy a single customer.
  3. Github Exception Monitoring and Response — I need another word than “porn” to describe something that makes me sigh fervently with desire to achieve at that level.
  4. 31 Negotiation Tactics (Nick Kolenda) — he mysteriously omitted my power tactics of (a) crying, (b) greeting my opposite number with the wrong name, and (c) passing a napkin covered with random scrawls as I say, “what do you make of this?”
Comment
Four short links: 12 June 2015

Four short links: 12 June 2015

OLAP Datastores, Timely Dataflow, Paul Ford is God, and Static Analysis

  1. pinota realtime distributed OLAP datastore, which is used at LinkedIn to deliver scalable real time analytics with low latency. It can ingest data from offline data sources (such as Hadoop and flat files) as well as online sources (such as Kafka). Pinot is designed to scale horizontally.
  2. Naiad: A Timely Dataflow System — in Timely Dataflow, the first two features are needed to execute iterative and incremental computations with low latency. The third feature makes it possible to produce consistent results, at both outputs and intermediate stages of computations, in the presence of streaming or iteration.
  3. What is Code (Paul Ford) — What the coders aren’t seeing, you have come to believe, is that the staid enterprise world that they fear isn’t the consequence of dead-eyed apathy but rather détente. Words and feels.
  4. Facebook Infer Opensourced — the static analyzer I linked to yesterday, released as open source today.
Comment