I just bought an Asus Eeeeeeee PC 1005HA. Of course Asus has so many variations of each product that I actually need to be more specific and say that it’s the Eee PC 1005HA-VU1X-BK which means that it has the N270 Atom and no Bluetooth. I hadn’t realized it didn’t come with Bluetooth but I decided not to worry. I don’t use Bluetooth that much and I can buy a tiny tiny dongle for less than $5.
The first complaint was that the power supply connector was too loose. It barely stayed in at all. I couldn’t believe this was a manufacturing defect but it seemed even more incredible that it was a design defect. Thanks to Andrew it turned out to be a discoverability problem. One simply has to press the connector in a little harder until it clicks.
Overall the Netbook is really nice. The keyboard is nice, the battery life is great and the screen is good enough. I bought it for the train rides into the city, it’s so much lighter that it’s easy to think that I forgot my laptop entirely. Oh and it works with my iPhone tethering so that it truly is a Netbook. The hard drive came with two partitions which will make installing Ubuntu or Mac OS X such much easier. I’ll probably try that next week.
The trackpad is fine but the Synaptics driver is making me insane. It supports pinch for zooming but it doesn’t work in the one place I would use it all the time: Google maps. Instead it zooms the entire browser. The other gestures are just annoying. I have never liked the scrolling area on trackpads and on a device as small as this it’s awful. Even worse is Synaptics’ strange alternative to two fingered scrolling. I was expecting the “normal” two fingered scrolling because I’d tried it out on a demo unit (slightly different SKU of course) at BestBuy. I truly hope there isn’t a patent issue that’s preventing Synaptics from supporting two fingered scrolling. If anyone knows how to enable this, please let me know. Update: I finally woke up and searched for synaptics two finger scroll windows (credit to google autocomplete) and found an open source utility called two-finger-scroll that does the job.
The mouse buttons are just OK. It’s a single rocker that clicks left or right with a dead zone in the middle. What’s annoying is that it’s not clear where the dead zone is. I find myself using the trackpad tap more. All things considered I’d prefer a Mac like solution of a single tap friendly pad with a two finger or control key solution for right click. I remember at least one Netbook (a Dell?) that puts the buttons under the front corners of the trackpad thus providing just a tad more surface area.
My friend Adam has hammered this one home. A weak RNG can undermine the security of a system that uses it. A recent scenario we worked on together involved a multi-player game. If you can predict the RNG outcome then you can incorporate that into your game strategy. Why engage in an attack if you know the dice are literally stacked against you?
Now the problem has turned up in a far more serious area. Social Security Numbers should never have been used as IDs. The US has a long and hypocritical history of resisting a nationally issued ID card and so the really-not-an-ID-card-no-matter-how-many-organizations-treat-it-that-way SSN has become the de facto national ID card. A flimsy piece of paper and misplaced trust in a bank worked for a while but that ship has sailed.
Today we find out that the situation has gone from bad to worse. SSNs should be randomly generated numbers that are very long. Unfortunately SSNs were first issued a long time ago and use some “clever” scheme to self-validate against the person’s other metadata. And now, someone has automated the process. Name, birthday and social used to be enough. Now we should treat them all as public information.
It’s time to rethink identity in a way that protects individuals from the government, from each other and corporations. Recent efforts pretend that the government is here to help you. Fortunately most of these have failed but the problem hasn’t gone away, it’s getting closer and closer every day.
One of the key lessons I learned at Microsoft was courtesy of my friend Paul who got it from Jeff Raikes. What Raikes said was, that each level of management required completely re-inventing one’s role. It was never just more of the same with broader scope. It was always qualitatively different.
In other words, the skills you need to be a manager at a given level have almost nothing to do with the skills you need at the level above.
This is actually kinda obvious when you think about it from the perspective of the manager’s relationships. Those relationships largely determine what you do. The needs, wants and problems of individual contributors are very different from front line managers which are very different from mid level managers and then VPs. When someone moves “up” not only do they acquire a totally different kind of reports but their manager is also a totally different breed.
One of the first manifestations of this knowledge was the Peter Principle. The idea being that people who perform well will get promoted until they stop performing well. I think the Peter Principle is probably too simple. I’ve definitely met people who would have a hard time getting up to a particular level but who are very well suited to that level. In practice it’s hard for these people to get to their right level.
Now it turns out that there’s actual research [via Technology Review] to support this. The paper suggests some literally random ways to address this but I can’t help but feel there’s a better way. Why should roles be discrete nodes on an organizational tree? Why do we value the tree over dynamic, changing organizations with roles that adjust to the people, the problems and the circumstances? Why do we value a mid-level manager over the team?
Microsoft has long used mentoring to groom up and coming executives but this may not be enough. This probably helps keep productive people from being promoted too far but it doesn’t feel like a real solution.
I’m as bad as anyone when it comes to generalizations and simplifications. Yet even as I state that nothing is ever that simple I still believe there’s a lot of value in generalizations. They help us see patterns and anti-patterns. I see even more value in the effort to simplify problems. Much of what we do in building software is about creating a software model for real life messy scenarios. We simplify because messy software is very expensive to write and maintain. Ignoring unknown edge cases when architecting an application makes it possible to get something working quickly. I don’t think you can do Agile without starting with a deliberately simple model.
I think the tension between Agile and Waterfall sums up the situation nicely. They are yin and yang. Agile works because the people involved have enough experience to identify a good model early on. In other words, they already know the problem well enough to dispense with the rigourous process of Waterfall. In practice I’ve found that we never know all of the problem enough so a good project is one that is balanced between up-front design and discovery through coding and user feedback.
Another common example of this is around performance. Jeff Atwood generalizes that hardware is cheaper than programmers. Lars totally disagrees. This is hardly a new debate. Anyone who has had to make a complex application go faster knows how much work and risk it involves. Equally, anyone who has tried to get a complex application working (with incomplete and changing requirements) knows that optimizing too soon means you’ll never finish. Both Jeff and Lars are trying to present a simplified view of the problem. Both arguments are valid but lack the context of business needs.
The performance problem is often exacerbated by the lack of clear requirements. “Make it fast” isn’t helpful. “Ensure that account creation requests have a median response time less than 100ms and a 90th percentile less than 500ms” is better but
Good project management is about knowing when to use more hardware to buy time to build more perf. It’s about defining performance goals in business terms that make it possible to prioritize the work.