Half-life of a Google Product

Google looks to be merging ChromeOS into Android, exactly how and when is still to be determined. Recently, I’ve been touring schools since my oldest will be starting Kindergarten next year. Most of the schools we saw have Chromebook carts available to share in the classroom.

Chromebooks are ideal for a classroom setting, they are low cost devices, run a controlled set of applications, plus are designed around easy user accounts and complete resetting of information. At the price point, your school can buy probably 4x as many Chromebook as a similar “full” laptop.

However, initial cost is even less of a concern as on-going cost and maintenance. Do you need a full-time staff to make sure nothing gets installed, everything stays configured right and all security patches gets updated? All of this comes free with the Chromebook.

Google moving ChromeOS to Android will effect all schools running Chromebooks. How long until ChromeOS is no longer supported, and all the Chromebooks which were purchased with the idea of little to no maintenance require either being replaced at a large cost or upgraded to Android which will entail a large training and increased complexity cost.

Lately it seems like a terrible idea to bet on using any Google product longer than a year or two. Even the most important project across the company (Google+) was given up on after just a couple of years. Schools operate across a much longer timeline. As we start to look at schools for our daughter, we’re thinking out when our second will start in Fall 2018. The Principal is talking to us about Chromebook’s available not just shared at 5th grade but by the time our daughter reaches 3rd and 4th grade he hopes to have them available in each classroom, this is in 2019–2020.

If you look at Microsoft and Apple, there is much longer continuity and commitment to their platforms. I would feel pretty confident I could buy a Windows laptop today with an education package that will still be available and able to run 4–5 years from now.

I wouldn’t bet on any Google product besides search and ads being available in 4 years time.

The cost of inspiration

The mission was a failure! What a waste of money! These are a few dissenting views of the Rosetta / Philae space mission, especially now since the lander’s battery has been depleted. People are debating if the planning was done right, did it accomplish all of the science experiments. All of this for just three days on a comet!

The huge focus on pure economic value and return is such a limited view. The space mission provides so much more by inspiring minds and imagination. It pushes humankind beyond the boundaries of earth and into a vast unknown. Curiosity, exploration and attempting something never done before. The price of ambition and inspiration is worth so much more than what was spent.

At the same time, we’re struggling to get students interested in science and mathematics, only 16% of high school seniors in US are interested in STEM career #. Space projects like Rosetta is a great way to generate that interest.

I’m been talking with my daughter, who is 3 yrs old, about the comet and the mission. About how it is far away in space, and how fast it is traveling. She asks to see photos of it and how its doing. She’s a bit young and is pretty interested and curious about everything, but fueling that imagination with science and exploration is great. Here’s her drawing of the comet.

Angelica’s drawing of Comet 67P

I’m still amazed about the accomplishment, we sent a space craft which took 10 years to travel four billion miles to reach a comet traveling 34,000 mph. The Rosetta satellite got in orbit of the comet and launched a lander which successfully landed on it. This is an astounding accomplishment!

If it is, millennia from now, humankind may look back on the Rosetta mission as perhaps one of the most important space missions in history. #

About the cost, the total cost from 1996-2015 worked out to about € 0.20 per EU citizen per year. This doesn’t seem like such a high cost, considering what tax dollars get spent on, I’d rather our governments have audacious goals and attempt more space missions than build more tanks and bombers. See Is comet landing mission worth the cost?.

The crazy amount of dollars spent in Silicon Valley for startups which allow picture sharing or text messaging and other new ways to watch advertisements dwarf the cost of this mission. Total budget for Rosetta is around $1.75b USD, WhatsApp acquisition price $19b. Facebook could’ve funded 10 missions instead of yet another messaging client.

Also, putting into historical context: on May 25, 1961, President Kennedy stood before Congress asking for $7 to $9 billion dollars over the next five years for the space program. In 2014 dollars, this would be asking for $54-$70 billion, and Congress was bold and delivered it. #

“Well, space is there, and we’re going to climb it, and the moon and the planets are there, and new hopes for knowledge and peace are there.” Kennedy, Sept 12, 1962, Rice Stadium

Technology Advancement from Moon Shot

For those who insist on economic value on the money spent, research is always hard to justify when you don’t know exactly what you’ll get. It is why its called research. However, using the Space Race of the 60’s as an example of how this research and development spend can benefit.

The scientists educated through these efforts helped develop technologies that have been adapted for use in the kitchen, in transportation systems, in athletics, and in many other areas of modern life. Dried fruits and ready-to-eat foods, stay-dry clothing, and even no-fog ski goggles have their roots in space science.

Today thousands of communication satellites orbit Earth, used for telecommunications, GPS and weather to name a few uses. These satellites were launched using rockets and technologies developed during the Space Race.

Genuine triumph

In conclusion I think astronaut and Nasa’s Science Mission Directorate John Grunsfeld says it best:

“This achievement represents a breakthrough moment in the exploration of our solar system and a milestone for international cooperation. We are proud to be a part of this historic day and look forward to receiving valuable data from the three Nasa instruments on board Rosetta that will map the comet’s nucleus and examine it for signs of water.

“Small bodies in our solar system like comets and asteroids help us understand how the solar system formed, and provide opportunities to advance exploration.

“It’s a great day for space exploration.”

Comet 67P
Comet 67P as taken by Rosetta Satellite

A Day in the Life

I wake up at 5:30am, the girls got my body trained for this time, and even with them now sleeping in I can’t break the habit.

I make my morning coffee, get a good stretch in and read my morning news, its a Monday so I check in how all my fantasy teams did and read more on how great that 18-inning Giants game was, epic!

I’m on Team Tinker, which is a bit of an R&D special products team, we are ramping up the work on a really cool new product. I’m building out the backend API and excited to be using the Go language. This week I hope to really get cranking, so I figuratively cut out all our work by opening up a dozen or so issues in Github.

Around 6:30am, my 2-year old wakes up so I hold her while I finish opening the last couple of issues and she has her morning milk. She likes to cuddle while I’m at the computer, who am I to complain. Her sister also wakes up and hangs out with me in the office as part of our morning routine. I read them a book and start to get us all ready for the day.

The girls don’t go to pre-school today, so we have a bit slower start getting breakfast and changed before my wife comes back from her workout and takes over. Also, an electrician is coming by our house today to look at a broken ceiling fan, so I stick around to talk with him.

While waiting, I chat with some teammates on Slack, a couple are in Europe, and I’m in California, so the morning time is the best to talk about the project, what they are working on and our plan of action. Lots to hammer out early as we define the APIs. I also document on our team’s internal blog a conversation I had last week discussing storage options.

Where to work today?

We have an office up in San Francisco, which I live about 30-45 minutes away. It’s a day-to-day decision if I’m going to work up there or down on the Peninsula. I have a co-working space locally but it is pretty quiet and a little lonely. Our office may only be a handful of people, bit it is lively and fun place to work. However, today there is a big Giants game during the day and I don’t feel like fighting traffic, so I’ll work locally.

Around 9:30am I head to my local space and dive into development, ok, maybe a little reddit, Hacker News and another quick sports article to get my mind focused. My work environment is relatively minimalist – a normal desk, my laptop is a Macbook Pro and I live in Terminal and Textmate. Since I’m building an API, barely even need a browser. I normally listen to music or podcasts while I work, on Monday catch up with TWiT podcast, but they’re talking too much about Windows 10, so switch back to Spotify.

After lunch, I’m helping out one of my co-workers on a small project he’s doing, which will be part of our holiday surprise for the company. I’m helping him put together a post about it. A cool thing is we have a team working on an awesome new editor which is what I use for building the post. Dog fooding FTW! The editor is a joy to use especially with multimedia content. I do discover a few bugs and report them back to the team, but really excited for the new tool to launch.

As I continue to work, I start to fade and find myself being distracted by the Giants game which just started up. I decide to go get a cup of coffee and actually head home to watch the game. I figure its easier to have the game on in the background and work instead of switching tabs and reload constantly.

I come home to a couple of screams and big hugs, which answers the “are they napping” question. At home, I work on this post and setting up a development server to run our test API site, neither of which require huge chunks of concentration; a few minor interruptions by baseball and kids aren’t a big deal.

I typically put away my computer around 5pm and focus on playing with the kids, dinner, baths, getting ready for bed and all the typical evening with family stuff. Today’s Monday, so I’ll go to my bowling league with a buddy, otherwise I might get back on my computer a little while watching TV. Most evening time is mindless browsing and I’ve been trying to cut more of it.

Tonight I won’t get to bed until midnight or so, which even that doesn’t help me sleep past 5:30am, typically I’m in bed around 10pm.

So that’s my Monday. It isn’t a typical day of work, but one of the benefits of Automattic is a flexible schedule. A co-worker shifted his hours all summer so he could spend his days playing with his kids; others travel and work from whatever cafe or spot they end up.

If this sounds interesting, come work with us. If you want to read more in our “A Day in the Life” series, check out the #a8cday tag where other co-workers are documenting their day.

Eliminate Work in Progress

I was listening to the recent Bootstrapped with Kids podcast and they were talking about doing too many things at once and the pain it was having on the business.

A good listen to hear how development methodology effects the business. A few key tenets of software development; doing small releases, eliminate work in progress and deploy frequently. If you have finished code, don’t wait and sit on it, deliver it to your customers. Deploy.

Here is an example my colleague Ken and I would use to explain on why doing too many things at once is not ideal.

Three Projects Illustrated

Imagine you have three projects each of which is about the equal amount of time and each will deliver some value at their completion. For the sake of argument, let’s say each takes a month to complete and each will deliver a $1,000/mo.

Scenario One: Asynchronous – Multi-Tasking

One way of attacking these projects, it to break them up into small chunks and start work on them simultaneously. If you were orderly and consistent, the work might look like this.


Each project gets a little bit of time and at the end of the three months all projects are complete. This process is most commonly used when trying to optimize resources, you might hear “We can’t have anyone not working, have them start next thing while they wait”

Scenario Two: Synchronous – One after the Other

An alternate scenario is to tackle each project until it is complete and shipped; not starting the next one until it is out the door. This scenario would look like this.


Notice, after month one Project A starts realizing value and earns $1,000 in month two and another $1,000 in month three. Project B would get completed in month two and earns $1,000 in month three. At the end of three months, all projects are complete, but doing the projects one-at-a-time delivered an extra $3,000 since it was shipping completed Project A and B.

In Reality

Most people do realize this and a true Scenario One is not really attempted. Here is a more realistic scenario, a team starts off on the same project together. As people finish and hand-off their piece, they move on to the next.

For example Design finishes mocks and hands to Engineering, so Design starts on next project. However, if Engineering asks a question or needs the mocks updated with new requirement, the Design team is busy. So Engineering submits a design request and instead of being idle they start on the next project.

This might look like:


This ends up delivering the same results as the first scenario, which is none until the end of the three months. The real killer is when there are a bunch of projects almost done and just need that little bit more to finish up, be it a approval, production environment, wordsmithing or whatever.

Worrying about the “idle” time. Management gets worried when people appear to be idle, but there is always work to be done. Odd requests from last project, clean up work, polishing up hacks or helping colleagues. All this needs to get done and rarely scheduled. Also a little down time allows people to recoup, tidy up your own work environment, learning a new tool or tutorial. All beneficial.

A way I’ve seen successful is when teams are organized not by function, but by project. So there is no Design or Engineering team but X product team which has all the necessary team members. This works well because as a team they have one goal and will work to complete the overall goal and not just the bits and pieces of work in progress.


In summary, try to eliminate as much work in progress. Focus the entire team to deliver value in smaller chunks and at a faster rate. Finish up those little bits and get it shipped. This delivers value quickly to your customers and you start realizing it sooner.

Customer surveys, and the lies they tell

In the past few years I’ve traded in and purchased two new cars, because kids. Each time the process was pretty much the same, long and arduous. For our minivan it took about 6 hours total, and for the most recent sedan it took 3 hours.

It took shorter the second time because I asked them to start the appraisal process before I did any test drives or even started talking. It was in my opening hello.

Them: “Hi, how can we help you today?”

Me: “I want to buy a new car and trading in this car, let’s start the appraisal process now.”

However, each time, after negotiating and deciding on a final price for both trade-in and new car purchase it still took another 90 minutes to complete the transaction. This is the part that absolutely baffles me. There is nothing to do but draw up paperwork, sign and be done. Once I get into the finance guys office it is all done in 15 minutes. I have no idea what happens in the dead 75 minutes between.

The Salesman says its nothing he can do and apologizes its taking too long, he’s my buddy.

At the end of it, all paperwork signed and I finally get the keys; the Salesman takes me out to the car and shows me the other features. This is when he lays on the story about I should get a call from headquarters asking how everything went today and Honda really looks down on anything that is not 5-stars. So if you could answer everything with 5-stars, that’d be great.

So, the Salesman has been my guy throughout the day, making sure I’m comfortable, making sure I’m taken care of, etc. It’s always the Manager or someone else causing the delays. So now I don’t want to give my guy a bad review.

So two days later, when I got the call from Honda, sure enough I give them 5-star reviews. The dealership was great, no problems. Pleasure doing business with them. I’d recommend them.

There are a few other reasons I give them 5-stars for everything. First, the person on the phone wants me to give 5-stars, otherwise they’ll have to ask follow-up questions and elaborate. I really don’t want to elaborate on the survey, I just want to finish it so they can check my name off and not call me again.

Secondly, I think if I don’t give them 5-stars they may try to follow up with me later to help me. I don’t have any problems and don’t need help, beyond not wanting to spend six hours at a dealership to buy a car.

Thirdly, I don’t think there is any way my answers on this survey will have any effect on the car sales process. Saturn attempted to sell cars differently, they failed. Tesla is in lawsuits galore about trying to change the car buying process. Do I really think my 5-minute survey is going to change that, nope. So why trouble myself to be honest, just answer the questions and get off the phone.

So now, what did Honda learn from that customer survey? Absolutely nothing, but everyone involved sure feels better about themselves. The dealership can brag about posting up 5-star reviews, and HQ feels happy that everything is just humming along fine. Stick head back in sand.

My point of the article is not that buying a car sucks, everyone knows it does. The point is look at why are you asking customers for feedback and surveys. How are you using what they give you, is it really to solve a problem, or is it to judge how your doing?

If you are really want to know, dog food it. If I were Honda and wanted to know how the car buying process is, I’d send the people making phone surveys and have them go out and buy cars from dealerships and see what it’s like. Though this might take them too much time.

Python Culture

Looking at software projects, each has its own culture and style, a distinct approach to solving problems. One such style I’ve always been drawn to is Python and its almost zen like ways to keep it simple and friendly.

There is also a playfulness and humor of Python. First most being the fact the language is named after the comedy troupe Monty Python. You can also see the playfulness of the founder Guido in some of the photos posted on his site and on this python humor page. This is a language that doesn’t take itself too seriously.

Guiding Principles: The Zen of Python

In June 1999, Tim Peters listed out nineteen guiding principles for Python posted on comp.lang.python. Note these are not hard-and-fast rules but a foundation for understanding the python mind. You can get the list yourself by typing import this in the Python REPL.

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those!

Again, these are just guiding principles and shouldn’t be considered law, the thou shalts are reserved for PEP-8. These principles are useful to keep in mind when architecting your system, or if you start to get a little clever or tricky in your coding, oh yeh keep it simple and explicit.

At the core, one of the best parts of the Python culture is keeping in mind that developers are people, and they will have to read your code later. Be nice to each other.

A Year Working Remotely

A year ago I started at Automattic, Automattic is the company behind WordPress.com, Akismet, Gravatar and other internet services. We have over 200 people in 20+ countries and 80+ cities and serve a billion visitors a month — and we have no office. Here is my recap of a year working in this distributed environment.

We prefer to call it distributed working instead of the more common remote working, because remote implies there is a central spot that you are remote of. While we do have a lounge space in San Francisco, it is not really HQ, more a co-working space you might find a small handful of locals there, but there are also hubs elsewhere that co-work together. The Bay Area is probably less than 10% of the company.

Remote working is receiving a lot of attention recently, for numerous reasons. The type of work many people are now doing is moving to all digital formats that only require a computer and a connection; employees tend to prefer the flexibility to work anywhere, and it can also be cheaper for the company.

A book looking at Automattic’s distributed work culture recently came out, the Year without Pants by Scott Berkun. Berkun worked at Automattic for two years to help create teams and embed himself within the company to experience the culture first hand. He left about six months before I started, so I never worked with him.

If you want to dive really deep into the behind the scenes at Automattic, this is the book. The company has changed a bit since Berkun started, around 4x bigger, so doesn’t feel the same to me; but the underpinnings are there.

My experience working at a distributed company

When joining Automattic, I was hesitant about not working physically together with everyone. At my previous company, everyone except Sales was in the same building in San Francisco. I joined there when they acquired my company, we were five people based out of Palo Alto. Even though it was only five people, 30 minutes away, we had trouble making that remote office work. We ended up shutting down the Palo Alto office and everyone had to commute to the city. This created an additional 30+ minute commute for most and we ended up losing a good engineer because of it.

So coming in to Automattic, I understood how difficult it is to not be together. Your company must fully commit and have a distributed mindset and culture. Automattic does, my previous company did not, which is not to say one is better than other, but you need the right mindset to make remote work work.

Counter-point: I was recently lucky enough to get a tour of Pixar, its an amazing place and they have no remote workers. Just about everyone in the company is at the single location in Emeryville. We toured the Steve Jobs Building, which Jobs designed to highlight being together, promoting interactions by placing bathrooms and eating areas in the center. They even move teams around as a movie goes through different stages of production to work closely with the next production team.

The company culture at Automattic is what makes it successful, it started and has always been fully distributed. A distributed workforce requires extraordinary levels of communication tools and channels in place. We have that in many forms, from our own P2 system, IRC, Skype, Google Hang-outs and even the occasional e-mail. More importantly the built-in habit and expectation of open communication since its not just one or two remote engineers, but everyone is distributed. Here’s another view from a co-worker hired soon after me, Remote Work Done Right

Work and Life

When I started, I was coming off paternity leave after my second daughter was born and my older daughter was approaching two. My wife was taking a leave from her job for a year so she can spend it with the girls, but we knew raising two under two was going to be a challenge for the first year or two. Confirmed.

Now you might be thinking, who cares about your family and situation, tell us more about the distributed company but it is key, I care. I’m an employee with a life and situations. Every one of us has things going on in their lives. How we fit into work and how work fits into our lives is a pretty critical factor.

I saw a recent slide about Github, which is also a distributed workplace that said “githubbers don’t miss dance recitals” – just great! The company is thinking about what’s real for their employees.See Github principles slides

Now it is true most companies can be flexible every so often so employees make the dance recitals. However, working from home I can help out by simply watching the girls for two minutes so my wife can go to the bathroom in the middle of the day.

Can I succeed in a distributed environment

Another concern I had when joining was can I be successful in a distributed environment. I’ve always worked directly with people, the last few years running an engineering team and doing little coding myself. Most of my problems were people problems and I find it works best to sit down and talk directly to help solve.

Success is hard to measure in just a year, I think it’s been a good year, not quite as well as I hoped but I always have high expectations and still learning how to get things done. This is somewhat expected at any new company and hard to say if a non-distributed work would help on-boarding or just takes time.

Occasionally we’ll run into problems that might be solved quickly by walking over and going out for a coffee. Especially as we continue to grow and have more and more teams, but every company I’ve ever seen runs into issues with inter-team work. It just requires a little more work and patience to work together, a benefit of our distributed nature is we are just as close to other teams as our own. We don’t have the tangible differences of different floors or other constraints to mentally separate us.

I won’t go much into the obvious and much discussed wins of distributed workplace: you can hire the best talent around the world; our Systems team has great time zone coverage; save money on buildings, etc.

A big plus and minus, is our meetups. Around four times a year, we do an in-person team meetup, and since we are all over the world, the meetups can be all over the world. I’ve traveled to Lisbon, Portland and Austin and missed Denmark due to a conflict with my daughters baptism. This is the minus side, traveling around the world is great, but I have a family and young girls so its extra hard for me being away especially on my wife. We “joke” on my team that the true cost of the meetup is when we come back; costs include: new fridges, remodeled rooms, dog for the kids, etc..

In summary, the year has been great, challenging in many aspects but to be expected with a new company, massive scale and a new distributed working style. It took some time to adjust but the positives by far outweigh the negatives, I enjoy the distributed aspects and working with some of the top technologist in the world.

Hiring plug: if all this sounds interesting and you want to make the web a better place for a billion people, we are hiring.

Docs that make you better

I’m excited to be getting a new camera and being a dork, I’ve been reading the manual online waiting for it to arrive. An interesting thing if you read photography manuals, the documentation does not simply document the camera and features but gives advice on how to be a better photographer.

The Fuji manual I was reading gave tips on holding the camera steady, brace your elbows against your body to help stabilize and take a blur free photo. Another tip on testing your gear, for important occasions take a test shot and practice to ensure that the camera is functioning normally.

Clearly not the most amazing advice, but it goes beyond simple usage and starts getting at the why you are taking photos and to help you achieve a quality shot.

Kodak is better at it, their manuals included a lot more detailed advice, for example from the Kodak Brownie manual

How to make a portrait

I also remember being able to pick up pamphlets published by Kodak with their top photography tips. I couldn’t find an example of the old pamphlets but the tips are all online in Kodak’s tip center

Today we call this content marketing, but now publishing content is primarily used just for SEO to get more traffic. The content is written for bots laden with keywords and marginal usefulness. Kodak of old was honestly trying to help their customers be great photographers. They had new complex equipment and worked hard on educating people not just how to use the camera functions, but what makes great pictures.

For technology, sites and services today it is rare to see much documentation, manuals no longer exist for software, and most sites just include an FAQ on how to troubleshoot issues.

This may not apply for all sites, but I hope to see more marketing and content to try and make customers better and not just features hocking their wares.

The Siren Call of the Upgrade

Apple introduced the latest OS upgrade and increased the enticement by making it free for everyone. Looking over the feature list, there was nothing in there I really cared about. The dubious promise of faster and better performance, it has compressed memory! My system didn’t seem slow and I only run it on a iMac at home, so battery savings doesn’t really matter.


However, there it was a free upgrade, something new.

I knew the upgrade would take awhile to download, awhile to install, there would be an unknown incompatibility or two, new features would not work as promised and in the end I would be able to do exactly what I was able to do before. Alas, there was the red badge sitting on the App Store icon.

This time might be different, right. This might be the game changing upgrade that delivers wild productivity, super fast computer performance, rainbows and unicorns, this might be the one! How can I risk not upgrading, its free.

In the end, I upgraded, as did you. The funny thing, most of my work on the Mac is done in a VM running Linux, so the host OS matters even less. Of course the upgrade broke the VM, so I had to upgrade VirtualBox and after a few restarts and fingers crossed, everything got back into the same working order I had before.

No rainbows, no unicorns, but at least that red dot is gone.

It’s not about the coffee

A few companies are launching fancy robotic coffee kiosks intended to take on Starbucks and high-end coffee shops, from Quartz An army of robot baristas could mean the end of Starbucks as we know it

It appears the main selling point is speed, consistency, reliability and the perfect cup of coffee. I think they are missing the point on why Starbucks and coffee shops succeed and what value they provide, it’s not about the coffee but the social experience.

People meet at coffee shops to talk, gossip, catch up and socialize with each other. Starbucks own mission statement is more about people and neighborhoods then the coffee. Sure people get coffee there, but that’s the excuse not the reason.

I don’t doubt the robotic kiosk will be able to turn out coffee just as good as a barista, but the barista with all their inconsistencies offers a human connection that a machine doesn’t. A person remembering your name is a lot more special than a computer remembering. Also, there’s a reason people who can work from anywhere, get out of the house and go to coffee shops to work.

A question asked in the article, We used to go to banks, and now we get cash from ATMs. Will coffee be the same? My bet is no, coffee won’t be the same. I doubt many people went banks to socialize, hang out, on a first date or other various reasons people enjoy coffee shops.

I might be wrong, but my bet here would be on the personal and social interactions of coffee shops beating out the robots.

Don’t Guess, Know

Most bugs I create come from not really understanding the system I’m working in. The system might be a framework, programming language, a standard or whatever.

A very common example, and I suspect the origin of 98% of all code, is the copy-paste-tweak methodology. This is how the web got started, View Source was the best teacher on the web for a long time, sadly now it is mostly useless.

The methodology is find something close to what you want to build; copy-and-paste the code and tweak until its doing what you want. This is a good way to get your development started but be wary, bugs will creep up and the less you know about what’s going on the harder it will be to squash them.

Here’s an example using CSS I was working on creating a new layout and design and I saw something close on a site I liked. So I used their CSS as a starting point but didn’t like all the nested DIVs and wanted to tweak the widths, so hacked away on it.

I ended up doing all sorts of tweaking of paddings, margins and widths and was really struggling getting what I wanted. After wasting too much time with that, I finally stopped asked myself what am I trying to accomplish?. After knowing this, I refreshed myself on how the css box model works and with that understanding, I then was quickly able to set it up exactly how I intended and it worked.

Now many times a developer will get it “close enough” from tweaking and release it. Bugs will come in due to cross-browser issues, unintended input, etc. The developer goes back and tweaks for that case, and repeat. The end result is a whole lot of fragile code.

Another example, I see this is in character encoding and special characters, which is rather complex. If you just tweak and handle edge cases, and not really setup and understand properly, then you’ll continually be chasing your tail.

I see this same base problem pop up in many scenarios where a little deeper understanding can go a long way — from understanding security implications, database indexes, layouts, scalability and so forth.

Take Control of Your Content

The last few weeks I’ve been taking back control of my content from the larger sites. A have a few reasons for doing so: (1) the Instagram hubbub got me thinking about content and control; (2) I started a new job at Automattic, purveyors of fine blogging software and want to eat some dog food; and (3) I have stuff scattered about with no real rhyme or reason on where I’m publishing something and a new year brings a resolution to make sense of it all.

If I took a photo, I might publish it to one of six sites being Facebook, Instagram. Flickr, Twitter, Google+ or my personal site. Not to mention texting a photo to a friend or sending via e-mail, but those are more communication mediums than publishing.

Ownership and Control

Domain ownership is fundamental to really owning and controlling your content. If I own the domain, I can move it to wherever I want, I can configure DNS to go to a cloud hosted solution such as WordPress.com or I can point it to my own self-hosted servers. The beautiful part about this is I don’t have to tell my audience (assuming I had one) to update bookmarks or navigate to a new place when I make a change.

Imagine the scenario that I use Flickr for all my photos and then wanted to move them to Google+, getting your photos from one site to the other is one issue, but fairly technical and solutions exist. However, the bigger issue is all the people familiar with seeing my photos on Flickr will no longer see them there. There is no way to seamlessly redirect users from Flickr to Google, so you have to work much harder to publicize and link your content in a migration. This is not a technical issue easy to solve but one of people and habits.

Exporting Content

If you can’t export and use your data elsewhere, you don’t really own it. In migrating my content, the only site that made it easy was Google+, so kudos to Google for allowing me to download a zip of my photo albums, this made it easy to download and import them to use elsewhere. Instagram gets the worst grade for making content accessible, but since all of it already existed on my phone nothing was lost. Just took time to find the quality photos I uploaded with all the bad shots I didn’t. However, if I had lost my phone it would have been a pain.

Notifications and Driving Traffic

The best thing external sites and social networks provide is the built-in audiences, Facebook is fantastic for this. Almost all of my friends are connected to me on Facebook and uploading something there is almost guaranteed to get me at least one like and a few comments. This is the allure, but don’t fall for it. Use the social networks for what they are best at: networking. Instead of putting your content there, provide a link to your site, this is the web, links to other sites not walled gardens.

True, you may receive less comments and likes by doing this but giving up some control for ease of use is enticing but ends up locking you in. Users might take an extra step or two to click, view and like something but those that do are from people really interested in a comment and not a drive-by liking by old high school acquaintances.

Twitter does this best, linking and notifications, it has ended up being a great RSS alternate which for some reason RSS got stuck with just the tech-savvy. With Twitter, I can publish all my links at @mkaz and the people who want to subscribe will receive the updates. Most of my geeky non-family links get published on Twitter, and cute babies for the family links on Facebook, but I might cross post an extra cute photo or two.

Taking Back Control

Now after taking back control, the majority of my content is being published on domains that I own. I did end up with a few sites but still half as many. My personal site mkaz.com, where I publish random posts and articles that tends to be lots of development and geeky stuff. I have a family site at kazmierczaks.com which is where I post family photos that I previously might have posted on Facebook, this is good too for Grandparents who aren’t on Facebook they can still see the kiddos.

I have a photo blog at mkaz.wordpress.com which replaces what I published on Instagram and Flickr and I have my higher quality photo galleries at photos.mkaz.com which replaces Google+ and Flickr.

All these sites are running some version of WordPress be it the self-hosted as is the case for mkaz.com and photos.mkaz.com or cloud hosted by WordPress.com which is the case for kazmierczaks.com and mkaz.wordpress.com.

This isn’t just because I work for Automattic, I’ve been using WordPress for awhile; its because WordPress meets the criteria I’m looking for: it is open source, I can extend, customize and use anyway I want. I can manage my own domain and even the hosted solution gives you the complete ability to export your content and move to a self-hosted site if you wanted to.

So with the new year and resolutions upon us, I ask you to consider, do you control the content you are publishing? Is it yours or does a large corporation own, control and will do with as they please?

Further Reading

How does Apple do it?

I often hear people ask, how does Apple do it? How are they able to release amazing products time and time again, products that redefine markets, products that are beautifully designed? The answer seems very clear to me, focus. Apple has a single minded focus and commitment to producing great products.

This is not just a slogan or corporate vision, the Oakland Raiders have their “Commitment to Excellence” but when the rubber meets the road, does anyone see that commitment? While Apple does not even need to state a vision, it permeates and oozes out of every pore of the company. Every product they release, every store they open, all marketing and communications, everything is all very Apple.

Steve Jobs and Jonathan Ive have no magic potion, they are both obviously smart guys, but I hate to tell you the magic they have is not in the ability to imagine or design amazing products. You can check out an Apple forum nearing any launch and see amazing designs and ideas from hundreds of people. The design and ideas aren’t amazing, it comes down to the execution; this is where Apple becomes brilliant.

The whole company aligns around the next product development and launch. Each employee becomes dedicated to the product and their role in execution. Everyone knows how high the bar of excellence is set and aims for that; it is in the culture of the company to be great. So when an engineer is working on a task, she doesn’t leave it at good enough, she puts in that little extra to take it to the next level.


Their culture is the overall biggest asset Apple has, Steve Jobs is a great leader because he was able to infuse the company with his demand for excellence. You can see this at Pixar also, same commitment and focus to creating the best they possibly can. Watch any of the DVD behind the scenes of a Pixar movie and you’ll see it. Apple should continue down this path as long as they continue to embrace the culture, with or without Steve Jobs.

The problem will be if the next CEO and leaders start injecting a new culture; maybe by trying to cut cost they start skimping a little here or there, maybe their focus becomes increasing profit margins or market share and not excellence. They may not do it on purpose, but the values at the top permeate through, as Jobs shows when you truly value excellence it pays off.

So, what does your organization value? When the rubber meets the road, do you start cutting features, take short cuts on quality to make it out the door? Are you planning, designing and aiming for making an amazing product or just trying to get something launched?

Why Microsoft OneNote kicks so much note taking ass!

I recently tried out Microsoft OneNote, I’ve heard great things about the tool previously but being a Mac user for so long I didn’t have the opportunity to use it. Lately, I’ve been using VMware Workstation on my Mac so I can run Outlook and properly schedule a meeting. The latest Office update I got came with OneNote so I gave it a shot, turns out it is a fantastic tool!

I imagine the developers of OneNote went to Steve Ballmer and asked him his thoughts; in a rant that only Ballmer can do, he danced around screaming Tabs. Tabs. Tabs. Tabs. Tabs. OneNote has just a wonderful amount of tabs, well only three to be precise, but it is exactly the extra level of slicing that I need.

I’ve tried numerous tools from Evernote to YoJimbo, through just about every list of suggested apps. Every single one I’ve seen allows two basic methods of categorization. You have a folder with items in it. This allows you to create two categorizations, a bunch of folders filled with a bunch of stuff.

For example, if I create a folder for each project I manage. All the items inside of that folder are at the same level. I can’t file meeting notes together, or specs, or anything else. Everything in the folder is more or less the same.

True, most apps allow tagging and additional methods of sorting and searching, but all require an extra level of effort and difficulty around managing the content. For example, I first have to see everything and then filter on what I want. This is very different than only seeing what I want from the start.

What OneNote adds is that one additional level of slicing which is great. You have Notebooks which hold Sections and the Sections can hold pages. So you can create a broad level Notebook, say Engineering, inside of which you can create Sections for specific meetings and inside of that you can create multiple pages, one for each meeting notes.

To do this in other tools you would need to create a new folder for every meeting type, and then a new note for each instance of that meeting. This is hard for multiple projects and numerous meetings which can’t be grouped together, the number of folders to wade through grows quite daunting.

Here is an examples of how I slice my notes for a particular meeting, each note of the meeting gets its own page (highlighted in red)

Another nicety of OneNote is that you can place text anywhere on a page by just clicking in that spot. This allows for a good way to add notes to a particular section, for example capturing commentary during a meeting. Plus it is an Office app, so you get all the cross object support you would expect, such as being able to paste in charts and graphs, etc.

So in conclusion, I really like OneNote and all those lovely tabs. I hope Microsoft starts including the tool in Mac Office, or someone steals the extra tab idea and incorporates into their product.

Distributed Social Networks

As the NY Times article today shows, social networks are sprouting up everywhere. Small niche sites such as the Portland Trailblazers, BarackObama, Nike, and now Ning’s wicked service which allows anyone to build their own in just a few minutes. But how many of these disparate sites will someone want to join?

Does some one need a full social network for every interest they have? There are some very broad markets primarily based on age and stage in life. These markets have a large set of people, all trying to define themselves and find their way, so huge networks make sense. A large network gives more ways to connect, find some one like minded or in a similar situation. MySpace dominates the teenage market, Facebook dominates the colleges, and the parenting space is currently up for grabs, though we hope my company Maya’s Mom will soon dominate it.

But what about the niches? Sports team I like, SF Giants, Buffalo Bills; every interest I have, photography, golf, horror movies, whatever. Do I need to join a social network for each? Setup yet one more profile, username and password, have one more spot to check messages and comments, more places to invite friends.

Having many small niche networks is great for keeping the site focused on an interest. If you want to write or talk about that interest, someone there will be interested. A small site lets you know most people in the network, which gives a greater sense of community. I recall reading in the IDEO innovation book that 150 people is the magical group size number.

Fred Wilson talks about this same issue, which I agree with him on what is needed. For many small niche sites to succeed we need an open network: a distributed authentication scheme, which looks like OpenID might be it. A distributed and secure way of sharing profile info, sharing friends and connections and all the other details that make up a profile. A permission system is needed on what you are willing to share with who and what network.

An uber home page is also needed. You don’t want to go to every network you are in just to see what is happening. This uber home could list which networks you are in, a conglomerate view of your writings and writings from others, messaging and notifications across all your networks. Plus you would probably want two views of the home page, one for your self and one to share with others

Google or Netvibes homepage seems to be a good start for the personal home page. You can use RSS now to tie together content from anywhere. Add widgets for email, photos and other content. Plus as more and more widgets become available from the social networks, more info will be able to embedded.

Facebook and MySpace do a decent job with the shared view, but they don’t tie together as much external content as freely as Google’s homepage. Facebook supports sharing and MySpace allows for widgets, but both are limited. I can share photos and videos easily enough with widgets, but it is still difficult to embed RSS feeds. Netvibes has the Universal Widget idea which seems like a good open method for creating embeddable object.

I look forward to seeing more interoperability between all the networks. I think companies should build to be as compatibility and interoperable with others, it’s what users want and what makes the internet work.

Goodbye XML, Hello JSON

About four years ago I wrote an article on the limitations of XML, I’m here to back that up with some numbers. All of the same issues apply to XML today as they did then. It is still a bloated format, still requires external libraries and still takes plenty of code to parse.

Our search at Maya’s Mom runs on Lucene/Tomcat and was returning XML to PHP over HTTP. I’m not quite sure my initial decision on this, probably so used to hearing Java with XML over HTTP it sounded fine at the time. Since we are working on improving our search and always one for embracing change, we switched Lucene to return JSON.

Now instead of using an external library and several routines to parse the data, it is done with the PHP JSON module and one command: json_decode(). The JSON module is a C module built in to PHP, which is one reason it is much quicker. The decode converts the data straight to PHP objects and arrays. One stroke done.

deleting code is even better than writing code

The JSON format is far more terse than XML, reducing network load. Plus JSON gives us a bit more flexibility for search; we do some type-ahead stuff which requires Ajax to call a PHP page which performs the search, parses the results and encodes to JSON to hand back to Javascript. Now since search can return JSON, it can all be done straight from Javascript reducing the amount of code to write and maintain.

Performance Numbers
Converting to JSON removed over 200 lines of code, which deleting code is even better than writing code. Your mileage will obviously vary, during the conversion there was some code clean up and refactoring

Speed Improvements: a round trip query and parsing in XML was 400+ milliseconds; now reduced to less than 20 milliseconds, a 20x improvement!

More info: there is a minor debate about the two interchange formats. Plus an article comparing the two.

To me, there is no comparison.

MySpace architecture and scalability

Baseline magazine has a good article on Inside MySpace. The article discusses the technical issues MySpace has had to deal with growing to 140 million users. If you are interested in technology, scalability and large site architecture, definitely check it out.

It is interesting to read about all of the account milestones they reached and the architecture in place and changes they made to handle it. I was a little surprised that it started out on Cold Fusion, which I was programming with 10 years ago (which really makes me feel old). Now converted over to C# and .NET.

I was shocked to see that it took them until 17 million accounts before implementing cache servers, that would’ve been a more efficient use of resources, though it wouldn’t magically solve the problem, exponential growth to 140 million users in two years is a scenario real difficult to digest using any technology.

I worked on scalability and system performance at ETRADE so definitely have interest and experience in this area. ETRADE issues of growth were a bit different since we didn’t have the luxury of being able to lose data and 100% reliability was required, down time during market hours was money lost. The type of load is also completely different, ETRADE has a massive amount of transactions occurring during a short period of time. The transactions and data flowing is relatively small and controlled, just lots of them to process. MySpace has a massive amount of users at all times contributing random amounts of data, making for a different problem.

I have a little insight into Facebook’s architecture and some choices they made in design. They made some earlier decisions which I think helped them avoid some of the major growth problems MySpace saw. Facebook also has grown at a slower more controlled rate. But some of their segmentation decisions are now becoming issues though as they try to expand further and integrate their many networks. It would be great to see a similar full in depth article about Facebok and see how they compare.

I do look forward to having some of these problems at Maya’s Mom, scalability issues to that degree means you are doing something right.

‘Rich Text Editor – IE, Firefox, Safari ?’

Things should be easier.

Why can’t I do the following with HTML:

        resizable="yes" ... >

It would display a nice rich text editor, native to the browser with all the necessary controls and shortcuts.

When submitting the rich textarea it would simply POST well-formatted HTML as you would expect. You wouldn’t need a huge download, buggy javascript, different editor widgets for each site. You could have the same consistent spell checker every where.

Instead I’ll use Moxie’s Tiny-MCE with it’s little idiosyncracies.

Next Up: W3C, where’s my drag-and-drop image upload standard?

Computers, we have a long way to go

After trying to remember the HTML character code for the fancy quote mark for the 1,00th time, I realized we have a long way to go with interactions with computers. I’m not talking just pretty GUI’s and simple keyboard and mouse interfaces but the whole HCI gambit; computers are supposed to be smart and make things easier right?

Programming today is still plain ridiculous, yeh it’s a step up from doing assembly code, but 10-20 years from now programming in PHP, Java or C will seem as archaic as the punch cards of old. How come a compiler needs to crap out with a missing semi-colon — it even tells me and knows exactly where it is missing. Just fix it, shut up and move on.

I think the overall problem is things just aren’t good enough to just do it. So there ends up being lots of extra checks, confirmations and annoyances. Libraries aren’t abstracted enough, languages aren’t at a high enough level, doing things that should be simple, aren’t.

An example, it is a pain to just parse user input, store it in a database and display back to the user. It sounds like a stupid easy problem, being done everywhere right. It isn’t, ask a engineer to try this: parse a block of text for links, the text may or may not contain HTML code, the links may or may not start with “http://&#8221; or “www.” and create links for them, but don’t mess up any of the HTML code which may have images, embeds or links themselves.

Don’t forget to fix all special characters, encoding types plus any weird stuff Word throws in when people copy and paste from which ends up losing all of their formatting. Here’s the WordPress code to convert and format user input, how many different people across all the sites have written this same type of shit. I know I have, a few times.

Programming tends to be difficult and complex so engineers end up focusing on all these little things and spending time getting things just to work instead of building really easy interfaces for people to use. Such as:

*Computer, I just took a photo, please share it with my friends. It’s the last one on my camera. *

No wires, No connections, No programs. Just do it. The computer could use voice, wireless and contact/preference info all of which are available today. All should work together. It just sends the photo to my friends in whatever format they want: cellphone, e-mail, web link, whatever. Just do it.

Firefox and Safari Compared

There are a few compelling reasons I want to use Safari as my primary browser. These include: a faster native browser, iSyncing bookmarks, smaller footprint1 and nicer OS X fit. Each time the latest Safari comes out I try it out hoping I can stick with it.

However, I always end up going back to Mozilla, Firefox this week, hopefully the last name change. I think the top feature Firefox has going for it is the ability to customize the Search Box on the top-right.

In one click, I can search so many different sites. I can look up words in the dictionary, find what movie that actor was in, get a stock quote, whatever. Anything that is searchable is right there. [MozDev Directory].

**My plea to Apple: ** Dump Sherlock. Great idea. Bad Implementation. Move that technology into Safari’s top-right corner. It’s right there!

In general most pages look better in Mozilla. Don’t ask me why, maybe the fonts seem more consistently correct. Familiar sites look different in Safari. Another minor, but noticeable, difference is the context menu when right-clicking. It is missing most options, specifically back.

Web Development is still better with Mozilla. It shows the image size when right-clicking, even IE allows this with Properties. I had to write an AppleScript to handle this in Safari. Correction: Safari now supports this in the title bar. Also the Javascript console is critical when writing JS.

Both browsers include pop-up blocking. Mozilla let’s you know when a pop-up was blocked and has a nice way to permit pop-ups on a per site basis. I’ve become so used to this, I’m shocked when I see pop-ups when I rarely use IE.

Tab browsing is a must-have feature. IE won’t even be considered until it has this. It’s great when doing research, viewing documentation and even to maintain your train-of-thought. I’m waiting for a browser to allow draggable tabs. I’d like to be able to change the order of open tabs.

A nice thing Safari recently added, with regards to tabs, is the ability to open new links in tabs. So instead of a duplicate browser window being opened when clicking a link in Mail, it opens in a tab. Nice.

1 Memory footprint comparison, using top, after a few minutes of browsing with each. Safari RSIZE: 32.6M. Firefox RSIZE: 48.2M