Older Posts

Optimize your Hiring Funnel

Hiring software engineers has always been problematic and today’s market is evenmore challenging. The influx of capital into the industry, combined with anoverall lack of experienced talent has resulted in a highly competitive market.You likely won’t be able to compete with many larger companies on totalcompensation but you can stand out in other ways that give you an advantage inthe market.

How to Balance Technical Debt

One of the recurring and common complaints about Agile and its associatedmethodologies is that it doesn’t make an explicit provision for balancingsoftware maintenance with new features. I’ll make the case that those are bothrelated, and explain a system that I’ve seen work in the past to balance bothmaintenance and quality with new product work. The major benefit of thisapproach are that it taps into the power of small consistent improvements, andalso creates space for software teams to do the work they need to do on anongoing basis. This methodology works best along side a virtuous process /feedback loop that you can use to improve your teams and companies performance.

Service Bubbles

Lots of the discussion surrounding conversational interfaces is centered on textand the kinds of interactions that medium will enable. The idea is by startingwith a system that enables organic behaviour, you allow your service to addressgeneric needs and requirements. The behaviour that people exhibit in your UIallow you to learn, and that learning leads to augmentation. With text, thatinteraction is augmented by layering in some kind of domain specific language orif you’re lucky a system that understands natural language.

SSH Authentication with Github Teams

tl;dr: You can authenicate SSH access using Github Teams. Here’s the project on Github.

Simple Event Tracking with Google Analytics

We use Google Analytics to do some event tracking. Specifically, we’re using thenew analytics.js library which is in private beta. It’s pretty clean and the APIfor it is really nice.

Monitoring the Modern Web

APM measures and analyzes performance and patterns at different layers. Whetheryou’re using server APM to monitor the behavior of virtual or physicalinfrastructure, or NPM to monitor your network transactions, the goal isusually to identify how performance issues affect real users.

Git Shell Prompt

Update A few people have asked me for a repo so I’ve created a clean.shproject on Github.

Retooling the Web

Just a few years ago, anyone who wanted to get started with building apps neededto at least work with Linux, database and web servers, and deployment tooling.Cloud computing introduced some easy to use abstractions to these components inthe form of Infrastructure and Platforms as Services.

Generating IDs in Unix

Sometimes I’ve found it handy to be able to generate unique IDs directly fromthe command line. The easiest and most unique tool to use is uuidgen.UUIDs are 122 bits in length; so colossal that the chances of a collision areincredibly low.

What's your timezone?

Why do we care what timezone a user is in?

Tell Me I'm Pretty

One of the best parts about the scientific method is that negative results arecelebrated as much as positive ones. While a negative result is sometimes lessof a joyous occasion, having an answer is regarded as better than notknowing at all. Being impartial and viewing results without prejudice is thehallmark of a great researcher.

Getting Started With Manta

Manta is a powerful new type of object store from the same folks that invented Node.js. The cool part is that Manta isnt just an object store - it’s an object store with built-in compute. That means that you can run code and other familiar commands against the objects directly on the server. I’ll walk you through setting up Manta, and a simple example of where you could use the compute job functionality.It’s assumed you have already setup a Joyent account and have node.js installedon your machine.

One Line

Most new applications today are built up out of many 3rd party components andglued together with some business rules. This means that any 3rd party service is highly incentivized to make integrating their service as easy as possible.Often times we end up reducing that down to a simple statement like

In Defense of the Intrapreneur

I read a rather harsh criticismon Hacker News today about “Intrapreneurs”. The Intrapreneur is an “InternalEntrepreneur” who starts up new projects, ideas, etc, but from within anestablished company. I personally feel this criticism is rather misguided. Thekey to the argument was that Intrapreneurs take no risk, and therefore do notdeserve to be associated with any deviation of the word “Entrepreneur”.Update: My colleague Bryan has alsowritten his thoughts on the subject. You can read themhere.

How to do Prototype Validation in Javascript

I hacked together a quick model for a prototype REST API written in Node.js, and wanted to validate an object prior to saving it to a database. I didn’t want or need some wacky full blown ORM but I did want to ensure that the records I was storing were consistent.

How to learn Node.js from Scratch

Server-side Javascript has appealed to me for quite a awhile, and while watching from the sidelines was interesting, I still never had the time to really get my feet wet and see how the language really worked. That changed after joining Joyent, of course. We’re the proud home of Node.js, and it would be wrong unforgivable if I didn’t know how to write JS.

Layerboom Acquired by Joyent!

I’m happy to announce that my company Layerboom has been acquired by Joyent, a leading provider of Cloud Computing services and solutions. Here’s the press announcement.

The Dangers of Building on Somebody Else's Platform

Sometimes we hear about how M&A is the new R&D. I wonder if Embrace & Extend is the new R&D.

Hosting Apocalypse

If you run a managed hosting company then your time is officially ‘up’. Youwon’t survive the coming hosting Apocalypse. Here’s why.

Function as a Service

Websites have gone from hand-typed static pages, to massive applications withevery feature under the moon. Most applications have some secret sauce that doesmagical things in the background - whether that be the ability to handle massiveamounts of volume, reduce the barrier to entry into a market, or just keep usersengaged by providing endless amounts of quick short updates.

The Lego Theory

Whenever I built lego projects I would obsess over finding the perfect piece -The one single piece I knew in my mind I owned but could never find. Organizingand categorizing the lego wouldn’t help, because I was 7 - so every time Iwanted a piece I raked through a bin of lego that at the time was roughly thesize of my body. Lego Theorist

Grid Computing Efficiency

Grid services and platforms that are always on and always available are awesomefor running cheap, highly-available services on the internet. That’s great,because it means the barrier to entry, and the cost to deliver those services islow making innovations by small teams with little to no cash much more possible.What it means though, is that we’re creating Datacenters with tons of capacitythat’s being used during two peak periods throughout the day. After speakingwith a few Datacenter architects are the Sun Open House, I realized that notonly are todays DC designs supremely inefficient, but most of the stuff runningin them isn’t being used up to 80% of the day. Cooling costs are extremely high,and the cost of running a grid to sustain maximum capacity + wiggle room isshocking. So in order to reduce those costs some companies like HP and Sun areactively looking at computers that will turn themselves off or into ‘low power’mode when not being used. That’s cool, but I don’t think we have to wait forthem to build that system. If a computer isn’t required, then a remote ‘greenmonitor’ can log in and gracefully shutdown unnecessary systems, and the magicknown as ‘Wake-on-LAN‘ can be used to bring them back up again. If you couldbuild that into your grid then you could instantly save energy, not only to runa system, but on cooling as well. Of course, this would have to be mapped to aprediction engine that would say ‘traditionally we’ve needed more capacity at7:30AM Pacific, so boot up some systems’, but that would be a really funproject.

Scripts And Micropayments

The growing trend for processing transactions is in micropayments. Apple hasbeen doing this for awhile with iTunes , billing customers weekly for the bulkof transactions that have been queued up. By tranditional definition, amicropayment is something that is 1/1000th of a dollar, but the term has come tomean much more than that - what seems to be any amount less than $5. The idealtransaction processing system would authorize many micropayments, queue them upand process them in bulk at a regular interval - say daily, or weekly. This isimportant, because there is overhead for processing credit card transactions.You can’t really ask your users to absorb that cost themselves, especially ifthe overhead for your product is a very high percentage.

Search Swap

Today I realized that I’ve been using the search bar about 100x as much as theaddress bar in my browser. I got to thinking about how I’d like to see theaddress bar and search bar in Firefox, swap places. The only reason people typein URLS, is because they know what they want, and most of the time you’ll havethat address in your history bar.

Open Virtual Machine Format

Open standardized protocols are what made the Web possible. We have standardsall the way up the computational stack, from agreeing on which pins mean what ina wire, to what an X button means in a user-interface. Companies who don’tembrace them are destined to isolate themselves on tiny technological islands.Specific implementations, however, don’t have to be shared and open. Hugemarkets with tiny verticals of implementation lock out competition, but theyalso prevent innovation. But sometimes something beautiful happens, and peopleget together to support a new kind of standard. An open, extensible standardthat can be written and read by anyone. One place where this is just starting tohappen is with computer virtualization.

The Semantic Stack

The internet is constantly evolving. What was once a loosely connectedcollection of documents has turned into a socialized application that allowsyou to search and gather information on pretty much anything you desire.

Pull to Push - RSS to XMPP

You and your friend are standing alone in a room. You’re interested in what yourfriend has to say, but he’s normally a pretty quiet guy, so every minute or soyou ask him.