Subscribe: christopher
Added By: Feedage Forager Feedage Grade C rated
Language: English
back  business  day  find  good  i’m  life  made  make  much  new  people  software  time  work  year  years   
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: christopher

Chris Baus

Updated: 2016-07-21T20:09:19+00:00


Full stack startups roll on: Dollar Shave Club sells at unicorn valuation


I spent yesterday researching a project I’m working on (going down paths and backing out), and in the middle of it, a story caught my attention: the sale of Dollar Shave Club to Unilever at a unicorn price [1].

While software is eating the world, Dollar Shave Club is another example how this is trend isn’t playing out through standalone software companies. Instead software is being combined with other competencies (in this case marketing and distribution) to create what Chris Dixon calls full-stack businesses [2].

Classic examples are Elon Musks’s Tesla and SpaceX. Both make heavy use of software, but software is only one part of their product stack.

This comment on the Dollar Shave Club thread stood out on Hacker News. It is in regards to creating software for the construction industry:

Convincing people to fit their workflow into your new software, effectively running their companies around it, is not as easy as it sounds. Coding it is not the hard part.

That’s the point. There will not be software companies which sell to the construction industry. There will be software companies which do construction.

Drawing from my own experience, I for years thought this trend would happen in the financial industry. There will not be software companies which sell to the financial industry. There will be software companies which do finance. The rise of robo-advisors, like Wealthfront, point in this direction.

In the money management industry it is common for core business processes to be pasted together with the help of third party software and data vendors. Money management businesses are probably 5% investment management, and 95% marketing and technology. The companies which start with technology and marketing first are eventually going to win. This going to start happening across industries. Software and techonology will not be ancillary, but part of the core business.

[1] I’ve never been interested in Dollar Shave Club’s service as I’m a wet shaver. I buy my blades in bulk from Amazon.

If you care about the environment, saving money, and actually enjoy shaving, scrap the cartridge razors, get a double edge razor, a brush, and some good creams and soaps.

[2] Dollar Shave Club’s primary competitor, Harry’s took the full-stack startup concept a bit further and actually bought a German razor factory.

The Software Paradox


While it was published over a year ago, RedMonk analyst Stephen O’Grady’s The Software Paradox neatly sums up what many practitioners already know: software revenues, especially when sold with a one time upfront cost, are in decline, likely irreversibly. This is happening at a time when the aggregate value of software has never been greater, hence the paradox. Stephen points toward many causes including the rise of Open Source and cloud computing, but software also suffers the same problems as other digital media. No matter how expensive it is to create, the cost of reproduction and distribution is approaching free. Pure software vendors are destined to fight the same battle the music industry has for years as distribution costs have gone to zero. Early in my career I worked for companies which generated their revenues with shrink wrap, pay up front, business models. Even in the 90s it was clear how unsustainable this business model was. Features were added for the sake of features, with the hope that customers would shell out $200/seat for an upgrade. This was never in the best interest of customers or developers. Bug fixes were cost prohibitive, so software companies had the pressure of creating a “gold master” which required the software to be nearly bug free upon delivery. For customers, to get bug fixes they were forced to buy new versions of the software which often contained superfluous features which were intended to sell the release (for instance flat buttons). Often customers didn’t upgrade (Windows XP) and developers supported software well beyond its shelf life. I believe the subscription model of licensing a fluid product like software, regardless if it is hosted or locally installed, is beneficial both to the producers and the users, and it is surprising companies such as Microsoft have taken so long to adopt it. With that said, subscription model alone may still not be enough. For most of my career I worked for a business which combined software with data aggregation business into a subscription package. This provided for a very predictable business. While we produced very little data ourselves, the data aggregation service was worth the price of admission for many of our customers. But ultimately the business died a slow death. As a former member of the management team, I think am at liberty to say we had our problems, but ultimately we failed to adapt to the rise of “full stack” competitors who controlled not only the software stack, but the data as well. It was difficult to come to agreement that data processing was a worthy investment when it appeared that almost all of the profit was in software subscriptions. We thought software would create a wide enough moat, but we were wrong. It also worthy to note even Open Source proponents are starting to admit that producing Open Source software as a primary business requires awkward business models that are difficult to scale. Stephen quotes an essay from Cloudera founder Mike Olson: “’s pretty hard to build successful, standalone open source company. Notably, no support or services-only business model has ever made the cut..” Olson is one of the pioneers who attempted to productize Open Source software, first with Sleepycat and now Cloudera. If he doesn’t think the services model (which has been proposed as viable business model for Open Source software products for as long as I can remember) works, he’s probably right. Stephen does propose some solutions (collect and sell data) for software vendors, but I think it is time to question the viability of standalone commercial software as a product. If the future of pure software distribution is Open Source, which has been proved difficult to monetize, to what end are software developers working? Are they serving themselves or those who package and otherwise leverage their work? [...]

Thoughts on Cocoa Beach and Cape Canaveral, FL


The Good The view from my condo: I have a 25 foot deck which directly faces east over the Atlantic Ocean. The beach is really nice. Maybe it isn’t as perfect as some of the beaches in Hawaii or Central America, but it is still a nice beach. The baby boomers are unloading a lifetime’s worth of equity in FL and it is just starting. They are flooding in from all over the country and Canada. It is a huge area relative to the size of FL. Most East Coasters and Mid Westerners don’t even consider retiring to California, but a lot consider retiring to FL. People are friendly — year round locals, tourists, and snow birds have all been equally friendly. There is a reason they it call the Sunshine State. Summers might be hot, but the rest of the year the weather is pretty nice. As beautiful as Seattle is, there is no way I could subject myself to those types of winters. The cost of living, while increasing, is low relative to many places including almost all of the West Coast. While real estate is getting more expensive, it is still a bargain. You can still buy oceanfront condos for around $300k. That might sound like a lot of money, but compared with just about anywhere else in the country it is a steal. Larry’s Take is one of the best real estate blogs anywhere, and he has made me feel more comfortable about my investment down here. He even met me for lunch although I wasn’t a client — a quality guy. There seems to be an equal number of single women and men. That might be a strange bullet point, but I think the lack of women in Tahoe (and the West Coast in general) creates a hostile environment. While the end of the manned space program hit this area hard, there is still a ton of infrastructure at Kennedy Space Center which can’t easily be replicated. SpaceX alone has 20 launches currently scheduled at Cape Canaveral. Surfing and water sports: I’m the crappiest surfer ever, and while the Cocoa Beach is nothing like the West Coast, it still has some of the best surfing on the East Coast. Unlike California, the water temparatures are tolerable to tropical. Kiteboarding looks incredible, but I don’t know if I will ever have the energy to learn a sport like that at this stage in my life, but who knows, maybe after I drop a few more pounds. Orlando has a truly international airport that is easy to get in and out of. There are direct flights from MCO to SFO and JFK. Cocoa Beach is the closest beach to Orlando, so any tourists that want combine a trip to the ocean with a trip to Disney come to Cocoa Beach. Mixed in between the kitschy tourist traps (more on that in a minute) is a handful of gems. The Surfinista is an awesome coffee shop. You can sit there and pretend you are in California. Just across the street is Juice and Java which has weekly open mic and singer song writer performers. Laid back lifestyle: after I bought the condo, I was stressing out about hurricanes, and I was talking to some locals at the Sandbar, and I asked one, “what do you do if there is a hurricane?” Deadpan answer: “party.” That explains the lifestyle here. Port Canaveral is one of the busiest cruise ports in the world, and development is continuing. There is no state income tax. There is a technical college, Florida Institute of Technology, just down the road in Melbourne. The entire town from Port Canaveral to the Fat Snook is a flat 9.3 mile bike ride. The not so good Most restaurants have bland, boring, and fairly expensive tourist food. There are a few decent restaurants in town, but the good ones are expensive. The grocery stores are pretty limited including the meat selection. There is nothing like Wegman’s. There is no good sushi. Like Tahoe, the economy is very much based on the tourist industry, but I think there is more potential for sustaining industry including software down here than Tahoe. Tahoe has way too limited and expensive real estate. Reno is a different story, but it has gotten pretty expensive as well. Property tax is fairly hig[...]

The Chimney Dick Built


I’m alone in the house Dick built. His struggles with it play prominently in my childhood memories. Not only did he build much of the house himself, he also designed it.

Dick was not an architect. God no. He was an engineer; not a world changing engineer; a solid pocket-protector-wearing engineer whom his colleagues, customers, and suppliers respected.

But there is one exceptional feature of the house which few people see: the chimney. My mom often refers to this elevation as the front of the house, but it is the back corner, furthest from the street.


When the house was built, the mason thought it was one of the largest chimneys built in Chautauqua County in contemporary times. Oddly, it is not attached to a mansion on the lake, but a modest family home filled with the type of compromises one might make in the middle of an energy crisis – small windows and no vaulted ceilings (sorry mom).

40 years later, I can only speculate about what he was thinking when he penciled this three flue monster into the blueprints. No architect would ever design something like this in such a home. It had to be a disproportionate part of the budget. It obviously wasn’t a display of vanity. Nobody knew it existed.

Dick wasn’t drawn to designers, writers, musicians or artists. But anyone who could weld a perfect bead, sand drywall as smooth as silk, or lay brick in neat stacks was worthy of admiration bordering on worship. Many tradesman became his best friends.

So what is this chimney about? It is an excuse – an excuse to be around the people who could turn ridiculous into reality. My dad had nothing but respect for the mason who built it. He was someone he wanted to work next to.

Tonight I light a fire not only in remembrance of my Dad, but in respect for the craftsman he loved and admired.

Despite my own personal biases and weaknesses, sometimes I need to be an architect, sometimes an engineer, and sometimes a carpenter. They are all equally important skills when building a functional, productive house. But also build a stupid big chimney for no damn good reason.

Eulogy For Dick Baus


It is with a heavy heart that I have the opportunity to speak with you today about the life of my Dad, Dick Baus. I want to thank family and friends, both old and new, who have been there for support and many rides to Buffalo during this difficult time. Paster Rick. Busti Fire Department. Hospice Chautauqua County. Also my mom who sat by his side unfailingly throughout this process. Even nights when I myself needed a break. When I think of my Dad, I remember a man who would not back down from adversity. He confronted it. When faced with one of the most unpopular wars in our country’s history, he did not run. He enlisted. When orders were read alphabetically by last name: Abrahams .. Saigon Adams .. Saigon Anderson .. Saigon Baus .. Saigon his fate was determined and he accepted it. He served as an MP for the U.S. Army in Vietnam. But as fortunate would have it, when he returned from war he was stationed in California, on veteran’s day 1968, he met the love of his life, Kathy. In the 70s, when faced with financial crisis, a half finished house, a wife and two young kids, he didn’t hand the keys back to the bank, or spend his days in a bar in self pity. He persevered. He did what he had to, to build the best life he could for his family, even if that meant sacrificing his own goals, his desires, and sometimes happiness. Not everything worked out as he planned, as it rarely does in life, but his family always came first. There was no question in his mind that it was the right thing to do. I will not use the term ‘battle’ to describe the illness my dad faced late in his life. I don’t think he saw his time with cancer as a battle, but as another one of life’s challenges that he would confront. When his treatments went awry and sent him into the ICU, the day he was released from the hospital he went to work. To quote our friend Andrew Danielson, ‘The news of Dick Baus’s impending death has been greatly exaggerated. I just saw him mowing the lawn.’ While I personally seek peace from life’s problems in the mountains around my home in the High Sierra, my Dad found solace on a John Deere tractor. If the lawn was freshly mowed everything would be ok. My father was a forward looking person. At the dawn of the PC era, he didn’t see computers as toys, but as tools that would eventually change the way work is done. He brought home our first computer and gave it to us with the manual and the belief that we’d somehow figure out. Little could he have known that would lead to the livelihood and many opportunities for both of his children. Even after his illness had affected his ability to reason, he very rationally decided when his time had come. But he was never scared, and was most concerned that we agreed with his decision, and that we’d be ok. He didn’t give up, he accepted his fate a knew he would never be happy with a life sustained by machines. I was fortunate to spend more time with my Dad in the past year than I have in the past twenty. Through this experience I’ve learned some life lessons, but none as important as the appreciation of the short, ephemeral nature of life itself. 70 years a brother. 45 years a husband. 41 years a father. 6 years a grandfather. Many years a friend. It is never enough time. While my dad would not appreciate using this knowledge as an excuse to ignore his belief in a honest day’s work, in retrospect I think he would agree to moderation in life. To enjoying everyday. And to not assuming there will be more time. I thank my dad for instilling a strong moral ethic into myself and my brother Jeremy and for always supporting our endeavors. I only can only wish to be as strong of man as he was. He set an example for self improvement in my own life. I’m proud to call Dick my father. He will be greatly missed. [...]

Misconstruing Salary with Professional Advancement


I will admit it is difficult to use your life as an example of what not to do, or as James Altucher would say, to bleed.

While I could bleed more deeply over the mistakes I’ve made in my personal life, I want to discuss one mistake I made professionally — misconstruing salary with professional advancement. There are a lot of reasons your employer is willing to increase your salary which may have nothing to do with your marketable value:

For instance:

  • You have skills or proprietary knowledge that is uniquely valuable to the company
  • Upper management or the Board doesn’t want to spook investors with employee or management turnover

Having proprietary skills isn’t necessarily bad, but it is easy to become more valuable to single company because of your knowledge of the business. It is a more subtle when management attempts to create an illusion of stability during transitions (for instance during and after a sale, IPO, etc.) by increasing base salaries and paying sign-on and retention bonuses.

I wasn’t oblivious to the opportunity costs of my decisions, but I still undervalued the chance to advance my career because of my current salary. Most significantly I turned down a position with a non-profit which could have been life changing.

When considering an opportunity look beyond the immediate salary and consider where the new opportunity could take you. Does it open up new pathways which otherwise would be closed to you? Does it lead you to a new market and new contacts whom you might not otherwise meet?

In retrospect, I would have been more willing to make lateral moves earlier on. It can be easy to convince yourself that everything is ok when in fact you are limiting your future options.

Burt Rutan didn’t like Mojave (and other thoughts on compromise)


Burt Rutan, the engineer famous for his unconventional, low-cost airplane designs including the X Prize winning SpaceShipOne , spent most of his life living in the Mojave desert.

In 1995, when describing the design of his house in Mojave, a pyramid which is as eclectic as his airplanes, he had this to say , “You’ll notice that the windows are high up on the wall, and not very big, The idea is that we’re tired of looking out at the awful desert all the time.”

In 2013, 22 months after retiring to northern Idaho, he addressed a group of pilots in Palm Springs: “I got the hell out of the high desert … The ugly one that doesn’t have any palm trees.”

I’ve admired Rutan from afar — an engineer who was able to influence an industry (and possibly create a new one) by ignoring the mainstream, while working with a small team out of a few hangers in the desert. Rutan was an entrepreneur not for the sake of entrepreneurship, but out of the necessity to support his family while creating the types of products he wanted to build.

But Rutan lived in the desert, a place he didn’t like, for 46 years: “What keeps us in this crummy desert is doing things that are fun.” link

You can’t have it all

I’m not good at accepting compromises. I think this stems from a deeply engrained, and somewhat American, belief that I can have it all. But by attempting to build my life around no compromise solutions, I’ve often compromised on things that truly matter. Recently I’ve had to remind myself that I can’t have it all. If I could meet my 22-year-old self today, I would adamantly tell him that every decision is a compromise, and the sooner you internalize that, the happier you’ll be (also, by the way, you are never going to believe this, but Apple is going to have a huge comeback. No really!).

When faced with a decision to move to a place like NYC, you have to be cognizant of the tradeoffs and compromises that go with the decision, and be willing to accept them. If not you’ll find yourself feeling unhappy and unsuccessful when you hear about how big of a house your college buddy bought in Atlanta, while you’re crammed into an apartment with three roommates.

If your goals are to work at a prestigious firm in Manhattan, but also own a house, more than likely you will either be disappointed when the price of houses in nearby boroughs are out of reach, or find yourself spending your life commuting on a utiliarian train to the middle of New Jersey. Sometimes decisions require force ranking your priorities, and that can be a seriously hard thing to do. I’ve failed time and time again.

Many people look toward ultra-successful entrepreneurs like Mark Zuckerburg as the definition of success. But that success hasn’t come without compromise. You can’t have a casual day with your friends in Dolores Park if you are Mark Zuckerburg, Steve Jobs, or Marissa Mayer. To be a member of the elite means you live your life gated and guarded in your own house and at work. Maybe that is a compromise you would be willing to make to have the influence of someone like Mark Zuckerburg. But as glamorous as such a life seems, even elite status isn’t without limitations.

Example race condition in Node


I’ve had time to evaluate the current crop of software platforms and decided to focus my energy on JavaScript and Node. This decision surprises me a little, but our understanding of JavaScript in the industry has come a long way in the past few years, and the more familiar I am with Node, the more impressed I become. Ghost is one of the larger open source Node applications, and it is a good place to find ideas on how to use the platform to create a signficant application. I have been studying the Ghost code base and created a few patches to scratch some itches I had with it. While reviewing the code I found a problem which I believe occurs at a few different places and with one of my own patches – the application has race conditions. This isn’t a knock on Ghost, which is a well written and tested project, but it does show how easy it is to create race conditions and how tricky they can be to rectify. Race conditions certainly are not unique to Node. Multi-threaded and multi-process web platforms have similar issues, but it is important to realize that Node’s evented, single-threaded architecture does not prevent race conditions from occurring either. Although Node apps are single threaded, they are concurrent. While much of the currency is handled by Node and the operating system itself, that concurrency can still result in race conditions. The problem: Database writes depend on the current database state Race conditions occur most commonly in web applications when writes depend on the current state of the database. What happens is an application handling a request queries for the current state, makes an assumption about the system based on that queried state, and then performs a write based on that assumption. Simultaneously, after the state has been queried, but before the new state is written, another request modifies the underlying state, invalidating the assumptions of the first request. While much of the infrastructure for multi-user support exists in Ghost, multi-user support isn’t ready, so Ghost limits the number of user accounts to exactly 1. This is done by first checking to see if a user exists. If it doesn’t, the new user account is created. The general logic flow is as follows: query to see if a user exists if no users exists then insert a new user record in the database and redirect to admin page else provide an error message to the user that no new users can be created Each access to the database is done asynchronously, and the application flow continues with a call-back when the database operation has been completed. This frees up Node to handle other requests while the I/O operation is occurring. During this time, one or more requests could query the database for the number of users, determine that no users exist in the database, and then go ahead and create the new user in the database, violating the constraint. I created a simple Node application which shows this behavior using SQLite. The problem can be reproduced with a trivial concurrent client. The first time the client is run 3 requests simultaneously create user. The second time it is run, the error is determined, and an exception is thrown, terminating the server. This can been shown to occur in a single run of the client by increasing the number of concurrent connections created. Depend on your database Much has been written about atomic writes, counters, sharded counters, etc., but for an application like Ghost, which already is heavily dependendant on a relational database, I’d recommend allowing the database to do the counting and/or enforce the constraints. I think the cleanest solution would be a conditional INSERT based on the number of rows in a table, but conditional INSERTs are not standard or universally supported. But all SQL databases I’ve used have auto-incremented fields. I under[...]

Goodbye Zephyr.


A couple weeks ago I made one of the most difficult decisions of my life. I resigned from my long time employeer, Zephyr Associates. I’ve worked for Zephyr for most of my adult life and considered my colleagues to be some of my closests friends and extended family. I wasn’t sure how I would feel when I left the office for the last time today, but I feel like giving thanks.

I want to thank Steve Hardy, the founder of Zephyr, for being crazy enough to try to start and run a software company in Lake Tahoe, which provided one of the few opportunities for developers to live and work in the Sierra. Working for Steve Hardy was like an MBA crash course in economics and hustle.

I want to thank Aaron Moore for hiring me and making StyleAdvisor a game changing reality. Also Will Clemens for the opportunity to work underneath him as part of Zephyr’s leadership. Lauren Boismer for bringing in key accounts when it mattered, and Lawrence Chia for setting up our accounts becoming more of an expert on Zephyr On Demand than I was.

I want to thank the core Zephyr on Demand team, Kyle Schuma, Max Lybbert, and Matt Motherway, for sticking with me and catering to my whims. You are amazing developers and can hold your own with anyone in the business. I know what you put up with and I appreciate it. I was very fortunate to have had the opportunity to work with a team of such a high caliber.

And Thomas Becker for being Thomas Becker. You are an unheralded genius, but your work will be recognized.

I wish everyone at Zephyr and Informa the best. Thank you for the memories.

I don't like public speaking (but I do it anyway)


Note: I wrote a draft of this post before attending Startup School. I’ve added a few notes from Startup School at the end. As a young student, I was petrified when my turn came to read out loud to my classmates. To this day I’m not a confident oral reader. Eventually my paranoia about reading translated into a fear of public speaking. But as I gained more responsibility, I realized public speaking wasn’t only going to be critical, it would be expected. I’ve had to force myself to improve my public speaking. I’m still not a great speaker, but I’ve gotten better. I’ve given dozens of presentations over the past few years, and I still find it challenging and often mentally draining, but I still do it. While most engineers, myself included, want to be judged purely on the merits of our work, if you want to drive innovation, you will often have to convince others of your project’s merits and get others to follow you in your pursuit. Complex projects require communication, and public speaking is one critical way of communicating your intentions to your colleagues, customers, and investors. I have a lot of room for improvement, but here are a few tips that have helped me. Volunteer The best way to improve as a public speaker is to volunteer to give talks. If you are given the opportunity to talk about something you are working on, take it. Once you are scheduled, it is difficult to turn back. If you are working in a technical role, you may want to recommend a “brown bag lunch” on a topic you are interested in. For good reason, managers are often unwilling to put unproven speakers in front of customers. But you can prove yourself by giving talks to your peers. If you show initiative in this area, I suspect many managers will make time for it. If you want to lead a project, this is just as important as learning about the latest technology. For many people this is painful as hell, but many of us have been there, and the sooner you do it, the better. I have most senior developers on my teams give presentations to their peers. I think it is an important aspect of leadership (and it has been interesting to watch as engineers have grown in this area), but not all managers require this, so you will have to take the initiative to make it happen. Be absorbed by your subject I stole this one from Dale Carnegie. I find it difficult to talk about something I do not agree with (although this is necessary from time to time). It is easier when you care about your subject and believe in it. It will translate to your audience, and make up for experience. I’d rather hear an unpolished speaker give a talk on topic he or she is really passionate about, than a professional speaker rattling off sound bites. My subject is my work. I’m passionate about what I am doing, and that makes my job when speaking a little easier. Practice If you are frequent speaker or lecturer, you can probably get away with winging it, the rest of us need to practice. Knowing the content well can help you get over stage freight. If you are really well prepared, you will go into automatic mode. This isn’t as good as being fully engaged in the moment, but it will get you through the content. I record the talk and play it back. This can be difficult to hear, but it helps a lot. Force yourself to do this. I also practice the talk or the pitch for my colleagues. Assume things will go wrong I’ve given many talks on the road where I couldn’t control the environment. This can be a nightmare if you depend on internet connections or multiple monitor setups for presenter notes when combined with the pressure of having to give a presentation. Assume that your presenter notes won’t work, the internet will fail, and the resolution of the projector will be very low (more on that in a min[...]

Note to developers: not everyone has home mail delivery


I am fortunate to live in one of the most beautiful places in the world: Lake Tahoe. While living in Tahoe has significant benefits (while everyone is chained to their desks in the Bay Area on Wednesday morning, locals are are out tracking up the powder which will be gone by the time you get here on Saturday), it isn’t without its drawbacks. One of the most unusual, and often frustrating, is that there is no home mail delivery from the U.S. Postal Service (USPS). Everyone who lives in my area has a PO BOX that we must periodically check to receive mail. That is the first drawback — we have to go somewhere just to check our mail. If you don’t check it frequently enough, your box will be locked when it is full, and you have to go to the counter during business hours to get an often not-so-friendly reminder to check your mail more often. This is especially inconvenient if you are a frequent traveler. UPS is not part of the USPS While USPS will not deliver to my home address, UPS and FedEx can only deliver to my home address. Not everyone knows the USPS and UPS (United Parcel Service) are two different organizations. I don’t know if UPS did this on purpose to lend credibility to their service, but the one letter difference in acronyms confounds many people including my parents (Happy Birthday Mom. Love you!), but they have figured it out now. Sometimes I will ask a vendor if an item will be shipped USPS or UPS, and the answer will be something to the effect of, “yes we ship with priority mail.” Sometimes they will say they will “mail it” to me, but “mail” is a generic term, and I have to verify if they mean UPS or USPS or something else. Most of the time online stores will let you know what method will be used to ship an item and you can provide the correct address, but other times, especially when ordering on Ebay, either the shipping method will not be specified or it will be swapped. This also causes problems with PayPal address verification. While I understand the reasoning behind verified addresses, my PO BOX is verified, but my home address is not. That means that anyone that requires a PayPal address verification, must ship to me via USPS. Fortunately UPS and FedEx will reject PO BOXes, but it doesn’t work the other way around. Sometimes I provide my home address and the item is shipped via USPS, and eventually the item is sent back by the local post office — this can take weeks. Address verification often fails Companies which use a USPS database to verify your home address will often claim your home address doesn’t exist if you do not have home delivery from the USPS. The most egregious offender of this is AT&T. AT&T requires a physical address when setting up cell service or an Apple device with cellular access. iPad refuses to accept my home address as a valid address. The only workaround I could find was to provide the address of my local post office. AT&T address verification can actually prevent customers from setting up their service. What AT&T gains by verifying that my physical address exists escapes me, but I wish they would stop doing it. The workaround that doesn’t work The most common workaround for those who do not have home delivery is to provide both a home address and PO BOX. In that case UPS, FedEx, and USPS all seem to be able to figure it out. Unfortunately that doesn’t work for me because my home address is in a different zip code (differing only by an increment of one number) and officially in a different town, and most address entry forms do not provide for two zip codes. A request I have a request for developers who work with deliveries and/or address verification: allow me to provide multiple addresses depending on the method that will be used to ship[...]

The SwitchFlow C++ HTTP Proxy: A Postmortem


SwitchFlow is a non-blocking HTTP Reverse Proxy I wrote in C++ and shelved many years ago. I recently spent a couple days getting the code up and running on Ubuntu, and once I found a clean commit (if you are considering mothballing one of your projects, do yourself a favor and don’t leave it in the middle of an undocumented refactor) it wasn’t too hard to get it to compile. I fixed a 7 year old bug while I was at it. I was reminded of the project while reviewing Domink Honnef’s notes on Go development and read that Brad Fitzptrick had added a buffer pool to Go’s HTTP implementation. Within a couple days, CloudFlare also had an article on buffer pooling in Go. I think Go will eventually dominate the development of these types of servers (more on that in a minute). One of my goals was to optimize memory usage not only for performance, but for reliability. It is difficult (or impossible) to recover from memory allocation failures while handling thousands of open connections. SwitchFlow pre-allocates the buffers used for pooling headers at startup, to allow administrators to set the number of connections required and guarantee that the proxy wouldn’t run out of memory at load. In other words, I wanted the server to fail predictably. The assumption was the proxy would basically be the only server running on the machine or VM. After becoming aware of Nginx, it put a damper on my enthusiasm for SwitchFlow. Although I was probably overly negative about my project’s prospects, even in its early state, Nginx was far beyond the capabilities of SwitchFlow. Nginx is an excellent piece of software, which I have used in production for years with good results, and I’m not surprised by its success. I view web application design as a processing pipeline rather than a monolithic application mated to a database. Reverse proxies fit neatly into such an architecture, but can significantly increase latency. To depend on a reverse proxy it must be fast and reliable or the downside of performance will outweigh the benefits. I read Dan Kegal’s highly influential The C10K problem, and felt that a reverse proxy was the right venue to experiment with some of the ideas Dan had put forth. In the end, SwitchFlow provided insight into HTTP, event driven applications, and Linux server development which all influenced my perception on application design. I also gained a better appreciation of the complexity of HTTP servers in general. C++ benefits from being time proven, ubiquitous, and the ability to create native executables. Given restraint, it isn’t a bad language to work in for these types of projects. My biggest gripe with C++ is that it is often a source of complex designs and inconsistent styles. While I believe my reasons for not using exceptions are justified for a project like SwitchFlow, as soon as another developer joins the project, he or she will inevitably disagree, and instead of focusing on the task at hand, we will debating coding style, which is one of the reasons I’ve been drawn to languages like Python and now Go. Thoughts on Go When developing an event driven server, state management can be tedious and error prone. This issue is language independent, and similar problems exist with common event driven frameworks in C, C++, JavaScript, and Python. It will be difficult for any abstraction to beat the performance of an event driven server written in C, but I think Go will come close, with a model that will enable much larger and complex applications. Go maps very closely to my C++ style for server development (interface driven, no exceptions, and light use of generics) with the added benefits of garbage collection and lightweight user threads (a la Erlang). While I was skeptical of garb[...]

Beyond the technical start-up, meet Chicago's king of the question


Although Dan Burns’s Whaddayaknow?, by Paul Graham’s definition, isn’t a high growth start-up, the company has carved out a niche hosting pub trivia nights at bars in the greater Chicago area. Whaddayaknow? isn’t battling it out for Series A funding, but not every company is destined to be the next Facebook. That’s ok. Success comes in many forms, and his customers don’t mind. I met Dan on a recent trip to Chicago and was intrigued by his business and passion for it. The conversation proved to be a classic lesson in entrepreneurship. If you see a need, address it. When trivia is your stock-in-trade, the hunt for the perfect question is never-ending — every conversation holds the potential of new ideas. As we talked, I was a surprised by how much pub trivia has in common with the capital-light, but knowledge-intensive, businesses I am most familiar with. Dan kindly agreed to answer a few of my questions about Whaddayaknow?. If you have any questions of your own, Dan can be reached at: Hi Dan, can you tell us a little bit about yourself, your business, and its scope? I grew up just outside Boston, MA, went to school at Boston College, and lived in the city for several years after that, so I am a true Bostonian (go Bruins!). I worked in the Boston Public School system for several years before deciding a few years ago that I wanted to try switching it up since I had been in the city my whole life, and decided to come on out to Chicago as I thought it would be a good fit. It was tough leaving my friends and family, but I had the itch for a change of scenery. I moved to Chicago in September of 2007 and began hosting my first couple of bars (Waterhouse Tavern and Cans Bar & Canteen) in October of that year. My company now hosts weekly trivia nights at 40 locations in the city and suburbs and continues to grow. We hold 2 major “Tournament of Champions” events each year (one in the winter and one in the summer), with our 5th one coming up next month in July. Each has been bigger than the last and we expect close to 100 teams for this next one, and are currently looking for a bigger venue in the city to be able to accommodate us. These events include all of the top teams from every one of our locations, who compete in a “Qualifying Round” to get an invitation. We give a ton of prizes away to the Top 20 teams including $1000 cash for the overall winner. How did you get involved with pub trivia? Pub Trivia has been big in Boston for many years now, and my friends and I used to attend every week at a local spot near us and loved it. It was a great weekly tradition for us; we always had a lot of fun. The host was a great guy who we got to know pretty well, and one night he asked me if I wanted to take over hosting at the venue, and I was happy to do it. To me, it was a great chance for a fun part time job as well as to get a little help paying the bills. Did you move to Chicago specifically looking for business opportunities? Not specifically for my own prospective business opportunities — I actually moved out here to get into sound engineering. Music is a huge passion of mine, and recording has been hobby of mine for a long time. Chicago is a great city for the field — better than Boston — so I wanted to see if I could get into it out here. I started the trivia business as a side thing to meet people and make some extra money, and once I realized its potential with its quick success, I decided to try to put more time into it and pursue if full time. How did you go from having a[...]

You can't impress developers. So don't try.


There was a recent post on Hacker News regarding a Python interpreter in JavaScript. As soon as it hit the home page, the comments took on a condescending tone. I found this disappointing. I wish the development community was more supportive of people trying and promoting new, if ambitious, ideas.

A recurring theme I’ve witnessed, which is something I tell new programmers, is developers can’t impress other developers. So don’t try. Instead focus on impressing your users (if your users are developers, I wish you luck).

Talented, but inexperienced, developers tend to use every trick in their bag to show off their knowledge and capability. I’ve seen the harm that can be done when someone heads off into the wilds of a code base with such a mindset. It can be toxic, and it is often in the spirit of impressing other developers. Experienced developers make the difficult seem easy. New developers often make the routine look hard.

No matter how successful, reliable, or loved a piece of software is, inevitably other developers will not value the time, effort, and craftsmanship that went into building it. The Google search engine brings in $billions each year, and is one of the most important software projects in history, but I guarantee there are developers at Google right now complaining about how crappy the core code base is. There is a time and place for review, but code on the ground deserves respect.

There is something to the complaints about the approachability of the developer community. We eat our own kind. Since the building blocks of what we do are so simple and results quickly forth coming, I think we over project our capabilities and undervalue other’s. So, and I say this as a reminder to myself, try not to do that. Respect the work of your peers, and those who came before you.

The house I was born in sold for $4000


The house my parents owned when I was born recently sold for $4000 [1]. I’m not omitting a zero or two. That’s about the price of a used 2001 Honda Civic with 150,000 miles – maybe the Honda is worth a bit more. My parents sold the house for $12,000 (three zeros) in the ’70s. Times have been tough for as long as I can remember my hometown of Jamestown (about 60 miles from Buffalo), NY, but I still found this surprising. This is especially astonishing if your are faced with increasing rent and real estate prices in metropolitan areas like NYC, Seattle, and San Francisco. Jamestown was a furniture and tool manufacturing hub and is still dotted with the buildings which sheltered the industry of a turn-of-the-20th-century boom town. The brick, labor, and craftsmanship that went into creating them have kept them standing in the face of decades of neglect. When our ancestors put their roots down in the Great Lakes they planned to stay and had no reason to believe anything other than economic prosperity lie in their future. But manufacturing has all but abandoned the area leaving the skeleton of the past in its wake. I watched this progression play out throughout my childhood and from a distance as an adult. Now in middle age, I realize how my perspective has been shaped by this trend. I believed downside risk to be real and often underestimated upside potential. When your childhood home sells for $4000 it is hard to explain to your parents that you are spending $375,000 on a fixer-upper or imagine a web site being worth over $1 billion. I saw a talk by Chris Sacca (who grew up in Buffalo and lives across Lake Tahoe in Truckee) a couple years ago. He was discussing selling a company for what Michael Arrington called bullshit money and said something to the effect of, “$600,000 is a lot of money to my parents back in Buffalo.” $600,000 is a lot of money to many people (myself included), but it can be an even more unfathomable amount when living through perpetual economic decline. While the west coast has seen it’s booms and busts the trajectory in anyone’s lifetime has been up. In the time I’ve lived in Tahoe entire cities have risen up from the empty pastures of the Central Valley. When you are from California it is hard not to believe the future will be more prosperous then today. Life has benefited those who have taken risks and acted sooner than later. I don’t think it is a coincidence that Silicon Valley grew around Stanford and not Carnegie Mellon. The population of California has a perception of growth, while the Rust Belt has a perception of decline. This must effect the collective psyche to point where taking risk becomes less socially acceptable. Taking entrepreneurial or financial risk when you are gainfully employed is less tolerated when many people around you (and in fact entire industries) are struggling to get by. When I left Upstate NY, I realized the economic situation wasn’t as bad everywhere as it was in my hometown, but what I didn’t appreciate was the extreme case I experienced. Along with Detroit, Western New York has some of the lowest property values in the country. At the other extreme are the $25 million properties a few miles from my current home in Lake Tahoe. Much of life happens in the middle of the bell curve, but my perception was skewed toward the left tail. While it is easier to take risks when you are young and have nothing to lose, it is also hard to start from nothing at 40. Maybe wisdom is the ability to not focus on the extremes, but to prepare for the more likely outcome of landing in the middle. Sometimes houses depreciate from $12,000 to $4000 and sometim[...]

Linkedin's user experience


Last week I became duly annoyed with Linkedin. I couldn’t put my finger on the source of my angst at the time, but after reading a comment by Paul Graham regarding the user experience of question and answer site Quora, I realized I had the same issues with Linkedin.

Here’s what PG had to say:

I think Adam’s (CEO of Quora) mistake here is to go too much by the numbers. He presumably has numbers that show that Quora ends up net ahead if they force people to create accounts to read answers. He grew Facebook very effectively by following the numbers. But he may not realize how different this case is from Facebook’s. It may well be that for a site like Quora, at this stage in its life, users are not all equal. It may be a mistake to alienate the sort of people Quora has been alienating by doing this, even if they end up numerically ahead in the short term.

I’m one of them. Quora has now spent several years training me to be bummed out every time I click on a link to their site. Every time it happens, I dislike them more, and become more resistant to creating an account. I now think of it as a site for other people, who are willing to put up with the stuff they do. I’m pleased to find there are others like me.

I like Adam, but I wish he’d stop doing this.

Linkedin is more focused on getting users to do what they want them to do (provide data on themselves to the service), then the experience users are having on the site. When I login to Linkedin, I’m not provided with content I care about, instead I am given a call to action to update my profile, “grow my professional network”, or provide endorsements for contacts I barely know. I’m sure their conversion numbers show how great this works, but over the longer term they risk alienating the users they need to create the content that is ultimately value of the entire site.

I can't take Linkedin seriously


Linkedin endorsements are an odd feature, which probably (in some way I don’t fully understand) benefits Linkedin, but adds a bunch of noise to their network. I have been endorsed multiple times for Object Oriented Programming. If you’ve worked with me in the last few years you’d know, although I drank a lot of OO kool aide early on in my career, I have actively admitted many of these constructs do not work well for modern web apps which are heavily database driven. Whether you agree or disagree with me on this topic is a discussion for another day, but the point is, I don’t know if I want to be known as an expert in OOP at this point in my career, and it shows the complete randomness of endorsements.

When I was invited to Linkedin many years ago, I setup an account with one job title: Pie Tosser at Joe’s House of Pizza. As time went on and more people joined the network, I decided to take it a bit more seriously and added my currently job title. But I couldn’t help myself. The ludicrousness of the endorsement feature caused me to snap again last week, and I started adding random skills to my profile which are just as valid as the skills I’ve been endorsed for. For instance: “Kicking Ass” and “Taking Names.”

Although Linkedin was an early mover in the industry, I have a feeling they won’t be around that long – especially as public and private networks continue to merge. Look for my new resume to be on my github account. Github gets it right for software developers – code on the ground speaks louder than random endorsements any day.

Apple's Growth


This past week’s record earnings report from Apple was unable to meet The Street’s high expectations for the company’s performance. Questions over the Apple’s growth potential caused the stock to fall significantly. It is an argument that has been used to characterize Mircrosoft – It is hard to grow when you are huge. Personally I’m not too worried about Apple’s business. I find it astonishing the market share Apple has attained in San Francisco cafe’s — the illuminated Apple logos are lined up like aluminum shrines to Steve Jobs. If SF is an indicator of greater technology trends, the future bodes well for Apple. With that said there are a couple areas where I believe they could still find growth. Recurring revenue products Apple’s business is mostly dependent on reselling their customers devices year after year to maintain their revenue — which up to this point has worked pretty well. But it reminds me of the PC software world where customers had to re-pay for the latest versions. I once worked for a company with this business model. While it might work when a market is immature and quickly changing, it became difficult to maintain as the software matured. The company had to spit out update after update to boost revenue whether the new version contained meaningful functionality or not. It is difficult to get customers to pay for fancier toolbars. Steve Jobs used to boast about the number of credit card numbers Apple had in the iTunes store, but if they never charge those cards, what good is scale? Instead of charging customers on a one off basis to buy media, they need to move to subscription services. iTunes and iCloud should be Netflix, Spotify, Hulu, Google Apps, Flickr, and DropBox all rolled into one. On the media side they are pushing a dated business model of ownership, which I believe is hold out from the physical world of CDs, books, and DVDs. Over the long term, I think Amazon and Jeff Bezos will be proven to have this one right. Sell the devices at cost as a gateway to sell services. As the price of devices approaches zero, it is going to be increasingly difficult to command a higher margin for a premium device. More focus on the business market There is a massive amount of untapped potential in the business market for both iOS devices and the Mac. Apple’s competitors are floundering. The Blackberry appears to be on its death bed, and Windows 8 is failing to gain the momentum Microsoft was hoping for. But there has been little focus from Apple to get the devices rolled out in corporations. I see devices like the iPad being used by our customers in the financial industry, but often times they are purchased by employees. Apple needs to steal a play from the RIM playbook and make it easy for corporations to standardize on their products. IT departments love standardization. Apple’s limited device permutations should make them very appealing to IT managers. We use quite of few Macs for development. Some we purchased online and others we purchased at the local Apple store. Apple provides discounts based on the amount of business a company does with them, but their online accounts are not synchronized with their retail stores. If you use a lot of Apple computers, having a store near by that service them is benefit over their competitors, but their stores are almost solely focused on the retail market. If they could use the Apple store as a base to service their corporate customers they could gain significant leverage from their existing infrastructure. Overall the stock looks cheap, but the company needs to capitalize on thei[...]

Documents are Skeuomorphic


In the latest versions of their desktop and mobile operating systems, Apple has continued to embellish their applications with design elements which echo the physical world (such as the notorious faux leather in the iOS iCal app). As a result, the discussion of skeuomorphic design, which kicked off last fall, continues to be a hot topic in technology. Many analysts speculated that disagreements over design even contributed to the undoing of long time Jobs confidant and iOS lead Scott Forstall. I cringe at skeuomorphic facades in physical design: wood framed houses covered in a thin brink veneer, stove pipes made to look like chimneys, and composite materials with textures which replicate their natural counterparts (which are frustratingly difficult for home remodelers to avoid). I don’t believe a product can be improved by mimicking something it is not. Many contemporary software applications contain relics of computing’s days past, but, nowhere is this more pervasive, yet accepted, than in document creation. I’m in the process of refinancing my house. To complete the application, I downloaded bank statements, W2 forms, pay stubs, and insurance declarations. None of these documents will ever be printed. Instead they will be transferred via the internet to the mortgage processor who will store them in a document management system. Although the documents will only be viewed electronically, they are formatted with page breaks, page numbers, line breaks, margins, and fonts for standard US Letter size paper. The user experience is similar to viewing a picture of a printed page on the screen. The documents mimic a physical object which is becoming infrequently used — paper. In other words documents are skeuomorphic. Some PDF readers attempt to reflow documents from their original page layout when viewing on screen, but this doesn’t work well when the layout (for instance in tables) contains information in itself. Overall the on-screen reading experience of most PDFs is poor. As mobile devices like the iPad become more commonly used as eReaders, this should concern Adobe. For instance, here is an example of a PDF displayed in iBooks on iPad 2. The layout is not reformatted for the screen of the device. Similarly, while Word maybe familiar and convenient for document creators, I find it frustrating to receive an email with an attachment containing a Word document which the author has no expectation that the reader will print. It has the same limitations as the PDF: an awkward on screen viewing experience. This time is different The paperless office has been discussed as long as I have worked in software (quickly approaching 20 years), yet, as many are quick to remind me, it has yet to come to pass. But, as stock market pundits love to say, this time is different. By a technologist’s standards, it takes a frustratingly long time for processes to migrate to new technology. Early PCs (when combined with laser printers and fax machines) brought paper based processes to scale, but prior to the PC, Xerox machines made documents a common form of mass communication for corporations. [Side note: Jason Scott (of has an interesting description of the early Xerox meme, “You want it when,” in his talk Before the LOL]. At the dawn of the internet, existing processes simply moved from the physical to digital and it became common to email Word docs and PDFs in lieu of making copies and sending faxes. For decades, office computers have simply been fancy document creation devices. But there is a new generation of office[...]

To my generation (of programmers that is)


A tweet by Scott Hanselman caught my attention earlier this week: I followed the link and was reminded of an idea which has been festering in the back of my mind for awhile: engineers become dated because we tend to revisit the problems our industries faced when we first entered them. It is difficult to realize when the game has changed (I say this as I’m watching the game change for the second time in my career). But my generation of software developers has a particularly serious issue with this. We are still busy solving a problem which never existed. During the 90s the industry was focused on solving the quality crisis. But in retrospect, automotive companies failing to rewrite their payroll systems a crisis does not make. Expectations were out of line with reality of the complexity of software development. Software is hard, and as Fred Brooks has famously pointed out, there are no Silver Bullets. Hence the software crisis was never really solved. Expectations adjusted, and the problem faded away. The software developers of my generation are a strange lot. We are probably the only “engineers” who believe that the right way to solve a quality problem is by increasing complexity. I could be wrong, but I don’t think the first thing that goes through the mind of a mechanical engineer when addressing a reliability problem is to increase complexity of the system. But we struck out to solve the crisis by slathering on layers upon layers of oozing complexity with hopes of crushing the quality problem by the sheer weight of all the bits we were creating. And it didn’t work then, and doesn’t work now. We popularized object oriented programming, which was so effective at solving the software crisis, we created a whole new discipline that seemed like writing real honest to goodness functioning code, but in and of itself produced nothing of value: Object Oriented Design and Analysis. But since objects were created to work in memory on one machine, and we had these newfangled LANs that allowed multiple machines to be easily connected, we developed CORBA, DCOM, RMI, blah, blah to solve the problem of using objects over a network. These were especially useful when TCP/IP and DNS just couldn’t get the job done. With the distributed object problem solved, we realized it might be a good idea to save the information stored in object in the relational databases that Larry Ellison was getting rich selling. This is the software equivalent of putting a round peg in a square hole. Sure we could have developed square pegs and been done with it, but what were all those OOA&D architects supposed to do? We convinced ourselves we were doing the right thing, and how could we not be? All our hard work and those finely crafted business objects were being validated by the market. This is going to sound totally insane to anyone who started working in the industry in the last 5 years, but during the dot com boom, there were companies that went public for being “XML” companies. “XML is one of their selling points,” an analyst said regarding the WebMethods IPO. I had no idea what they were selling then, and I still don’t, but the market had spoken. $100+ million valuations were proof of that our Architectural Aeronautics were paying off. Then the dot com crash happened, and we turned to blaming our misfortune on outsourcing. Jeff Atwood, who, granted, I think is a genius, has panned PHP as being a crap language. And, of course, he is right. It is the worst abomination of a language ever thrust on the general pr[...]

5 Years


Last night my team finished a project that took 5 years to complete (it may have been longer, but my brain is having a difficult time thinking in chunks of time bigger than 5 years, so let’s assume it took 5 years). In the end there wasn’t a lot pomp and there wasn’t a lot of circumstance. The project moved step by step by step and dependencies were knocked down until the project was complete.

The odd thing about this is in many ways it feels like it just happened – we just laid one last brick and realized all the bricks in place, and there is a complete structure here. Now I’m already onto thinking about other things – probably the next thing that will take 5 years to complete, but when it is done will feel like it happened overnight.

3 Things I Learned After the Instagram Deal


1) Everything published on Instagram is stored to Instagram’s service (a front end to Amazon S3)

2) Instagram has a really decent API

3) There aren’t as many apps that use the API as I would have thought

Instagram Deal: Is Twitter the Loser?



I just drove up from San Francisco to Tahoe and couldn’t help but mull over the Instagram/Facebook deal along the way. The terms of the deal are breathtaking, which leads to the natural conclusion that there were multiple suitors bidding on the company – and I’d have to expect Twitter was one of those suitors.

Interestingly, according to Tech Crunch, Jack Dorsey (Founder and Executive Chairman of Twitter) and Chris Sacca (early investor in Twitter) were investors in Instagram’s Series A round in which the company raised $7 million in February of 2011. Which potentially puts Dorsey in an odd position of holding shares of one Twitter’s biggest competitors.

This was Twitter’s deal to lose, but at a $1 billion valuation, it probably was too rich even for Twitter.

Update: Kevin Systrom interned at Odeo so the connection with Twitter goes back quite a ways.

Site Upgraded to Twitter Bootstrap 2


I finally finished upgrading my blog to Twitter Bootstrap 2 today. I also significantly improved comments, so leave a comment!

As a non-designer, I really appreciate Bootstrap – it is a great tool. My biggest gripe about creating web apps is that there are no basic UI components available out of the box. Every other major desktop and mobile platform has core components that get you off the ground. Bootstrap solves this problem for the web.

If there is one drawback to Bootstrap, I imagine a zoo of web sites (like my own) launching very soon that all use the basic Bootstrap templates, which might lead to the generification (I just made that word up!) of the web. But I suspect it won’t be long before there are Bootstrap themes which would provide the best of both worlds – a common UI toolkit with custom designs.

Pushing the problems around


In a recent blog post DHH again questions the status quo with the Basecamp database architecture.

I was surprised to learn that Basecamp continues to use what I call the Big Ass DB architecture – which boils down to keeping all your data in one big SQL database and then building a bigger and bigger server. This goes against the increasingly common wisdom of using distributed NoSQL DBs based on cheap, replaceable hardware, to get to “internet” scale. Another notable site that has gone the Big Ass DB route is StackOverflow.

I’m starting to find wisdom in both Jeff Atwood and DHH who have pushed these designs. I wish I had the scaling problems these guys have, but I don’t. It is almost certainly better bang for the buck for us to tune our current application and add more features than to use a more “advanced” database architecture.

With that said, the secret behind scaling up these architectures is that increasingly significant portions of the database are managed outside the DB itself in huge RAM caches. In fact DHH follows up his DB post with a picture of his caching hardware.


That is 864GB of RAM.

I’m one of those old dudes that remembers when RAM was a scarce commodity, and David is right, old habits are hard to break. But as I type this in a text box on a machine with 24GB of RAM, it is hard to not notice that times have changed.

But all this fast, cheap RAM has created a whole new set of problems for programmers – namely keeping cached data consistent with the data on disk. To be honest, my own team can be a bit too cavalier when caching data and calculations.

There is currently no easy way to determine where the canonical data in a complex system resides and how it is updated, and my bet is we will see a new set of tools and languages evolve to create abstractions which will make it possible for mere mortal programmers like myself to get these architectures right. I’m curious to hear more about DHH’s “russian-doll” architecture. Maybe this stuff will drop in Rails sooner than latter.

The Camera is only a Tool


This week, K and I watched Richard Press’s documentary about N.Y. Times fashion photographer Bill Cunningham. While the movie is packed with life lessons, and I’d recommend it on those merits, I was drawn to the mechanics of Bill’s profession as a street photographer.


Bill, who was a spry 82 when the film was released, has two photographic fashion columns at The Times, “On the Street” and “Evening Hours,” which feature candids shot with a vintage Nikon 35mm film camera and a fixed focal length manual focus prime lens. The film depicts Bill shooting with his camera held at arms length pointed in the general direction of his subject. Throughout the movie Bill never discusses his equipment or the technicalities of his trade; instead he is intensely and obsessively focused on his subject.

Press does make one editorial comment about Bill’s technique in a sequence at the Paris Fashion Week. The other photogs are lined up elbow-to-elbow at the end of the runway sporting 18 inch “professional” zoom lenses. Bill instead is seated mid-runway with his Nikon in hand.

I’m guilty of this, but how many amateur photographers do you know who talk only about their equipment choices, and never about shooting or their subjects? How many times have you heard, it isn’t about the camera? For Bill Cunningham it is clear that the camera is only a tool.

Coq Au Vin Notes


I got a Dutch Oven for Christmas last year, and started what I thought would be a tradition – New Year’s Eve Coq Au Vin. This year I tried the dish again, but, unfortunately, it didn’t come out as well as my previous attempts.

I used Molly Stevens’s recipe. I have Stevens’s braising book which is great for learning the basic techniques.

I purchased chicken pieces with the bone in. I think tried to get too many pieces into the pot, but ultimately downfall was the cooking time. I thought it would be difficult to cook the chicken too long – but I was wrong.

We left the house for a couple hours to visit a party and when we came back to finish the dish it wasn’t possible to get the chicken out in whole pieces – the chicken was literally falling off the bone. This made it really difficult to create the final sauce.

I used fresh pearl onions. Unless I had a lot of time, I think I would use frozen in the future. Peeling pearl onions is very finicky, and adds a lot to the prep-time.

Also if I was cooking for a group, I would consider preparing a day in advance. Braised foods have a property where the seem to get better the next day, and some Coq Au Vin recipes call for leaving the chicken to sit overnight in the refrigerator.

Alden Cordovan AF53 Boot: Long Term Review


If I could only own one pair of shoes, it would be my Alden AF53 Cordovan boots built on the Trubalance last with a commando sole. I’ve worn these boots everywhere and with everything including suits in the winter. Shell Cordovan is a hide from a horse’s rear quarters. One horse can yield two “shells”, or enough for one pair of shoes. The leather is extraordinarily dense and supple, but because horses are not raised for slaughter in the U.S., cordovan has become rare with only one U.S. company producing the leather in any quantity –Horween of Chicago. 4 years ago, I went searching for the ultimate boot. My requirements: durable, stylish, and made in the U.S. (to feed my fetish like interest in classic american products). The internet lead me to Alden shoes. I was fitted at the Alden Shop in San Francisco, and eventually ordered the boots for what I felt was a ridiculous sum of $525. With the recent popularity of cordovan (even J. Crew is selling cordovan these days), the boots now sell for $685 from Alden of Carmel (who has this particular model specially made). Welted boots and shoes are serviceable – that is the soles can be replaced by a cobbler. Shoe repair is a dying trade in the U.S., but it is worth repairing a pair of welted shoes, so had these re-soled with a Vibram sole at Geary Shoe Repair in San Francisco. The boots come with what is called a “commando” sole. The commando sole is a triple sole of two pieces of leather and an sewn in rubber outer sole. Unlike most leather soled shoes, they work great in snow and winter slop. The replacement vibram outer sole was glued on, so time with tell how they work relative to the originals, but the workmanship looks great. Many folks on the fashion forums claim Alden shoes will last “decades.” That may be true, but only if you wear them lightly. I wear these boots like a San Franciscan might have in 1914 – that is hard and everyday. The uppers are showing wear. The liners have ripped at the heel, probably as a result of the roominess of the last. The top two speed lace eyelets are pulling away from the upper. And, as has happened with another pair of my Aldens, there is a break in the leather at the top of the boot where the liner and outer shell meet. But overall they are still serviceable. After 4 years, I have my eye on the J. Crew cap toe boots. The only down side (outside of cost of course) is the lack of the commando sole. I think a boot should wear hard, and I don’t think the leather sole will stand up to Tahoe and N. California’s wet winters. [...]

Rockstars have Bands


A couple weeks back, K treated to me a night out to see The National. The National has been together since 1999, and over that time they have gradually increased their commercial and critical success. By most measures, they are getting better at their craft. In the music industry, this isn’t how it typically works. While watching the show, a couple thoughts kept running through my mind: one, I hope the dude behind me doesn’t torch the place while trying to toke up with a butane lighter; two, the document-everything-on-your-smart-phone phenomena is causing us to lose the pleasure of living in the moment; three, these guys are all really competent musicians in their own right. The concept of the rockstar programmer has been around as long as I’ve been in the business. The term conjures up images of the likes of Jamie Zawinski staying up all night performing heroics by the warm glow of the emacs editor – hitting compile minutes before the latest version of Netscape is dropped on a server for millions of people to download. But in today’s world of increasingly complex and interactive applications, heroics aren’t enough to see a project to success. Successful projects require brilliant developers and designers working together in teams. In other words, even rockstars have bands. Even though The National are bona fide rockstars, other than some antics by lead singer, Matt Berninger, none of the other members of the band stood out. I was caught by drummer, Bryan Devendorf, not by his technical virtuoso, but because the percussion became part of the arrangement and structure of the music. The years of working together had given The National a level of professionalism which most rock bands never develop, because for most, their careers are over before they even start. But The National’s professionalism, their ability to work as a team, has enabled them to thrive in a ruthless business. Years ago Joel Spolsky wrote a highly referenced article Hitting the High Notes, where he argues that hiring top talent allows managers to call on their staff to perform exceptional tasks (hitting the high notes) when demanded by a project. As time has passed, my view of this has evolved. I don’t think it is so much about hitting the high notes as it is playing perfectly within your range. Bryce Dessner, who studied classical guitar at Yale, might be a musical wizard, but when he’s playing the rhythm line in Bloodbuzz Ohio, his job isn’t show of his chops – his job is to carry the song – and make to make look easy (because it is for him). The modern software team isn’t about individuals hitting the high notes. It is about consistency. Standing out as a team, by not standing out as in individual. Making the routine, seem routine, because it is. Today’s software rockstar is an anti-hero who continually strives to perform his or her job competently. [...]

Technologies I'm using and following


The pace of innovation in the software industry, driven by the breakneck pace of the mobile and social networking industries, has picked up again, which has renewed my love of technology. Many bits and pieces are becoming more stable and cohesive. The web is maturing as a platform, while mobile continues in a huge growth phase. Here are some interesting technologies I’ve been using: JavaScript This year I finally sat down and increased my book learning of JavaScript, and I’m glad I did. Yes it has its limitations (no integer type is strange), but I’m finding that JavaScript is powerful when combined with modern tools like jQuery and Flot (more on Flot in a minute). Sure JavaScript has a lot of warts, and I’m not totally sold on some of its features (prototypal inheritance for one), but I also think we could have done a lot worse. I think we owe Brendan Eich credit for giving us a language which has taken us to this point. HTML 5/Canvas A couple years ago, prior to the release of the iPad, when faced with the decision of using the ubiquitous flash versus emerging HTML 5 and canvas, we decided on HTML 5. That has proven to be a good decision. Native applications are still the norm on hand held devices, but I’m becoming convinced that HTML 5 and JavaScript will be UI platform of the future, even if the resulting applications don’t look like typical browser based apps. Flot This is the library we use to implement our charting. Flot is an impressive piece of open source technology. It easily rivals commercial charting engines of the past. Twitter Bootstrap If you aren’t a designer, like me, implementing even the most basic forms in CSS that don’t look hideous is a time consuming process. Bootstrap is exactly what us non-designer types need to launch simple new web applications, especially admin-like applications which are used internally. The other real benefit, in my opinion, is having a standard language for web designers, so they don’t have to re-invent the wheel on every project. I hope Bootstrap takes off just for that reason. The amount of time that has been wasted re-creating simple multi-column HTML layouts is ridiculous. Android I remember 15 years ago us geeks joked both about running Linux and Java on phones. It seemed like a pipe dream, and then a few months ago I realized, I’m carrying a Linux box with a JavaVM in my pocket! When I bought my first Android phone last year, I wasn’t expecting much from it other than a cheap replacement of my failed iPhone 3GS. Turns out I like Android much more than I expected. I’m currently using a Galaxy Note with a 5.3 inch screen. I’ve gotten many jeers about the size of its screen, but overall I’m happy with the device. Hackintosh Sorry Steve, I admit it, I built a Hackintosh. Why? Thunderbolt. Don’t get me wrong, I’m sure Thunderbolt is a great technology which will make everyone 3x more productive, but the only way I can hook up my 3 non-Thunderbolt monitors to a Mac is to get a Mac Pro, and they haven’t been updated in years, and prices start at a ridiculous $2500. When I discovered how far the state of the art in Hackintoshes has progressed since OS X was released on x86’s, I couldn’t resist. I will admit it took most of a weekend to inst[...]

My Hackintosh



I’m not going to into the gory details of building and installing OS X on a PC, but I can verify the following configuration can run OS X lion.

Snapping the hardware together was a breeze. Installing Lion was a bit more tricky.

The system has 24GB of RAM, and SSD Drive, and 3 Monitors. It is a good performer.





The ZR2740w monitor has a problem with pixels blinking when using the DisplayPort adapter. This problem seems to go away with the dual link DVI adapter. This is a problem with the monitor, not the machine itself.

The XFX Double D 6870 video card doesn’t seem to want to drive a Dual-link DVI monitor and two mini display port monitors simultaneously. I’m trying to use this configuration to solve the problem above, with the 2407s connected via mini display port to DVI adapters, and the 2740 connected via dual link DVI. I’m not sure if this specific to the Hackintosh or a problem with the card in general.

I’m now using one the DVI adapter for the HD3000 that is on the mother board itself, so only two monitors are accelerated by the 6870.

I'm not an Apple fan boy. Really!


I’m notoriously hard on stuff.

As an example, last night I pulled into my driveway, hit a rock, and suffered the rare sidewall blowout. In my driveway. I won’t even mention the time I ripped the door off my car. If something can be broken, I’ll figure out a way to do it.

I busted my last top-of-the-line Dell laptop in a way that left Dell’s repair department scratching their heads and sending $1200 repair bills our way. I managed to break the aluminum case of a Latitude e6500 (with a #2 marketing attribute of being durable). I replaced it with a closeout Apple MacBook Pro 17” which I purchased last April at BestBuy.

It is the best computer I’ve ever owned, but I broke it anyway – in multiple strange ways. I broke the power cord. I broke the display. I broke the touch pad. I bent the case. In 6 months I destroyed the thing. I sweated trying to figure out a way to expense the second laptop I’d had obliterated in one year. In desperation I tried Apple’s phone service.

I was beyond my phone service warranty, but they agreed to help anyway. I sent Apple a PDF of the receipt, and they FedEx’d a box over the next day. I sat on it for a few weeks, not wanting to go without a laptop, even in its sorry state of disrepair. I eventually sent it in the Wednesday before the Thanksgiving holiday assuming I wouldn’t need it for a few days, but prepared to go without for a couple weeks. I was ready for a repair bill with a $1500 price tag, but much to my surprise, after Apple sent me a confirmation that they had received my Mac Book, by the time I clicked the progress link, the status had been updated to “repaired” – on the Wednesday night before Thanksgiving.

To whomever in Memphis fixed my laptop in the middle of night on the day before Thanksgiving, you get my thanks! The amazing part is I got the laptop back on Saturday – completely overhauled – new monitor, new upper part of the case, new keyboard, new touch pad, new lower part of the case, new air port (didn’t know it was bad) – I didn’t recognize it. But when I booted it, all was there, just as I left it – my Windows partition and all.

After years of being a Dell corporate customer, I’m impressed. And I’m not easily impressed.

Steve Jobs and the iMac



When I think Steve Jobs, I think of one humble product: the original iMac.

It is easy to forget how dire the situation was in 1997 when Apple purchased Jobs’s failed NeXT computer company and he stepped in as interim CEO. Apple was on the verge of being an after thought in an industry with no patience for nostalgia. In 1996 the company shocked analysts by turning a $25 million profit in the 4th quarter, but ultimately lost over $800 million on the year.

In 1997, Apple’s software stack was based on the dated MacOS 9. Most popular software was written for Microsoft Windows, and their market share was quickly dwindling to an unsustainable 2%.

As the new interim CEO, what could he do to save the company? There wasn’t time to release a new operating system – a boost that the company desperately needed. But there was time to repackage the technology they had, and that’s literally what they did. First in translucent Bondi Blue, and then in the colors of the rainbow. The iMac was simple and fun – something that couldn’t be said about the generic beige boxes being turned in mass by their competitors.

The iMac capitalized on the growth of the internet which was platform independent. And even without the software support of Windows, MacOS and the iMac was useful for people who wanted browse the web and write email. And it worked. The iMac made Apple relevant again, and ultimately saved the company.

I believe what makes Steve Jobs an icon, was not just his visionary leadership, which he will be remembered for, but his brilliant business savvy. If you are going to be something great, you must first continue to be. The iMac kept Apple alive long enough to see them through the release of OS X and onto the iPod which ultimately allowed them to create the revolutionary iPhone and iPad.

And that’s the lesson I learned from Steve Jobs. To realize your vision, you must first conquer the problems that lie in front of you.

I thank Steve Jobs for making the impossible seem possible.

'Sign In With Twitter' Example for App Engine


There are many examples of using the Twitter OAuth API, but there weren’t any (as far as I could find) which show how to integrate Twitter’s delegated authentication, which they call Sign in with Twitter, with App Engine apps.

That is until last night when I committed my sample app to GitHub: App Engine Sign In With Twitter Example

Video: It's going to be big!


I’m not exactly proud of it, but I wasted a few braincells watching YouTube on a Saturday morning a couple weeks back. It started innocently enough. I was reading up on the situation at Fukushima, and came across Evelyn Mervine’s interviews of her dad Mark Mervine. But those pesky suggested videos kept grabbing hold of my mouse pointer, and I kept clicking. When I’m browsing around on YouTube, I oddly find myself drawn toward aviation videos – who isn’t intrigued by 747s making low clearance landings over a beach in St. Maarten? Clicking the aviation links found me in the midst of Radio Control (RC) airplane geekery. On YouTube, RC is ruled by Dave Powers, whose long, long tail channel, has attracted 10s of millions of views – yes millions. I couldn’t help but get sucked into Dave Powers enthusiasm for topics such as adding gyros to home built foam RC planes. After watching these I started thinking, “Wow, this guy really likes gyros! I need some more gyros in my life!” Although the videos have a home-spun-edited-with-iMovie feel, the fervor for topics like high-alpha flying and the advantages of air-brakes makes them entertaining. Entertaining enough for RCPowers to sustain a small business selling plane plans off the traffic generated by YouTube. It might be easy to dismiss RCPowers as a fluke that went viral, but then in another click, you dive even deeper into the long tail rabbit hole. Check out FliteTest. FliteTest is a near production quality weekly video with a cast of scripted characters, all about, you guessed it, RC Planes. FliteTest is produced by StoneKap, a small shop in Ohio with a few HD cameras. This caught my attention, as YouTube has gone way beyond a guy with a webcam playing Sweet Home Alabama in his bedroom. As I clicked the hours of my weekend away, I began to realize that while everybody has been busy talking about social strategies on Facebook and Twitter, YouTube has been quietly blowing up into a billion dollar business. Which lead me to another realization: video is going to be big! Ok, so maybe I’m a bit late to this realization, but I think the boom is just beginning. Last fall I had a conversation with the CEO of, Peter Urban. Peter told me about his business of creating online talk shows, and his bullishness for online video. He mentioned how he was creating multiple studios to record his shows at different locations around the world at a reasonable cost, and how internet video was quickly catching traditional TV for advertising in the critical 18-25 demographic. At the time, I started to wonder if these studios could be also used by executives to record presentations for their companies. Video is becoming so pervasive, I believe investors and customers will begin to expect more transparency from executives they do business with. As an example, Apple produces videos after every major product release – here’s the latest for the iPad 2 release. Plus all of Steve Jobs’s keynote speeches are available as well. As an investor in mortgage REIT, Annally, I appreciate the quarterly reports by CEO Michael Farrell. I have a better understanding o[...]

37: one more down


This weekend was my 37th birthday – solidly putting me into middle age. Birthdays, like New Year’s, are a time for reflection. I spent sometime considering my resolutions and some predictions at the end of 2011, and it is a good time to check in.

Conclusion? Last year wasn’t a bad year, but it wasn’t a standout either. I could be doing better on my resolutions all around. The most import of which is to review my to do list daily. I keep coming back to the late Randy Pausch’s talk on Time Management, which was recorded near the same time as his famous Last Lecture, but I find it difficult to achieve Pausch’s zen level of productivity. This sounds counterintuitive, but to do more, I need to plan to do less – or in other words, be more realistic about what I can accomplish.

I’m not a morning person. I never have been, and probably never will be. I’m much more productive at night, so to take advantage of this I will prepare my daily task list for the night before, and email it to myself.

I will follow up on the status of my 2011 predictions.

2011 Predictions Update


My recent birthday, which neatly almost coincides with the end of the first quarter, caused me to pause and take stock in my predictions for 2011. I think my general economic of assessment of stagflation has been right on. We are seeing both commodity prices, including oil prices, continue to rise. The U.S. stock market is flat to down for the year. I wouldn’t have predicted the political turmoil in the mid-east, but I think in these times it is best to plan for the unplanned. Japan We visited Tokyo last year. It is a stunningly efficient modern city, and it is difficult to imagine the country brought to its knees by the horrendous results of this earthquake. Although demographics are not on its side, I believe in Japan. Their determination and focus on efficiency and quality will see them through this crisis, and they will come out of it stronger than ever. One odd effect of the earthquake is the rise in the Yen while the Bank Of Japan continues to inject liquidity into the market. Japan is less likely to be a net buyer of U.S. treasuries as they invest domestically to rebuild their cities and economy. Currency traders maybe pricing in the possibility of Japan becoming a net seller of U.S. debt. Japan buys U.S. debt to constrain the value of the Yen to make their exports more competitive. The end result could be even more inflationary pressure in the U.S. as the Japanese supply chain is disrupted and the value of the dollar falls relative to the Yen. I think Taiwan, South Korea, and of course China will be the beneficiaries of this crisis. It is unlikely that production will move back to U.S., instead it will increase the speed at which production is moved out of Japan and toward the rest of Asia. Real Estate I’m increasingly bullish on prime Real Estate in the U.S. which again I believe will rise in the face of inflation. This is already becoming the case in S. Florida, which has flattened and is starting to rise. I’m still bearish on suburban and ex-urban housing (which I believe is one reason why new home sales numbers are hitting new lows). There are still large amounts of inventory to work off in less desirable areas that do not have established economies. I’m personally wondering if makes sense to buy on the Central Florida coast, an area I’m familiar with. The region is seeing downward economic pressure from planned end of the Space Shuttle program (which by the way is a move I support. The future of our space program lies with private companies like Scaled Composites which is run by one of my hero’s: Burt Rutan, but I digress), but prices for coastal properties are a fraction of those on the West Coast. Commodities I doubt there will will see as much rise in precious metals as we have in the past couple years, but I’m still bullish on energy commodities, especially natural gas. There is has been a disconnect between oil and natural gas prices (while oil has risen dramatically, natural gas has been down to flat). Eventually the U.S. is going to be forced to listen to T. Boone Pickens and exploit our own energy resources. R[...]

Is Amazon Prime a Good Value?


Yesterday I wrote an entry about my addiction to Amazon Prime. I wanted to believe it was universally a good value, but @PSchammy on twitter prodded me to dig deeper. Is Amazon Prime really a good value for common household supplies? I have been dubious about the economics of shipping large and inexpensive items via 2nd day air delivery. I keep wondering: how Amazon can make money on this? So I took a trip over to my local chain grocery store, Raley’s, and gathered these hard numbers: Bounty Regular Paper Towels 8 Rolls from Raley’s: $9.98 $1.25/roll 30 Rolls from Amazon Prime w/ Subscribe and Save: $32.07 $1.06/roll Looks good so far until you compare the price for the Bounty “Big” Rolls. I never knew paper towels came in some many different sizes until I started this project. Bounty “Big” Select-a-Size Paper Towels 12 Rolls from Raley’s: $15.98 $1.33/roll 24 Rolls from Amazon Prime w/ Subscribe and Save: $41.05 $1.72/roll Although I’d have to buy twice the quantity, the paper towels are significantly more expensive from Amazon than my local grocery even when using Amazon’s “Subcribe and Save” discount. Clorox Bleach 82 oz. bottles 6 Bottles From Amazon Prime w/ Subscribe and Save:$19.45 $3.24/bottle 1 Bottle From Raley’s: $2.29/bottle But here’s the real kicker: 1 Gallon (128 oz.) bottle of generic bleach from Raley’s: $1.58/bottle Unfortunately this shows kind of what I expected, even on name brand items like Bounty Paper Towels Amazon Prime isn’t always a better deal than the local super market. It would interesting to compare further against big box retailers like Wal-Mart and Costco, but those places are not convient to my house – Raley’s is just around the corner. It gets even worse if you buy generics like I do. I use quite a bit of bleach because all of my towels and linens are white. I find it is cheap and easy to just bleach them until they are worn out and replace them. But this shows the convenience of buying these types of items on Amazon Prime is a trade off. It isn’t a double win of cost and convenience. This is a disappointment, but I have to wonder if the economics will ever be in Amazon’s favor for these types of household staples. [...]

I'm addicted to Amazon Prime


Last year I ordered a large gift on Amazon and subscribed to the Amazon Prime trial service to save on the shipping and handling. And of course, as Amazon expects, I didn’t cancel my subscription. I then became mildly addicted to Amazon Prime. For $79/year you (and 4 people in your “household” wink wink nudge nudge) can have any item Amazon stocks shipped second day for free. It changes the value proposition of online shopping. Before Amazon Prime it didn’t make much sense to order low cost items because the shipping was cost prohibitive. With Amazon’s low cost shipping option, not only do they use a slower shipping method they also do not ship items as quickly. Even with Amazon’s West Coast shipping center just up the road in Fernley, NV it can take over a week to receive goods as the order is processed in the warehouse. I was planning on writing this entry about how household goods on Amazon are not good value. For instance a Pack of 30 Regular Rolls is $37.73. Although if you sign up for “Subscribe & Save” (Amazon’s subscription service which automatically sends consumer disposables at regular intervals) the price drops to $32.07. You can then immediately cancel your subscription and still save 15%. It turns out I haven’t been able to find a lower price on Bounty paper towels anywhere. Amazon wins. There are only two drawbacks: you have to buy in quantity, and there are no generics. I typically buy generic bleach in gallon bottles, but all Amazon carries is Clorox – although I think this a new item. I also recently ordered furnace filters and ended up buying the much more expensive 3M filters rather than the cheap blue ones I get at the hardware store. Plus those leaning green would not want to see my living room after I’ve been shopping on Amazon Prime. It looks something like this: Everything item ends up in a separate box because there is no advantage in batching your purchases together. It is all: click, ship, click, ship, chick, ship. So if you need boxes for moving, you should contact your nearest Amazon Prime junkie. I’m sure he will have plenty. So this leaves me wondering: after paying 2 day shipping for boxes containing only one time, how does Amazon make money from me? Do they? Am I beating the system? I like to feel like I am, but I suspect I’m merely a pawn to Jeff Bezos’s empire. [...]

Income is not wealth


The New York Times posted an article this week titled: Why So Many Rich People Don’t Feel Very Rich. I find it odd that the concepts of income and wealth, especially when related to tax policy, are used interchangeably, and, often, incorrectly.

** A large annual income does not make a person wealthy. And wealth does not require a large annual income. **

I think wealth and income are confused because salaries are viewed as an annuity that will continue paying indefinitely. This may have been the case when the economy was ruled by large unionized companies who offered life long employment and a trustworthy pension, but more than ever, income is less often derived from a constant salary. For instance many people now own their own businesses, work on a commission basis, or are equity holders in the firms they work for.

Who is richer: a person who makes $50k each year for 10 years, or a person who makes $20k for 9 years and then makes $320k in 1 year? By current tax standards earning $320k in a single calendar year makes one “wealthy,” and subject to higher taxes then the person who earned a consistent amount. It is better to earn a consistent amount sooner as it is possible to earn interest on the savings.

There is some psychology of risk that causes many of us to prefer constant returns and earnings, over variable returns, even if variable returns offer greater overall wealth. Standard deviation of historical returns, which is a measure of return variability, is one of the bedrocks of modern portfolio theory, so even the pros value stability.

But stability nor income is a measure of wealth. Wealth is a function of savings, assets, and debt. It is possible for someone to earn a high salary, while spending more than they make, or paying a high mortgage on a devaluating property to be far less wealthy than someone earning a lesser amount.

A higher income does provide the opportunity for more savings, but many of us, myself included, often fall prey to increasing spending as our earnings increase. The key to wealth is spending less than one earns, and keeping debt in check.


@uuilly provides a link to Thomas Sowell’s article Income confusion.

2011 New Year's review and resolutions


As I mentioned last year, New Years is my favorite holiday. It is a time for reflection and fresh starts. Here are my notes for 2011:

2010 Reflection

Review of 2010 Resolutions

2011 Goals and Resolutions

2011 Resolutions

2011 Predictions: Macro Economic and Political

Macro Economic and Political Predictions for 2011

2011 Predictions: Technology


Xtreme Snowshoeing



Xtreme Snowshoeing

Blowing snow on Highway 88



Blowing snow on Highway 88 Near Kirkwood

South Tahoe Ski Conditions, part 2


When I left Heavenly on Monday it was still snowing lightly which set us up for yet another powder day on Tuesday. On Monday night, I stopped by Shoreline Snowboards to see if they had any alternative lenses to solve the goggle fogging problem I had that day, but in the back of my mind I kept thinking: you need a longer board. Last year I bought a new snowboard, and ended up with a Lib Tech TRS 159, but I’ve been disappointed with the performance of the board in powder. It floats ok, but it really doesn’t cut it in Sierra Cement or deep powder. At the time I took a close look at the 1986 Snow Mullet. First off it has a awesome name. Secondly you can get them LOOONG – I ended buying a 172. The only board Lib Tech makes longer than the Snow Mullet is the Skunk Ape (which is available in an amazing 180). If you ride in the Sierra, buy a longer board, you won’t regret it. If you spend time at the Tahoe resorts, you will be riding crud, and when it comes to riding crud, the longer the board the better. So Tuesday, the day after a powder day, I wasn’t expecting much, except that the Canyons were due to open for the first time after the storm. As soon as the lifts opened I high tailed up to the Dipper lift, only to find out that the Mott lift was still being dug out. I asked the ski patrol what the opening time was for the canyon: 10AM. I headed down to Dipper where I ran into an old friend and colleague. We took a couple runs and headed back to the Mott gates. It was a freakin’ zoo of people waiting for the gates to drop, but most folks were lined up to head out the ridge between Mott and Killabrew where the ultra-steep runs like the Y and Snakepit are located. We planned to head back down to Dipper, but the we noticed there were fewer people at the lower gates, the lift was running, and the ski patrol was there ready to lift the ropes, so we waited for a few minutes. The patrol let a few people through. It turns out they were shooting this video. Most of time when I watch these videos, I think, “that’s BS, it never looks like that.” But a couple minutes latter the ropes dropped, and we followed them into Mott, and it was no BS. When the gates went down, the ski patrol was yelling at people jumping the ropes. I was trying to strap up. Some skiers went into the gates, but then acted like they didn’t know what to do. I finally got my board on and gunned it through the gate, and dove past some folks yelling back at their friends – what they were doing, I have no idea, but when I got past them it was wide open powder. I was one of the first people down the front of the canyon. It was the best run of the season, and one of the best of my career. The brand new 172 Snow Mullet was flying. I barely leaned back and I was maching down the front face of Mott Canyon. The board was built for this run. I flew over a rock and held on, and blasting down to the[...]

South Tahoe Ski Conditions , part 1


What a week. On the back end of the huge, but warm storm that blew through the Sierra last weekend was a foot plus of light, dry powder. I was surprised when I showed up at the tram @heavenly on Monday morning to see folks already ripping up all the snow on the Face. I messed up the opening. The lifts were running holiday hours – 8:30 open – rather than the typical mid week opening of 9:00. Good powder days are fairly rare on the Face because of the low elevation, so this was bummer. I threw on my boots and ran up to the tram which was already boarding. I couldn’t bring myself to look out the window and watch what was happening to all the new snow. When I got to the top of the Face, I strapped up and started traversing out in what is now marked on the map as “East Bowl Woods.” It didn’t take long before I above some untracked lines. Recommendation: if you are traversing, and you see a good line, take it. I think there is some sort of grass-is-greener herd mentality that happens on traverses. The longer you traverse the more elevation you lose. So I nosed down and was ripping up my own lines through the light layer of new snow. As I reached the bottom of East Bowl, I started bottoming out, hitting the now frozen layers of Cement underneath. I cut over to the chair and headed back up to do it again. The Face is a elevator shaft and classic ski run of near constant pitch top to bottom. It isn’t weak-in-the-knees steep, but it is consistent. The only bump runs that beat it pitch per length in Tahoe are on the West Face of KT-22 @squaw, but let’s stick to its merits on a powder day. Heavenly gets a bad rap as not being a true skiers mountain, and some of that is deserved. Heavenly doesn’t have the in-your-face, chest-beating expert terrain of Squaw, Kirkwood, and Alpine, but there is some pretty damn respectable terrain if you know where to look. One of the places to look is climbers right of the Gunbarrel chair. The old lift line used to run higher on the ridge than the current quad. There is a ski patrol hut there now. On a powder day, when everybody is running over themselves to get to the less steep terrain off of Sky Chair, spend ten minutes to climb to the top of the ridge above the Face. I post holed (sometimes up to my waist) my way to the top of the ridge on Monday (wishing I had my telemark skis). My time was rewarded with foggy goggles and nearly untracked snow. One other boarder went by as I strapped up, and that was the only person I saw up there. So I headed down to the best run of the year which I navigated with dead reckoning as I could hardly see a thing through my steamed up goggles. At the bottom I headed to the car and called it a day. 3 1800’ powder runs and I made it to the office by 10AM. Note to Heavenly. I wish the lifts would open at 8:30 everyday. [...]

South Tahoe Ski Conditions: Tahoe ain't Utah


There is a significant winter event moving through Tahoe this weekend. This is an old-school high moisture Sierra storm. The storm started Friday morning and is expected to linger into next week. Yesterday morning brought some snow at lake level which quickly turned to rain, as the snow level moved to about 7000’ and stayed there all night. It is still 36 degrees in South Shore and messy, but the roads in town are clear. I made it it up to Stagecoach @Heavenly this afternoon. The entire upper mountain was on wind hold and it was snowing at the parking lot. From what I heard, the snow was so heavy on Upper Kingsbury that snow blowers were having a difficult time moving it. 2+ feet of heavy, dense, water laden snow has fallen above 7000’. I often hear from non-skiers, “There is snow much snow, the skiing must be great!” Well there is snow and there is SNOW. The snow that we are getting over here on the South Shore is what Tahoe skiers loving refer to as Sierra Cement. Which brings me to my point: Tahoe ain’t Utah. Utah’s state motto is, “Greatest snow on earth.” If Tahoe had a similar motto it might be something like, “We get a lot of snow.” Sierra Cement doesn’t have much in common with the light, fluffy, blow-off-the-palm-of-your-hand stuff they get on the other side of the Great Basin. It is more similar to, well, wet cement. Help I’ve fallen and I can’t get up If you’ve never skied on the West Coast (our friends in the Pacific Northwest get their own variant of the ultra-dense snow) Sierra Cement can be difficult to explain. When I first arrived in Tahoe from back east, I didn’t know what to make of the stuff. “Huge dump let’s go!” I remember my first experience at Sierra @ Tahoe and thinking, “Wow, I’ve never seen the condition of TOO MUCH snow.” There were snowboarders laying on their boards like surfers paddling into the line up and others yelling warnings from below to not head down ungroomed runs. A couple years ago we had a huge late season storm which dumped over 3 feet and blew out quickly. It left us with a bluebird “powder” day. When the lifts started turning they whisked us over an entire mountain of untracked lines. It had been a thin year, and I was desperate to dive in. I got off the lift and headed straight into the untracked powder, weight back, board up… And I immediately fell down. And I couldn’t get up. And once I did, I fell down. And couldn’t get up. And I fell down… Finally some other folks went on ahead and cut a trail. I eventually got to my feet, lined up with one of the cut tracks, and started straight lining down the mountain thinking, “please don’t fall, please don’t fall.” Then, at full tilt, I came over a ridge and there was a young lady right in the middle of the track. And I fell… right on her. We became a tan[...]

South Lake Tahoe Ski Conditions


I was fortunate enough to get a few runs in @Heavenly this afternoon on a splendid bluebird day – these are the days it pays to live in Tahoe!

We had a warm storm move through the Tahoe area on Monday which brought mostly rain even up to pass elevations until Monday evening. The temperatures dropped significantly last night leaving about 6” of cold new snow up to about 7800’ with more at higher elevations.

It was clear and crisp on the mountain which keep the snow in decent shape. I made my first runs of the season in Mott Canyon, and I’d estimate that new snow measured over a foot in places in the Canyon.

At higher elevations, the deeper snow tended to be heavy and crusty in places due high temps and water content at the beginning of the storm. The stream is open under the Mott lift and there is still a ton of rocks and trees showing, so use caution.

Lower down on the mountain near Stagecoach, base depths have decreased from a few weeks back due to the warming trend we had last week and the rain at the front of the storm.

Kirkwood must be in excellent shape as they were reporting snow throughout the storm – wish I could spare the time to head out there.

South Tahoe Ski Conditions


I just came down from Heavenly. Here’s a quick update on the conditions:

We are off to a good start this year. Thanksgiving saw some of the best early season conditions since 2005. I was expecting a little less this week as temperatures increased dramatically going into the weekend. We received some rain at my house down near lake level, which I assumed would make the conditions hard and fast.

I grabbed my snowboard late this afternoon with the intention of getting some exercise on Stagecoach (which just opened Friday). Much to my surprise there was some decent new snow up higher on Stageline under the chair, which made darting in and out of the woods over thinly covered stumps, logs, and rocks rather entertaining.

Lower Olympic and Stagecoach were still pretty hard from the warmer temps, and I used the conditions there as an excuse to practice riding switch.

Coverage is fairly thin, but as it is still the first week of December, overall the mountain is in good condition. Stagecoach, the Face, and Mott are all open.

As an aside, there was a strange inversion going on. I wish I had grabbed my camera. Carson Valley was socked in the clouds, which gave the impression of a vast sea 4000’ feet below the top of Heavenly. I’ve seen this happen over the lake, where it can be dark and overcast at lake level, and warm and sunny on the mountain, but I haven’t seen a similar effect over Carson Valley. Must have been a dreary day down there.

Volvo 122


This Volvo 122 pulled up next to me at the 76 on Geary and Park Presido. I see a lot of strange, vintage cars out in the Avenues in SF -- many of which appear to have been in constant service. This one was piloted by a young man, Handy Grant, who put it back on the street. Grant has a handyman service in SF: Check it out.


Tahoe Tech Talk


Gary Vaynerchuk brought his show on the road to Tahoe, hosting his own Tahoe Tech Talk conference. I was stoked that a conference of this caliber was being held within a mile of house. The Tahoe "tech" scene is pretty much non-existent, so it was fun to talk to so many people about the the cool projects they are working on. Also now that Chris Sacca is working out of Truckee, bringing some cred to the region, it is probably time that those of us working in technology in Tahoe start to organize ourselves a bit better. It is not without challenges, but it is possible to run a tech company out in the mountains. I have a lot of respect for Gary. He is a self made man who has shown the world how to build a brand around your passion, and use the internet to promote the hell out of yourself, and your companies. Many technologists undervalue personal branding, at the same time, many successful tech companies also have personal brands around their products: Fog Creek with Joel Spolsky, 37 Signals with DHH and Jason Fried, Crowd Favorite with Alex King, and Matt Mullenweg at WordPress. The founder of our company built the company on the back of his own personal brand and before blogging existing he wrote newsletters to our customers. You weren't just doing business with a company, you were doing business with a friend. The message that Gary is preaching is real, and I believe in it. Most people I spoke with at the conference felt it was a great "authentic" experience and seemed truly jazzed about it, but I left feeling mixed about the experience. Other attendees mentioned the "value" the conference offered, but for people who traveled to go the conference the total cost could have easily approached $1000. I personally paid $350 out of my own pocket for my ticket. That's saying that I felt seeing Gary Vaynerchuck speak live was more important than an iPhone 4, or making a significant loan on kiva. Others felt it is was more important than investing it into their own startups. Every person sitting in the audience of the conference was a customer of VaynerMedia, and hence Gary's customer; more on that in minute. Dave McClure's shtick is a cheap publicity stunt. Acting like a jerk might be a way to build some notoriety, but it is unsustainable. After hearing Dave's talk (which was funny in a late night stand-up comic sort of way) and seeing his behavior during the question and answer segment, I couldn't help thinking this is exactly the stuff that gives VC its reputation. After McClure's talk, the mood devolved into a locker room game of one-upsmanship, where the winner was the rudest and most vulgar. After AngelGate and shouting matches with Mike Arrington, and today's F bomb br[...]

Baus's classic wet shave kit


I have a bit of a retrogrouch streak, which is odd for somebody who earns a living working in technology. New might be faster and cheaper (for the manufacturer, but not always the consumer), but faster and cheaper aren’t always better. As a broke college student, I went shopping for razor blades. I was a Gillette user, and decided to give the store brand blades a try to save a few bucks. I never made that mistake again. It was like shaving with a putty knife – and old rusty one that had been put to use opening beer bottles. About the same time I took a job working for a company that made statistical manufacturing software and Gillette was a customer. The sales guy mentioned how tight Gillette’s quality standards were and how hard it was to turn out millions of blades of high quality, which Gillette did of course by using our software, and I was from then on a dedicated Gillette Sensor guy. That was until last year. I was down in SF, and I forgot my razor. No problem, I’ll just head down to Rite-Aid and buy another. The handles are traditionally nearly free as they are only a vehicle to sell more cartridges. But I couldn’t find a handle that took that old two bladed cartridges that I had been using for the last 20 years. Instead there was a new handle that only worked with 3 bladed cartridges. There is a reason these cartridges are held in a locked display case – they cost more per ounce than a hand made Samurai sword. At the same time, I felt that Gillette’s quality wasn’t what it once was, and these f-everything-we’re-doing-five blades were just a marketing gimmick to put more money in Warren Buffet’s pocket. There had to be an option other than paying Gillette’s blade extortion fee, so I did some research on ye’ old internet. Little did I know (well this is the internet) that there is a whole community of people who dedicate themselves to the pastime of shaving, although I had never considered shaving a pastime myself (more like a dreaded morning task before running out the door). I added “safety razor” to my wish list, and last Christmas my wish was granted with my first wet shave kit including a classic double edge safety razor. Since then, I’ve become a convert to classic wet shaving with a double edge razor and traditional soaps and creams. Not only do I get a better shave (if I’m careful) the overall cost is lower than cartridges razors. It costs about $100 to get started with a high quality wet shave kit, but then your savings increase dramatically as replacement blades cost pennies rather than dollars. And with time, I’ve actually come to enjoy shaving. So here’s my recommended[...]

Will There Be a Third?


A recent quote by Steve Ballmer in an article by analyst Stephen O’Grady caught my eye: “We’ve had the two most successful software products in history: what makes you think there will be a third?” It isn’t clear if this is a direct quote, but it does point to the fundamental problem that not only Microsoft, but all mature technology businesses face. Once you succeed in building a meaningful business, how do you sustain and continue to grow? The technology industry is littered with the corpses of companies that had great success followed by great failure. We have some photography buffs in the office and Kodak has come up as an example of a business that was not able to cope with changing technology trends. It is easy to criticize Kodak for missing out on the digital market, but the digital market couldn’t easily replicate the billions of dollars in high margin reccurring revenue that the traditional film business generated. In 1999 Kodak earned $14B in annual revenue, almost all of which came from traditional film products. Inflation adjusted, just to maintain their business, Kodak would have needed to generate over $16B in revenue in 2009. To put that into perspective Google generated $23B in revenue in 2009, and following their merger with Macromedia, Adobe, which could be considered one of the leaders in digital imaging, generated total revenues less than $4B. So for Kodak to fully bridge the gap from film to digital, they would have needed to create a digital business 2/3 the size of Google or 4 times the size of Adobe, while their core business was withering away. Even if Kodak had succeeded in generating billions of dollars in digital revenue, more than likely it would have come in a much lower margin business. It isn’t impossible, but the chances of rebuilding the entire company’s revenue stream in 10 years are slim. Having attended RIT, often referred to as Kodak U, Kodak is a company that is near and dear. They knew digital was coming. They released the first Digital SLR system in 1991, and were pioneers in commercializing CCD technology. But when trying to replace billions of dollars in revenue, every opportunity looks comparatively small. A business as strong and profitable as Kodak’s traditional film business isn’t something you stumble into everyday. I think Microsoft will soon be in the same position as Kodak. As the market moves away from desktop productivity apps to hosted services, they too will be faced with having to replace billions of dollars in revenue with a massive new business opportunity, that they’ve yet to tap. In 2009, Henry Blodget, had this to[...]

Quirky Cloak


I wrote a quick review of the Quirky Cloak on the wiki.

Confluence Configuration on Linode


I have to thank one of my colleagues for asking me to review Atlassian's enterprise wiki, Confluence. I'm sold on using wikis for software project management, and while I've used SocialText for that task for years, Confluence is a significant improvement.

I am so enamored with Confluence that I decided to use it as my own personal wiki. I was hoping Atlassian had a hosted solution for a small number of users, but unfortunately their hosted solutions start at $150/month.

Confluence was built as locally installable software, and Atlassian's hosted offering is simply a service to maintain a Confluence instance on your behalf. Unlike true SaaS systems like SalesForce, Confluence wasn't built from the ground up as a multi-tenant hosted service.

But what Atlassian does offer is a $10 host-it-yourself starter license for up to 10 users with full support. Proceeds from which are donated to charity. Considering the quality of Atlassian software, this is a great deal. The drawback is, well, you have to host the software yourself, which isn't for the faint of heart.

Since I already have a Linode virtual server, which, BTW, I'm very pleased with, I didn't think it would be a big deal to install Confluence onto that server. Unfortunately, for commercial software, I found the install to be more time consuming than I would have expected, so I documented my install procedure for those who want to take advantage of Atlassian's starter license in an inexpensive Linux virtual hosting environment.

Note: the instructions are now in the wiki itself.

Application Hosting: The Queasiness of Lost Data


The availability of my website has been extremely spotty recently. I've been aggressive about using third-parties to host my personal data. So far this hasn't been a problem, that was until CVSDude decided to change their business model and name to Codesion and more than tripled their price.

I was contacted by their support and I told them I wasn't happy with the new rate, but they reassured me that if I moved a bunch of code and deleted some repositories my billing would be decreased from $21 per month to $6.99. The higher rate was based on the large number or repos I had. I was willing to put up with the hassle of moving my data to save a little money. It seemed like no big deal, until my account was shut off last weekend with no way to access my data.

I can't tell you how infuriating this experience was. I eventually checked all my records, and to make a long story short, they botched the billing of their new plans and had my account delinquent although I had been paying them right along.

Even after squaring up the billing (and actually receiving a refund for being OVERcharged), I insisted on getting a dump of my repos. This is where it gets really weird. They said if I canceled my account they would provide a dump of my data, but if I stayed with them, it would be $100.00. I've never heard of any company providing an incentive to fire them, so what do you think I did? I got my data and fired them. Fortunately I have never lost any data using hosted services, but this is the worst experience I've had.

I am firm believer in application hosting and I advocate these services to our clients, but now I understand what it is like to be on the other side and not able to access my own data. It is a queasy feeling. I am now much more sympathetic to clients who have concerns, and it gives me new incentive to provide an increased level of transparency for our customers' data. The problem is a few bad experiences like this, puts all data and application hosters on the defense. Podcast 3

2010-02-21T00:00:00+00:00 Podcast 3

I recorded a quick podcast tonight. No big picture ideas, just some discussion on email, calendaring, and task management geekery.

At work I am stuck using Exchange even though Gmail is my mail application of choice. Fortunately a new feature in Gmail (ok it isn't that new; it came out in July, but I just heard about it) which enables it to send email out through third party SMTP servers has made my life much better. It makes it possible to send all my email from Exchange to my gmail account. The only draw back is that Gmail polls our Exchange server using POP3, so emails aren't updated instantly.

I then push my email and calendar to my new iPhone using Gmail's Exchange Active Sync. It is a strange world we are living in when an Apple product talks to a Google service, using a Microsoft protocol.

Finally, I tie my Google calendar together with my Exchange calendar using the Google Calendar Sync program which is a desktop application. Blah, now that's a hack. Why Google doesn't offer a web service to do this is beyond me. Maybe there is a technical reason I don't understand.

I am back to using todoist for task management, but haven't found a great iPhone solution there. I also briefly discuss multi-tasking on the iPhone, and the reason I bought an iPhone over the Motorola Droid. Simple things like scrolling web pages are still glitchy on Android. Plus when Android phones start shipping on AT&T this spring, it will be possible to use both platforms on the same carrier. Thus far my experience with AT&T has been fine.

Resolutions for 2010: Become a content production machine. Do what is important.


New Year's is one my favorite holidays as it comes with the least responsibility of all the major holidays. There is nothing to do except have a good time. No turkeys to cook or presents to buy. K keeps a scrap book of mementos and looking back, even with all the economic craziness, 2009 was a good year. We traveled, went to a lot of shows, got some work done, and our families saw good health. Last spring, when the market melted down, I thought I would be out of a job. Fortunately that didn't happen, and in many ways our team came together which made us even more effective. I'm optimistic about 2010. Although the U.S. has some systemic problems that we haven't come to terms with, our fundamentals are right. In times of crisis, it is best to embrace the fundamentals. I appreciate the customary self critique of resolutions. A resolution doesn't need to be self deprecating, but a recognition that no matter how well things are going, there is room improve. My resolutions this year are a bit odd (sure I need to lose 15lbs, but that isn't anything new). My resolutions are to become a content production machine, and do what is important. Become a content production machine It sounds kind of strange to aspire to become a content production machine, but I wrote last year that I had started to take the internet for granted. I acted as if there will always be another day to express my opinions, but if history is a guide, that might not always be the case. I have more power of expression at my finger tips than in the entire history of mankind. That's not something to take lightly, as there are many places were the internet is already tightly control and freedom of expression limited. I am very fortunate to live in a country with a strong foundation in freedom of expression. Also the ability to create content is increasing quickly. Writing is just the beginning. Video and (and to a certain extent) audio is going to be increasingly huge in the next couple years. It takes a lot of energy to write. I'm busy, I'm tired, I don't have the mental energy to write, but why limit myself to writing? It could very well be easier to just record my thoughts in a audio cast or video log. I definitely think doing something is better than nothing. Do what is important One of my biggest influences from 2009 was the late Randy Pausch. I was a late comer to Randy Pausch's work, but I've never heard anyone put the meaning of life in such concise terms. If there is one lesson I've [...] Podcast 1

2010-01-02T00:00:00+00:00 Podcast 1

I just finished my first podcast in the theme of becoming a "content production machine." It is pretty rough, but you have to start somewhere.

Here's a couple links that I mentioned in my podcast:

Randy Pausch Time Management Talk from 2007

Randy Pausch Time Management Talk from 1998

Dharmesh on Inbound Marketing upgraded


I just finished a significant upgrade to I regrettably let the site atrophy to the point where I wasn't sure how it is was running. felt like a messy desk. While I could get other work done, it kept nagging me every time I looked at it. While I haven't made any aesthetic changes yet, I did complete the following tasks: Download pyblosxom blog code to my Mac and get running in WingIDE. Get Subversion plugin that hosts my entries running on Mac. Make some code updates to take advantage of the Python Subversion API changes. Get pyblosxom core running under WSGI on twisted. Research re-enabling comments (decided to make it another project). Move static content to S3. Move image hosting to Flickr. Centralize code and content into a singly rooted Subversion repo. Load javascript libraries from Google. Upgrade from statcounter to Google analytics. Create CentOS VM on VMWare Fusion to stage deployment. Configure nginx to proxy to twisted and feedburner for my feeds. Upgrade memcached and libevent. Centralize logging for all services. Document the installation process. Write startup script. Provision new Linux VM from Linode. Perform installation on Linode. Update DNS to point to new installation. This project ending up costing tens of hours of my personal time, and there was a point that I was ready to scrap the whole thing and move to WordPress. But I'm glad I finished the project. I use to try out technologies in a pseudo production environment, and having my own personal content in total disarray didn't sit well with me. I also realized that my previous experiments with using Subversion to store my blog content had a direct impact on a project we are working on which uses Subversion as the back-end of a content management system. I had confidence that it would work after running this way for years. I take pride that in my free time I've created a system from end to end including system administration, Python development, and some basic CSS/HTML hacking, which includes a pretty novel use of Subversion. That might sound silly for something as small as, but I think there is something to be said about building an entire system no matter how small. As a project manager responsible not just administration or software, but whole systems, at some point I have to walk the walk to maintain credibility. If all I do is go from one meeting to the next projecting ROI, d[...]

Joel: What should we do when things don't go according to plan?


After the Business of Software conference, I was reading over my notes when I saw on Twitter that Jason Calcanis was hosting his TWiST show at the BoS venue and was going to interview Matt Mullenweg of WordPress along with Joel, so I tuned into the webcast. After Joel took the stage with Jason and Matt they started joking about how Matt, at 25, had done more that day than the rest of us will do in our lifetime, and Joel said something rather unexpected. He stated that he was "wrong" about the direction of one if his early products, CityDesk, which was a desktop content publishing/blogging system which Joel used to publish his own blog (and apparently still does). After reading Joel for years, and having been a former CityDesk user, I was a bit shocked to hear this as CityDesk has been quietly swept under the carpet. The last official "News" item about the product was an announcement about Vista support from 2006. About a year ago in his blog forum he basically admitted that CityDesk had been unofficially end-of-lifed, which lead to the following comment by Mark Major: ...I used to visit the Fog Creek site twice a week - for !a year! after the last CityDesk version in 2003. Thinks me: "Any day now, any day now." "It's cool already, it's gonna be *so* cool when they fix that little complication with my article loops." Such a shame that CityDesk ate the CEO's children, causing massive abandonment of the project, subsidence of world peace, etc. Now all we CityDesk users can do is stare at the glamorous office pictures and wish one of the much revered 'twenty power outlets at each desk' programmers gets tasked with a revamp for us. Inspired by Rands BoS talk on improv, or "talking shit" as he would say, as Jason started taking questions for Joel and Matt from Twitter, I fired off the following tweet which he read on the show: Warhol's future has come and gone. On the internet everybody is famous not for 15 minutes, but 15 secs, and I just blew mine. It's all down hill from here. If there is one writer I look up to as the standard bearer in the software industry its Joel (ok JWZ is pretty damn good too). He defined personal branding and what Dharmesh now calls inbound marketing while never talking about branding and talking very little about marketing. He just did it. In a post from earlier this month Joel describes Kathy Sierra's brilliant con[...]

Business of Software 2009


I'm winding down from Joel Spolsky's Business of Software Conference which was jointly organized by Red Gate's Neil Davidson. The conference exceeded my expectations from the food (they even fed us on the way out the door; I think I gained 10 lbs), the venue (the wifi worked even though my laptop didn't), the speakers (the Pecha Kucha was hilarious), and the support staff that was actually (wait for it) friendly and helpful.

But what differentiated this conference were the attendees who came from all corners of the globe -- some working in one or two person shops, some just setting out on their own, others who paid their own airfare and hotel. People came because they wanted to learn, and they paid their own way to do so. While I was fortunate that my registration was covered by my employer, I wondered if I would have attended if it wasn't, and I would honestly say, yes, I would.

The conference was like being in a classroom of 300 students were everyone was the best student in the class. On Monday morning, I took a seat and was immediately greeted with a "Hi, I'm Johh, and I'm here because I have[xyz business issue] that I would like to find a solution to." And that wasn't the exception. I've never witnessed anything like it. It is a tremendous conference.

I'm currently reviewing my notes which should provide a lot of fodder for new entries. There was so much information in such a short period, that my neurons are just now finishing processing it all.

Jay Farrar and Ben Gibbard


(image) Jay Farrar (Uncle Tuplo, Son Volt) and Ben Gibbard (Death Cab For Cutie, Postal Service) recently collaborated on the sound track for a Jack Kerouac documentary, "One Fast Move or I'm Gone", and performed together with a small band at Bimbo's in North Beach last night.

Bimbo's is a tidy, classic, theater with plenty of acoustical dampening, a quaint bar, and seating for dinner. The contrast is stark when compared to the shows we've attended at the Fox Theater in Oakland. While the Fox has benefited aesthetically from a recent renovation, the sound, to put it bluntly, is awful. It echos like a gymnasium from the floor to the balcony, which was particularly troublesome with the act we've seen there including this week's Echo and the Bunnyman.

(image) Ben Gibbard looks like a new man. He's lost weight, grown his hair out, dropped the glasses, and got his jaw line back. Jay Farrar: he's a bar room rocker in a cowboy shirt.

I saw Jay Farrar with Son Volt at the peak of their career in Deep Ellum in Dallas, TX. They were big in Texas at the time, and the humid, sold out show stands out in my memory as a highlight from those days.

I like the hard edge of Farrar's voice and guitar, although his writing style tends to stuff lyrics into phrase with little regard to meter. His track "California" is prototypical of his recent work, so it isn't surprising that he was able to set Karouac's words to music -- he makes words fit even when they don't.

As Gibbard develops from his iconic boyish pop sound, working with Farrar was a smart move. For longevity he needs, for lack of a better word, more masculinity. Farrar's potential for rock star status has long passed, but his I-drank-one-too-many-bourbons-before-coming-on-stage style will net him a long carreer; it ages well.

HP 110-1030 netbook


Before our recent trip to Kauai, I bought an HP netbook. I typically use hulking desktop replacements that are clunky, hot, and have a short battery life. They mostly suit me fine, but they are terrible for traveling. It was kind of an impulse buy, and I went with what was locally available. I bought HP 110-1030 which uses the common Intel ATOM architecture. When the netbooks first came out, they mostly used a small SSD and ran Linux. Today almost all the netbooks available retail have 5400RPM hard drives and Windows XP (soon to be replaced by Windows 7). Apparently Microsoft has a licensing deal for XP that makes it cheaper to OEM if the device has 1 gig of RAM or less, so all the netbooks have exactly 1 gig of RAM (I installed two gigs of RAM, the max the 110 will support, before even booting it up). Since I was looking for longer battery life, I made sure the device had a 6 cell battery. Unfortunately, I didn't realize was that the 6 cell battery is much larger than the typical 3 cell. With the battery installed, a round cylinder protrudes about an inch below the bottom, so the device sits at about a 20 degree angle when it installed. The battery is the biggest and probably the most expensive component in the system, and seems to be place to invest R&D dollars committed to the product. HP needs to find a couple of the hardware engineers they might still have on staff after Fiorina's gutting of the R&D staff and go back to the drawing board on that one. It is a detail that matters A LOT! This is the first time I've bought a computer retail (I typically use throw away Dell's), and I was surprised by hard it was to get any sort of spec sheet for the devices I was looking at. Since the batteries are still quite expensive relative to the rest of the machine, finding out what battery was in the device was important to me, but the spec sheets on the devices were no where to be found. PC netbooks are like buying bullion. I want the most metal I can get for my dollar, as it is pretty obvious few of the manufactures made any significant investments in the design of these devices. After spending 20 minutes on the first boot and install procedure (seriously 20 minutes to get the machine started?) I found that Windows XP insufficient for the small display. HP did nothing to make the config[...]

Weekend notes


This weekend, I missed the first snow in Tahoe this season, but I did unexpectedly catch a speech by one of our Senators. I found the topic somewhat disconcerting, and for awhile I thought I was alone in that thought, but I took comfort afterward in learning I wasn't.

We spent yesterday at Hardly Strictly Bluegrass with about 300,000 of our closest friends, and found Marty Stuart was worth the price of admission, which was free. I always find irony in the fact that Warren Hellman, who pays for the massive three day festival with his own private funds and is often revered by the artists who play there, made his money as a Wall Street financier -- the profile that the same bands often hold in contempt, sometimes in the same set.

But the end result, an arrangement between the public and private sectors, is a great festival and an example of how far private philanthropy can go. I respect Hellman for doing something with his funds rather than hording them to his death.

Start your own bank


I've been refilling my reader with blogs, both old and new. It is a discussion for another day, but I miss blogging and believe the medium is due for a renaissance of sorts. While refreshing my reading list, I scanned an article by Matt Mullenweg that caught my attention. Matt considers starting his own bank. From a professional standpoint I read two types of blogs, technical and financial, and only at the fringes do they meet. So when a decidedly technical blog takes on a financial topic, I take note. As a bit of a disclaimer, I am techy, and my current work does not involve traditional banking per se. In this entry Matt outlines a reasonable, if optimistic, model for starting a new bank. Outside some notions about how the FDIC insures deposits, he approaches the problem as most internet technologists and entrepreneurs would: by assuming that the industry is dictated by market forces. What I think is telling is the tone of his own commenters, many of whom discussed the regulatory hurdles involved in starting a bank. Even if Matt, with what I assume is a sizable book of contacts, could overcome the hurdles needed to start a bank, it is safe to say his initial vision would have to be scaled back significantly. For instance it is difficult to envision how he could pay market rate interest by keeping much larger reserves than all his competitors (who are also FDIC backed). This is why I feel compelled to revisit my arguments against regulating the internet. Warren Buffet in the last few years has made significant investments in railroads as he has believed the fundamentals of the industry had improved as a result of deregulation in the 80s and 90s (disclaimer: I own a small position in BNI). But if an internet tycoon decided to switch careers start a railroad, I believe he or she would be shocked by the regulatory roadblocks, dating back to the railroading heydays of the late 19th and early 20th century, that they would still face. During the dot com boom, the valuations of many internet companies were compared to the early days of the railroads. While many scoffed and claimed the "new economy" (boy does that term now seem dated) was different, the analogy was pretty reasonable. I believe we are now entering the maturity and regulati[...]

Appreciating Quality


Over Labor Day I spent some time ranting about how the quality of jeans and many consumer goods has been on a steep decline as U.S. companies have aggressively outsourced production. It would be easy to write the discussion off as an abnormal geek obsession. Ok that's true. But I do believe that the recognition of quality and craftsmanship is important if you, yourself, want to produce a high quality product. Joel recently released a talk he gave at last year's Business of Software Conference. When discussing the importance of aesthetics in software he made the following comment: You can hire a graphic designer, but unless you actually know how to even evaluate what an artist produces, then you are going to do the Microsoft thing where they apparently hire graphic designers but the stuff is still ugly. Yes. That is exactly it. Microsoft pays a small fortune every year on graphic and product design, but it is very clear that the culture of the company prohibits producing products in good taste, which reminds of the classic MS iPod package design video. Contrast this with Apple and Steve Jobs. Even Steve's wardrobe exudes simplicity, functionality, and good taste, and that aesthetic is visible in their products. In his 2005 Stanford commencement speech Jobs had the following to say regarding his education: Reed College [which Jobs briefly attended and dropped out of] at that time offered perhaps the best calligraphy instruction in the country. Throughout the campus every poster, every label on every drawer, was beautifully hand calligraphed. Because I had dropped out and didn't have to take the normal classes, I decided to take a calligraphy class to learn how to do this. I learned about serif and san serif typefaces, about varying the amount of space between different letter combinations, about what makes great typography great. It was beautiful, historical, artistically subtle in a way that science can't capture, and I found it fascinating. None of this had even a hope of any practical application in my life. But ten years later, when we were designing the first Macintosh computer, it all came back to me. And we designed it all into the Mac. It was the first computer with beautiful typography.[...]

The other side of Net Neutrality


10 years ago, when home internet access was limited to dial-up modems, many discussions in the industry centered on the last mile problem. Completing the last leg of the high speed internet to residences was going to cost far more and be a much bigger technical problem than the commercial backbone. At the time I didn't own a computer because the access I had at home was dwarfed by what we had at the office. In college I had a glimpse of the future when 10meg Ethernet was run through campus, but it would be some time before we had high speed access at home. But then the industry seemed to change overnight. After the dot com boom had gone bust, cable modems got cheap and fast and wifi was everywhere. Almost as if by magic the technical hurdles had been leapt. I remember when I hooked my 1meg cable modem, logged on, and thought: the future is now! Today I have three or more high speed options to my home, all for a relatively inexpensive price. I think few of us in the technology industry take a step back to consider how good we have it. It hasn't been the smoothest ride, but we've witnessed unprecedented growth with few regulatory road blocks and deep amounts of capital to fund the industry's expansion. The internet and internet access has represented the best of what capitalism can provide. We got a massive infrastructure build out at almost no cost to the public. And that's why I'm concerned to see the industry almost uniformly get behind regulating the backbone of our industry: bandwidth usage. There seems to be an ongoing effort to portray certain players in an industry as the bad guys. In the health care industry the doctors are the good guys, and the drug companies are the bad guys. In the case of the internet, the web sites and service providers are the good guys, and the network providers are the bad guys. But running a network is business with extremely tight margins, requiring massive capital expenditures and debt loads. Completing the last mile took a huge amount of risk, and some folks, like Paul Allen lost a fortune in doing so. And we as consumers basically got a free ride. I've been involved with purchasing commercial grade bandwidth at wholesale prices, and to me i[...]

Software demos as QA


A few months ago I wrote how I was humbled trying to record screen capture demos of our product for internal training. My original attempt wasn't too productive. I probably was overly ambitious and set my standards too high. But recently I decided to give it another shot, with the opposite expectations. I lowered my standands and decided to release what ever I created in one take. Well, I was late for dinner, so I had to do it one take. This was more successful and I was able to relay information about the product to our sales team who were able to turn into a polished client presentation. This gave me an idea. We had recently discussed improving the communication between our development and QA teams. We are a pretty small firm, but the idea was floated to create detailed specs of every feature in the system. Now I fall somewhere between the camp that believes every feature requires a detailed functional specification, and those that use the software as the specification. There are times when specification not only clarifies the feature in the project manager's mind, but also gives precise directions to development on how a specific feature should be implemented. But most in most cases, I verbally describe the feature and document it with a bullet point in the notes for a development iteration and give the developers some leeway on implementing it. I believe this is one place that a small team with good communication can way out perform larger teams, and this is a formula that has worked for us in the past. But even if the QA team is involved in the discussions where the feature is communicated to development, because QA isn't involved in the day to day implementation and might miss some context of the background discussion, this can lead confusion about the behavior of the application. With this problem in mind I considered compromise solutions that would provide more documentation to QA, but also save me from writing detailed specifications that would likely be misinterpreted anyway. The idea I came up with was to create a screen capture video of the feature when we felt it was in a completed state as a way to communicate the behavior of the feature to QA[...]

Slightly greater than 0%


Note: While I am not a statistician, this article was heavily influenced by Thomas Becker who is. It has been awhile since I've updated my website regularly. In retrospect, I regret this. 15 years after logging onto the internet, I still believe in the democratization of information that it once promised. Before it was almost impossible to distribute content with any scale, and the media was firmly controlled by the few. If you think the media controls opinion now, remember what it was like before the net. These days to gain any recognition or influence as a content producer (musician, writer, film maker, etc.), you first have to find it on the net. The reason I regret not writing more is I, personally, have started to take the internet for granted. I'm not a statistician by any means, but when you work with numbers day in and day out they start to effect how you view the world. Life involves a high level of chance, and you can only control some of the variables. If you want to achieve your goals you should do everything possible to increase your chances of success, because often the chance for success is already very low. I'm a software engineer. I'm not a writer. I don't ever to expect to be a writer. But I am fortunate to have a forum to speak my opinion, which might influence the larger consciousness. My chances of having a significant influence are very minimal, and I wouldn't expect more than that. There aren't many people who care that a Japanese company they've never heard of is manufacturing in the US for reexport to Japan. I suspect many would find it inane in the same way I find football statistics inane. But maybe an economics grad student will Google 'U.S. manufacturing' read my post on the topic, and find that this is an odd phenomenon, which leads to more research, which then leads to an article in the Economist. The chances of that happening are very low, but if I hadn't written it, the chance of having any influence would be exactly 0%. I know this with certainty, and that's why I regret not writing more. At the same time I don't want to go overboard and spend all of my time writing, because my return on tha[...]

In Search of American Jeans on Labor Day


Some American made goods for Labor day... Today, while perusing the web site of one of the few companies in the U.S. which sell the Japanese jeans I wear, I saw a product by the Japanese apparel company, Sugar Cane, jeans made in the U.S., that caused me to pause. I had just documented some of my U.S. made goods, and high quality U.S. made jeans are something I've been seeking for years, but they are almost unobtainable in the U.S. In these days of economic turmoil, huge trade and federal budget deficits, this begs the question that I believe is at the core of our economic problems: Why is a Japanese denim company making jeans in the U.S., when few American companies do? Japanese vintage It was a freakish sight. We carried the 4x8 foot cabinet across the dark stage over what looked like a failed arson attempt and a puddle from the leaky ceiling which was pealing away from the rafters. Out the back door of the theater, we strapped the horn speaker to the top of the Jeep, practically doubling the height of the SUV, dropped it off at the warehouse, and then came back for the second. I was helping a friend,a collector of vintage audio equipment, remove the unwanted audio equipment from an abandoned theater which was scheduled to be torn down. In the 90s and early 2000's almost every abandoned theater in the rust belt was scoured for vintage audio gear, and while the old horn cabinets we extracted that day were collectible, they didn't command anywhere near the prices of Western Electric amplifiers and speaker drivers which were approaching insane prices overseas. Old projectors, Western Electric amplifiers, RCA vacuum tubes, and worn out Levi's: stuff that would have been thrown away before the days of eBay was now being regularly shipped to Japan and Asia, yielding high returns to those who knew what to look for. Now, the days of walking into a TV repair shop and finding 500 NOS EL 34 vacuum tubes (commonly used in guitar and audio amps) are a thing of the past. The vintage electronics gold rush is over. The $100+ prices that popular tubes demand have flushed them into the open market. But it w[...]

Focus on the fundamentals


For the last couple years I've been entrenched in a project management role which I have enjoyed, but for better or worse, I've probably spent more time in meetings, than writing code. But recently, I've become more involved in development process again, and I'm enjoying my work more than I have in a long time. To be honest, the guys on my team, which I'm fortunate enough to say are damn brilliant developers, are more in tune with the intricacies of our current platform than I am. Linq expressions don't exactly flow from my fingers like water. At the same time, as a technical leader, I have to be realistic and realize that I'm never going to know everything that every specialist does. That isn't my job. Contrary to what some may believe, modern day web development is a complex affair involving everything from graphic design, cross browser DOM manipulation, and logic manipulation to network and database administration. Our system even has a healthy dose of scientific programming that I don't dare claim any expertise about. There is a lot to know, and frankly I'm never going to know everything that a CSS specialist would. At the same time it is likely that I know a lot more about Linux network programming than a CSS specialist, and that's ok. It has to be that way. So as the person responsible for an application from soup to nuts, what can I bring to table, even though I have no idea what that -moz-box-direction line in our CSS file does? The fundamentals. I've started a list of some concepts I personally value. Each manager might have a different value system, but I do think it is a good idea to consider what you do find important and actively pursue those values. When I started in this profession, writing DOS TSRs in C was a hot commodity, syntax highlighting was a novelty and in college we had this thing called gopher that we used to extract files from the NYSERnet nodes at Cornell on the VAX. I remember when Java was released, and I can tell you it viewed as a revolutionary language that would change the face of computing, and not some a relic from the dark ages [...]

The fundamentals


I’ve been working on an idea that a software manager’s job is to promote the fundamentals of software design, but I realized it was difficult to discuss the fundamentals with out stating some of them, so I started a list of some of concepts I find important. In retrospect, I should have noted these a long time ago, as it would have helped focus my work as a full time developer. So here’s the list: Respect your profession. Creation is a noble pursuit. Impress your users, not other developers. Developers are impossible to impress, so it is futile. Most software projects fail: Don’t underestimate the ‘easy’ stuff. Use the standard library for your language. KISS: Don’t make the ‘easy’ stuff harder than it has to be. Likewise, don’t solve problems you don’t have or create problems needlessly. Consider boundary conditions. Step through your code in the debugger before you check it in. Don’t repeat yourself. Know your collections. Many languages use non-standard names, so read the docs. “Premature optimization is the root of all evil”, Donald Knuth, ‘nuff said Shorter functions are better than long ones. Less code is better than more code. But don’t reduce code at the cost of readability (especially Perl programmers :)) Use Inversion of Control to reduce dependencies and coupling. Class inheritance (not interface inheritance) increases coupling (aka subclass coupling). Prefer aggregation and IOC which decrease coupling. Beware of code that doesn’t contain actual application or system logic. Long variable names are ok. Narrow variable scope is preferable to broad variable scope. Do not use exceptions to implement application logic. The application should not throw and catch exceptions when it is behaving correctly or as expected. Concurrency is almost impossible to get correct. See: When to use threads Unless your product is for developers, reduce meta programming. Likewise: your language is a tool. It is a means to an end and not an end in and of itself. Nor is it a religion. If your too[...]

Demos are hard


We recently shipped a significant release (way to go guys!) of our application. At the end of a release cycle I typically demo the app to the other depts to bring everybody up to speed on the new features. Since this release is chocked full of brilliant new features, not to mention a completely updated UI, I had what I thought was a genius idea: create a screen capture demo video. It seemed simple enough: just go through my normal demo, but record it. To my surprise, this has turned into a humbling experience. I don't think I've ever overestimated my abilities this much in my life! Doing voice overs of a screen capture demo is surprisingly hard, and editing your own voice: painful. Every stutter, verbal tick (I say 'actually' a lot), and oddly timed pause has me second guessing my fundamental ability to communicate. I'm using a lo-fi headphone/microphone combination from Microsoft, which isn't improving the situation. Listening to your digitized voice over and over is damaging to the psyche. It is schizophrenic, and by the end of a long editing session in the cheap headphones I thought I was going to lose it. But I'm making progress. My annunciation is improving, and I'm using a strategy to produce the demo in shorter segments. This makes editing in Camtasia much easier, and I think it is better to separate long presentations into shorter videos to make it easier to index. I strongly believe there is value for developers and technical managers in honing presentation skills (and I am surprised by my lack of productivity in this area), so I will stick to it, but I find myself wanting to retreat to the warm confines of editing code in emacs. [...]

Windows 7 and the netbook


(image) The netbook represents a serious threat to Microsoft's core OS business. For years, I've believed Microsoft was in a precarious position in the market because the cost of software had become a larger precentage of the cost of a new PC.

In 2004 I said:

When PCs cost $3000+, DOS and Windows ran about $100 for OEMs. That amounts to about 3% of the retail cost. Fast forward 10 years. A PC can be had for less than $500. If Windows cost even $50 (which is low), that is 10% of the total cost...

As hardware costs continue to fall, the software costs will become a greater percentage of the total cost of a PC. Eventually something is going to give. Either Microsoft will have to lower their prices or the manufactures will start looking for alternatives. Neither is good for Microsoft's profit margins.

These days a netbook can be had for less than $300. The netbook represents an extreme in low cost computing, which according to Steve Ballmer, means, "a little less revenue per unit to Microsoft." At the same time Microsoft is positioning themselves as the premium product for business computing over Linux. This opens a significant foothold for Linux in the low end of the market, and the day that Linux finally starts to topple Microsoft on the desktop is here. Windows 7 will run on the netbook, but it will not create the monopoly margins of Microsoft's past.

What I've been expecting since the 90s is becoming a reality. The desktop OS and software are becoming a commodities. The PC is just a conduit to access the far more vast resources of the net. In the words of the great JWZ, "It's all about the network."

Stack Overflow: software should be fun


Outside a few choice racing sims, I've never really gotten into gaming. I've always found coding itself to be enough of a game to keep entertained at the keyboard. But Jeff Atwood, he's a gamer, and it makes him a better developer. Until recently I didn't think that gaming could improve my understanding of general application design, but it is becoming clear that Jeff's appreciation for the psychology of gaming (aka fun computing) is helping to make Stack Overflow a success. Consider the following from the 13th episode of the StackOverflow Podcast [transcript]. [Listener question] Isaac Moses: How do you plan to get people who know stuff to keep coming back to your site, and find questions that they know the answers to? Thanks, 'bye. Atwood: Ah! This is... this is a feature that's near and dear to my heart. 'Cause I just implemented, uh, what will be called badges, so... I am also a big fan of the Xbox 360, I believe it is one of the best products Microsoft has released in a long time... Spolsky: Do they call them "badges"? Atwood: ...much better...Ah, they're called "achievements" in the Xbox 360 system, and it's amazing how seductive these things are... As business application developers, we often focus on the nebulous concept of 'user requirements,' and fail to ask why would a user WANT to use the application. The most successful business application I've worked on gained a bit of a cult following in its niche and garnered a lot praise, but one user's comment stands out in my mind. "I love the application. It's like a video game." While I processed the comment at the time, it didn't really sink in until recently. The application, for its class, provided a high level interactivity. It also gives the impression that a better solution to the user's problem might be unearthed by spending just a little more time with the application. The ability to define and manipulate "whatif" scenarios, has helped make the spreadsheet metaphor an enduring success s[...]

When to use threads


Note: This is a work in progress, and I'm interested in soliciting feedback. These are the guidelines I use with my own team, but this is my first attempt at formalizing them. Often when there is a recommendation to omit goto from a language developers pointing out the edge cases where goto can make sense will argue for the inclusion of the construct, and surprisingly even relatively new languages often contain a goto statement. There are extremely few cases where a goto is optimal, so developers should take a significant pause and be prepared to justify their decision in a code review, before using goto in production code. I believe the same can be said about other programming constructs: macros in C, template meta-programming in C++, or the use of threads. I've spent enough time debugging or trying to mentally 'prove' the correctness of threaded code, that when I read threaded code my palms get sweaty and I start having flash backs of dark, lonely, nights working by the warm glow of the debugger. Threads are powerful, but threads are also extremely difficult to prove correct and often result in extremely subtle bugs. Also I believe it is many developers' intuition that performing multiple tasks simultaneously or creating multiple threads will increase performance. Unfortunately in most cases creating threads with out warrant will decrease performance as they simple increase the OS's context switching overhead. Because of this I have developed some guidelines to help guide the decision to use multiple threads in an application. Utilization of Multiple Core/Processors UI Responsiveness Concurrent Blocking I/O Ultilization of Multiple Cores/Processors If a developer wants to scale a CPU bound application across multiple processors or cores, there is no alternative to threads or multiple processes. It is not common for the OS to provide the programmer the ability to specify which CPUs that their tasks will be scheduled on, and the CPUs will [...]

Boost ASIO review: for the record


I happened to be looking through some old emails, and I found my review of ASIO.

In my opinion the library should be accepted. This is the best example of an asynchronous library available in either C or C++. All other major program platforms Java (NIO), .NET, Python (twisted) have well accepted asynchronous networking support, and I think this is important for C++ as a high performance networking platform going forward.

I do have one concern, but the over all design of the library is sound.

A memory allocation / deallocation is required PER REQUEST. I could live with this if it was an inherent problem with the asynchronous design pattern, but I have convinced myself that it is an artifact of the boost::bind interface combined with deferred execution. Because the size of the functor is unknown by the library it must be allocated dynamically. It is my feeling that the allocation could hurt adoption in certain markets.

Library users should be provided with the option of providing static function pointers which take an untyped parameter such as void* or boost::any as callback targets. This is how nearly all deferred allocation mechanisms currently work, and it would eliminate the allocation of the functor. Plus more complex interfaces, such as the current bind interface, could be layered on top of this architecture.

Put it in writing


In the last year I transitioned from lone developer to project manager. In this role I find that I am called upon to make quite a few judgment calls both on the behavior and the architecture of the application. I am really fortunate to work with a great team who I respect and are far better developers than I am, so generally this goes pretty smoothly. But occasionally, either due to my own biases or experience, I find myself in disagreement with a recommendation of one of the team members. I have a simple solution to this problem. I request that the developer put the recommendation in writing. I do this for the following reasons: If the developer doesn't have the energy to codify his or her argument in writing, then it probably isn't that important of a decision and we can move onto the next problem. There are always more problems to solve. Putting the request into words forces the developer to think through what is being proposed. It is far more likely that a well written argument will sway me than a half thought out verbal discussion. We use an iterative methodology and don't specify every program element. While I am afraid being a Certified ScrumMaster might still be illegal in some Southern States, I am fan of iterative development. But there are cases where there is value in working out a problem in writing. It forces you to consider possibilities that a purely mental model might omit. If there is enough contention in a decision to actually cause a disagreement, it is a strong indication that the time spent working out the issue in writing will be a good investment. I also believe that being able to defend a recommendation or decision is a fundamental sign of maturity in a developer. I try to hold myself to same standard. I recently caught myself in a discussion where I was arguing a point verbally in a way that was not fully formed. This left me feeling uncomfortable, and I for[...]

Tahoe Report Day 1


I unregrettably spent last week in San Francisco, but the talk of the storms moving up to Tahoe had me antsy to get back up to the Sierra. I left SF yesterday in clear conditions slowed down by only a few nervous drivers. On the way up the hill, I stopped at REI to buy a cheap pair of snowboard bindings (K2 Cinch's) to get my old snowboard turning. I've spent the last few years teaching myself to telemark ski, but last year K and I had some friends in town and I rented a snowboard. In those couple hours I came to question my motives behind telemarking. A old colleague of mine, a die hard telemark skier, wore a sticker on his truck like a badge of honor that read, "If it was easy they would call it snowboarding." But is 'hard' reason enough? It is fair to say that I attained a better than average skill as a telemark skier, but after a couple runs on the snowboard I felt a freedom motion that I never attained telemarking. I telemarked to make a point with myself, and ultimately telemarking is just a way more physical way of skiing. It is still skiing. Snowboarding is not skiing. Telemarking is so mentally and physically challenging I rarely could get myself out of the moment to just enjoy what I was doing. I was always thinking about the next turn, gasping for breath, and hoping that there wasn't a rock just below the surface of the snow. I enjoy the challenge of telemark skiing, but for me, it lacks the bliss and freedom of the snowboard. This year I made a pact with myself to not go to the mountain to make a point, but to enjoy what I was doing. When I arrived at the Shackteau (why I let that domain go I will never know) last night, I was surprised that there was only 6 inches of snow in the drive that my Honda snowblower made short work of. The weather was warm this morning, and I took my time mounting my new bindings and picking up my pass. Interestingly, [...]

Financial Crisis


I'm upset by the turn of events in our financial systems this week. It is my feeling that nationalization of a large amount of our financial system will change the face of business for years to come. We are moving to an unprecedented level of socialism in this country, where it will be much more difficult to find credit needed fund new ventures and purchases. Putting the lending system into the hands of the government will result in politicizing our entire economic system. This is not something I am looking forward to.

It is also unfortunate that citizens that have worked hard and acted prudently will now be forced to pay off the debts of those who acted frivolously. This country has lost the sense of self reliance and responsibility that made us great to begin with. I am saddened to watch the greatest free market system in the world be brought to an end in the span of a couple weeks.

With that said, damn did you see that market rally today :)

Tom Bihn bags


Kathryn and I spent some of our time off, day hiking on the Tahoe Rim Trail. Sometimes I forget what an great backyard Tahoe provides. I love the smell of tobacco brush and sage late in the summer. Before we left, I grabbed my Tom Bihn day pack, filled two Nalgene bottles, and then off to the trail head. When I was looking down on the lake, my mind started to wander and I realized the pack exactly the type of product I wanted to discuss here. I've owned this pack for 12 years, and it has been more places with me than I care even remember, and it still looks and functions like new. Years ago, when I was interning in San Jose, my Jan Sport pack fell to pieces and I wanted a replacement that would out last it, and the mainstream packs didn't instill confidence. I happened into Tom Bihn's small shop in Santa Cruz, and met the designer himself. I knew I wanted one of his packs. At the time, Tom's packs and bags were made in California from heavy nylon with extra large zippers, a padded back, and held together with perfectly stitched seams. Tom himself seemed to care about the product he was creating. While some mainstream designers have taken to the same over sized design esthetics, I can't imagine any would ultimately be as bomb proof or as well made as this pack. I pondered the decision, as the pack was about $100, about twice most mainstream day packs of the time, and for a student it was good money. I now expect the pack to last at least another 8 years which would it put its useful life span at 20 years. I think it was money well spent. A couple years ago when I was looking for a messenger bag, I was happy to find that not only was Tom Bihn still in business, but they had grown considerably. I was even more pleased to find that although the company had moved to Washington State, it had stuck [...]

Materialistic Margaritas


Growing up in rural Upstate New York, the margaritas I knew were a concoction served from rotating machines, resembling a white 7-11 slurpy mixed with cheap booze. They were something you drank if for some unexplained reason you didn't like the taste of Genny Light. I didn't drink margaritas. I drank Genny Light and jug wine. In California I ordered Margaritas on the rocks with salt and they became an acceptable alternative to beer after a bike ride on a hot day. When I first made margaritas myself I used a florescent green mixer I bought at Safeway and Cuervo Gold. The result wasn't very good, and these bottles have been sitting on my liquor shelf for 4 years now: I never truly understood Margaritas until Kathryn and I found Tommy's in an unlikely location in one of the foggiest districts of San Francisco. While the bar and restaurant is probably home to more roaches than we'd like to admit, they have by far the best (and most intoxicating) Margaritas I've ever had. Their recipe is simple: 100% agave tequila Fresh lime juice Simple syrup Ice Salt To the left of the door at Tommy's there is a huge pile of limes, and that's the key. No mixes. Only fresh, hand made cocktails. High quality materials, hand production, attention to detail, and experience. This is a recipe for a quality product. The overall cost of option 1 (florecent mixer and Cuervo) and option 2 (fresh limes and agave tequilla) isn't much different. Agave tequila is now plentiful at most liquor stores, and I bought one that was on sale. 14 limes, enough for ~7 margaritas, cost $2 at the local produce market. [...]

The Materialist


I'm materialistic. I like things and the design and process of making them, and I don't apologize for this affinity. While materialism received a decidedly negative connotation during the post-industrial boom of the 80s, ultimately a functioning economy and society is materialistic. Succeeding in modern creative industries, including software development, requires a critical eye toward objects and our interactions with them. Unfortunately, I believe the lack of emphasis on skilled trades and manufacturing in the U.S. has decreased our ability to value goods. Modern consumers rely on branding and advertising to shape perception and purchasing decisions. As a result we have become poor judges of quality and often we receive poor value for our dollar. As a consumer, I have obsessively sought out U.S. made goods. I'm not a card carrying union member or flag waving patriot, but I believe many leading U.S. companies lost much of what made them great when they abandoned their U.S. manufacturing base for lower cost operations. Some of them lost my business as the choice to move manufacturing offshore wasn't driven by the desire to increase quality, but to decrease costs. We are now inundated by parades of container ships, but it is increasingly difficult to find goods that offer both quality and value. I find it almost impossible to discriminate between goods sold at Wal-mart from those available from what were formally well regarded department stores. But I believe attitudes are changing. We are more informed consumers, and as a result of increased commodity prices and a decrease in the value of the U.S. dollar, I believe there will be a shift from the multitudes of low quality goods, to fewer, classic, durable goods of high quality. So after a hiatus [...]

Volkswagen to export from N. America


The Wall Street Journal is reporting:

Volkswagen plans to lower its exposure to the weak dollar by exporting about 125,000 vehicles from North America and Mexico to Europe, people familiar with the company's plans said. By increasing production in locations that use the dollar, VW can reduce the proportion of components and vehicles that are made in regions that use the euro.

I have been wondering when a weak dollar would trickle into increased US exports.



Probably a lot of people will think I'm crazy, but I'm getting extremely bearish on US equities. With current cost of oil, I think we will see some significant fallout in equity prices this summer and into the fall. There is no way airlines have a chance of turning a profit with ticket prices where they are and oil at $140/barrell. This is a doubling of their costs from a year ago. The smarter airlines have hedges in place, but at some point the futures will expire and they will be forced to buy at higher prices.

I hope I am wrong, but I think bad times are upon us. Maybe slowing demand will burst the commidity bubble, but we aren't there yet. If oil prices remain constant we will see inflation that is unprecendanted in my adult life. Commodity inflation costs have yet to be passed to consumers, but at somepoint they will be or many firms will be bankrupt.

This also going to sound crazy, but I'm planning on living big in the next few months before the commodity prices catch up. Many things I enjoy in life sushi, beer, fresh fruit, etc are extremely commodity intensive to produce. Right now sushi restaurants haven't raised their prices. I believe I can eat and live well while restaruants and retailers absorb the increased costs. At some point this will run out and they will pass the costs on to me. In the mean time I am eating fresh fruits, vegetables, and sushi like they are going out of style, because they will be. Mark my words, I will not be able to buy toro at these prices next year.

Or my bearishness might mark the top of the oil market. Time will tell.

Sun and MySQL: I don't get it


At $1 billion, assuming MySQL's current revenue is optimistically set at $100 million annually, Sun paid a multiple of 10 times sales for MySQL today. Optimistically assuming a 20% profit margin, they are looking at a multiple of 50 times earnings for a return on investment of around 2% per year. Optimistically.

Few people get rich making equity investments at less than half the rate of return of an average money market fund. I don't know how Sun financed the deal, but if they leveraged it at all, there is a good chance they will be losing money out of the gate with this investment.

Maybe for a company with a rock solid balance sheet and a record of extracting maximum value from their acquisitions, this deal might make some sense. JAVA doesn't meet either of those criteria.

But wait, there's more. If Sun's customers plan to extract an enterprise level of functionality from MySQL, they basically have no option but to use the InnoDB storage engine to underpin the SQL front end. And guess who owns that. That's right, Oracle, the 800 lbs gorilla of the SQL market. The rocket science ain't in the SQL parser. It's in the storage layer, and that didn't come with the $1 billion price tag.

BTW, the J2EE 6 installer blew up on us when we tried to install it on Linux x86_64, and judging by their own news groups, we're not alone. Mr. Schwartz, for a mere $1 million I'll get that working for you, and you'll get your platform back. It's one hell of a deal if you think about it.

Thoughts on personal investing


I have about 8 years experience working in financial portfolio analytics. In that time I've gotten a peek at how the money industry works. It is a fascinating domain, and I see myself sticking with it for the long haul.

Occasionally folks ask me for investing advice. WARNING! I AM NOT A FINANCIAL ADVISOR AND YOU WOULD HAVE TO BE CRAZY TO TAKE MY ADVICE. But here it is anyway. Go to Vanguard's web site. Figure out what year you will turn 60. Find a fund called Target Retirement Fund N, where N is closest to the year you will turn 60. Buy that fund (hopefully in a tax deferred account) and add to it on a regular basis. Vanguard Target Funds offer an inexpensive mix of U.S. domestic and foreign stocks and bonds by investing passively in multiple broad market indexes. The funds automatically rebalance to favor lower risk investments as you approach retirement age.

Over a long enough period you will likely beat 90+% of all investors with almost no work.

I have almost all my personal savings in index funds and fixed income, but I do have a very small part of my portfolio in wild card stocks that I pick myself. I DO THIS FOR FUN AND DO NOT COUNT ON THE MONEY I ACTIVELY INVEST FOR THE SHORT TERM. There is a really good chance I will under perform the Target Retirement fund, and I accept this risk.

So if I happen to mention a stock I'm buying on my twitter, take it for what it is: a long shot bet that I am making to amuse myself.

Real life


If you hang around San Francisco enough you are bound to run into technology people who's blogs you follow. And although I read quite a few blogs, there are relatively few people who follow mine which means the chances that I'll recognize somebody is higher than the chance they will recognize me. To make matters worse, they won't recognize the work I do unless they happen to work in a small corner of the financial industry. Yesterday K and I attended the Treasure Island music festival, and we queued up for the Ferris Wheel directly behind Evan Williams (and no I wasn't following his tweets (although some 3000 people were)). I think it is fair to say that Evan Williams is one of the reasons people know what blogging even is. Having the social skills of your typical geek, I had one of those moments where I wondered what to do. Should I introduce myself, or just not say anything? I did introduce myself, but the exchange was about as comfortable as you would imagine (not very). To equate this to the offline world, imagine an author who hasn't gone mainstream, but who's work you admire. If she is queued ahead of you at Starbuck's. What do you say? "I love your new book?" What else is there to say? And this isn't first time this has happened to me. This is a new problem of the online social networked world. The long tail of fame creates people, such as Robert Scoble, who many would recognize, but are not famous. And the chances that you'll meet one of these people hanging out in the Mission District is actually pretty high. [...]

Back from vacation


I had a nice time on vacation. I went home to Western New York to visit the folks and some friends. It is the first time I've been back home in the summer in as long as I can remember, but getting in touch with my roots isn't easy while living thousands of miles away with only a few weeks vacation. I spent so much energy trying to escape the rust belt that I've forgotten some of its virtues, and my last visit in a February snow storm didn't help. It is much more verdant in the summer than I remember. And the weather was pleasant. Although some parts of the local economy seem improved to my eyes, generally Western New York is still an economic black hole. When was the last time you heard of someone moving to Buffalo? Exactly. I rented a bike and rode some of the lazy country roads and trails that I used to frequent growing up and meet up with a group ride at the local bike shop. The same folks who sold me skis in high school still own and run the shop, and they have done a good job promoting cycling in the area. The cycling in Western New York is underrated. I dare say the road biking may be better than Northern California if you can live with out the soul crushing climbs. The hills are quaint compared to those in Tahoe and the Bay Area. I also met up with Kathryn in NYC who was staying with her sister in Park Slope. It was hotter than hell, but still NY feels like a real metropolis compared to SF. My favorite part of NY are the subways. While the condition of the trains is very good these days, some of the infrastructure outside of Manhattan appears to be barely holding together. T[...]

Twitter Malfunctions


I think Twitter is neat. The concept of aggregating brief messages from multiple sources is simple but fun, useful, and technically interesting (well to me anyway). But I have had some strange malfunctions in the past couple days. The most disconcerting was that SMS notifications were turned on in the middle of the night unleashing a small torrent of messages on my phone, waking me up.

In a stroke of good luck it turned out to be a good thing because I needed to get up and check the status of some long running processes anyway. But it took me awhile to figure out how to disable the thing (the setting on the home page wasn't working), and was on the verge of killing off my account. Anyways, I'm disconnecting for a while to go home to Jamestown then onto NYC. I'll plug back into the Matrix in a couple weeks.

Erlang hacking


If you've been following my tweets, you know that after about 6 months of trying to figure out a new side project, I've decided to teach myself Erlang.

In short, it will have you digging deep in your CS education to remember languages like Prolog and ML. And after using languages like Python, the syntax is, well, ugly. It certainly doesn't read like prose, which many developers love about Rails.

But I think there is some genius in there, and the time is right for rethinking concurrency. I spent a lot of time working on a non-blocking proxy server, and IMHO that model of development isn't going to scale to huge projects, especially in languages like C which have embedded blocking I/O into the brains of developers since day 1.

Prediction: In 10 years all languages will borrow concepts from Erlang. But they may look more like Scala.

Visual Studio SP1 takes forever to install


This is crazy. This is my favorite part:

Because VS 2005 SP1 is so large, it takes a long time - typically around 10 minutes - to load the entire image into memory in order to generate a hash over the image.

Update: Now the patch is just sitting there saying "Time Remaining: 0 seconds." I think Microsoft has lost their collective mind.

S3 Twitter: What is needed is quick hash append


I dug up a couple interesting posts from 'Al' at Folknologist (sorry, I can't find Al's full name on his blog). First is a comment on the circleshare blog regarding Twitter's database scaling issues: The big problem is the inserts (if the backend is a db), every tweet has to be inserted. Thus even if you have a fast messaging (in memory) the write that accompanies it is relatively slow. In such cases you need some super fast hash append system rather than a database, something that literally just writes to a log like file. (Deletes can be handle by null writes on existing keys). If somebody has a scalable appender like this in code let me know as I could do with one, especially if I can get it working with S3 Yes indeed, if someone can produce a reliable appender in a cost effective way using S3, I'd love to see it as well. After some research into S3, I don't think it is feasible. Unlike gfs which supports record appends, S3 does not. Second is the call for a database service for AWS. AWS is built around an expectation that storage takes place using the highly redundant/reliable S3 infrastructure. This of course makes sense except in the case where one is using a database for storage as opposed to files. There's the real kicker. I can't think of many significant web applications which don't need at least some database services. Even if an app can make good use of EC2, such as mass video encoding, at some point the application must store something in a database, which makes EC[...]

Twitter on S3: S3 objects as lists


S3 as a data store was still on my mind as I rolled out of the fog and into Marin on my bike ride today. Let me take the thought experiment a bit further. Let's assume tweets could be reliably blocked and written to S3 objects. Just to put a number on it, let's say 1000 tweets are stored in one S3 object. If every tweet in one object is by a different user, how does the application iterate over one user's tweets? There needs to be an index that points to the location of the user's next tweet. One option would be to store the previous tweet's location (object name + offset) with the current tweet. But like a linked list, the location of the head of the list would need to be stored and updated with every tweet. As I mentioned, it would be cost prohibitive to store this in an S3 object (unless again this data could be effectively cached and flushed periodically). Also with such a strategy, the application would need to do a significant amount of caching to achieve reasonable performance because iterating over a list would require a round trip to S3 for each tweet which could not be pipelined. The other problem with this strategy is that deletes are expensive. Because S3 objects can not be updated, changing the list pointers to bypass the deleted record would require reading the entire object, updating the pointer, and writing it out the object to S3. Plus it would require some sort of locking strategy in the case that the object was being updated by two us[...]

Twitter storage on S3


Following Twitter's well publicized scalability problems, I've been wondering if it would be possible to use Amazon's S3 service as a data store for tweets and EC2 to handle tweet distribution. Assuming a rate of 10k tweets/second, it would pretty tricky to do cost effectively, especially given Amazon's new fixed cost / transaction, which makes storing a high volume of small objects extremely expensive. S3 presents a couple problems as a general purpose structured data store. There is no way to update objects. This limitation leads to a potential solution with a lot of small objects, for instance one object per tweet. Unfortunately PUT operations are expensive at $0.01/1000 PUTs. With a sustained rate of 10k tweets per second, the transaction cost just to write the data into the S3 storage would be around $360 / hour or $3million / year. So obviously multiple tweets would have to be blocked into a larger PUT. This has some merit because S3 does allow random access using HTTP ranges on GETs. But it immediately leads to two new problems. How are the tweets indexed (ie how do you find all the tweets by one user), and how is data queried before it is flushed to S3? Because Twitter doesn't have a high data integrity requirement, unlike say banking transaction servers, it might be possible to manage indexes on EC2 which are periodically flushed to S3, but this very quickly turns into a complicated solution. S3's fixed transaction [...]

I regret starting a language flame war


I was surprised by the power of the tubes again this week. I haven't spent much effort on blogging recently, and frankly there hasn't been much traffic here. But I have been researching Open Source web development frameworks for one that suited my personal tastes. I really, really like what I've seen in Rails (particularly the community) and understand its popularity. I do have some differences of opinion regarding the design of the Ruby language. Having a strong opinion is ok, but in retrospect I regret starting a language flame war. When I wrote "Rails is written in the wrong language" nearly a month ago, I was getting frustrated with the lack of boiler plate authentication code for Pylons, and had serious Rails envy, and wrote the entry in an off the cuff ranty style. It generated almost no response, as I suspected because most of my readers had packed up and left for higher ground. Hitting the front page of reddit when you have almost no organic traffic is like getting in a Bugatti Veyron, hitting the gas hard to 100mph and then slamming on the brakes to 0, which in the Bugatti takes less than 10 seconds. Here's what it looks like: There is one periodic reader here with 21000 reddit karma points. One link is all it takes. In the ensuing flame war my original point - Ruby is TIMTOWDI, but that isn't DHH philosophy for Rails - was buried in Ruby vs Python rants. I really should have learned my l[...]

Uncov is a bad idea

2007-06-29T00:00:00+00:00 is an unfortunate thing. The editors, Kyle Shank, Ted Dziuba, and Matt Kent, are recent graduates of my alma mater, RIT. RIT has a great co-op program and a strong regional reputation, but it has never gained much traction as a start-up mill like the big guns: Stanford, MIT, and Berkeley. Kyle and Matt are two of the developers of RadRails, and I was happy to see the press they generated for the school. Fairly recently RadRails was transfered to Aptana (I incorrectly thought the rights were sold) and they moved to California and started a new company called Persai. They've bitten off the complex domain of personal recommendation engines, and I hope they can pull it off. And this is the problem with Uncov. Realistically the chance of success of any startup is pretty low, and by spewing bile on top of bile on Uncov, they have set the bar sky high for themselves. If they miss it, they will be fodder for the readers of their own blog. I'll admit I don't know much about starting companies, but it seems few start by setting unattainable goals. They reach a modest goal, set the bar slightly higher, meet that goal, etc., until they gain a level of self sustainability. Because of their outlandish attacks on Uncov, every misstep will be scrutinized with the eyes of Uncov. I just can't imagine how this could be a good thing. If they are serious about Persai, I thin[...]

TIMTOWDI language + opinionated framework = success?


In reading over the comments both here and on reddit regarding Rails is written in the wrong language one from reddit user doubtingthomas stuck out.

It was always been my impression that the TIMTOWDI-ness of Ruby is a great foundation for Rails, because it allows the library/framework/dsl/whatever pick the way it it wants to do it without forcing it to be the same style as the base libraries or common language idioms.

Kinda like Puritans moving to the new world, where the lack of law made it possible for them to run their uptight repressive communities as they wanted. :-P

I'm starting to find credence in the idea that TIMTOWDI languages have more value when a strong leader with opinions molds the raw material to his or her liking. Interestingly Ruby never had much acceptance, at least outside of Japan, before DHH took the reins. Rails provided Ruby with a clear direction, and possibly the direction makes the TIMTOWDI aspects of the language more tolerable in day to day use.

Well it is just a thought.