Skip to content

Recent Articles

10
Jun

Django security overview docs

A brief security overview I collaborated on made it into the Django trunk! Let me know if you think I’m missing something.

If I somehow manage to get diligent, this might be just a precursor for a talk at Djangocon.

23
Apr

Visualizing Data: Startup Edition


Lately, I’ve been working on visualization some security data we have at work. While I can’t share exactly what I’m doing, I thought I’d share a little of what I’m doing.

I created a treemap of technology company market capitalization data as of today using Protovis. The different colors correspond to different sub-sectors. The startup data is hazy as there’s no publicly available market and I did the best I could. My goal was to compare the size of these technology companies and see if I could see anything interesting. One interesting note is that Facebook is about as big as the combined rest of the startups. Google and IBM rule the services world. Apple rules the hardware world, but I’m not sure I’d classify them as a hardware company.

Regardless, enjoy!

1
Apr

South Asia and Electronics

Looking at the electronics available in south Asia has really opened my eyes. This experience is just not available in the USA.

There are some products, such as some knock off iPods that I saw that I wasn’t sure could even be made for the price that the vendor was selling them. I had a hard time believing that a USB cable, headphones, 2GB flash, as part of a small 2-color screen mp3 player with speakers could even be made for the equivalent of US$10. I figured it was pretty close, but then when you factor in transport costs and the vendor’s time that it would need to be sold for more. I’m sure the quality is horrendous, however, here is a device which can play mp3s for $10! Perhaps I’m overestimating costs and this thing can be made for significantly less than $10.

Where to shop

I shopped at the Golden Computer Arcade in Hong Kong which was awesome. Literally a thousand vendors are cramped into three (?) stories of this building with components stacked on top of boxes or in buckets. There are people assembling computers on top of the boxes in which they came. There was almost no wasted space. Fortunately, I am not claustrophobic. In addition, the prices were right and I didn’t even haggle much. I did not spend a lot of money and bought mostly curiosities including a SIM card reader/writer, some antennas and a USB dongle that can connect to pirate TV channels worldwide. In this mall, you can buy just about anything from off-brand photography equipment to specialized digital controllers.

In Singapore, I went to Sim Lim Square and the Digitalife Mall. Both places were fairly similar six or so story indoor malls focusing almost entirely on electronics. There were so many vendors that you could spend an entire day at each and not see everything, but for the most part they sold the same things at roughly the same prices. The top couple stories of Sim Lim Square were most interesting because the prices were more reasonable and they weren’t just selling 5000 different iPhone4 covers or other off-the-shelf products. A lot of the products in these two Singaporean malls were the same things I saw in Hong Kong but for about 2-2.5x more. Name brand products had the same prices as online.

Where this stuff comes from

So if Hong Kong and Singapore had a lot of the same off-brand products, where do they come from? It seems to me that a lot of these businesses in Hong Kong and Singapore are small import-export businesses getting components probably from China. I really wanted to go see the markets in Shenzhen, but I wasn’t able to make it. I’ve heard of markets where literally buckets of most mobile chipsets are sold and you can get custom made components if you’re willing to wait and pay for it.

This is a woman assembling some components for sale in the back of her store in Singapore.

13
Mar

Code Happiness

While I was reading Delivering Happiness on my vacation, I got to thinking about how it applies to me. Tony Hsieh claims that a key factor in Zappo’s success was making sure his employees, customers and suppliers were happy. So what are the best ways to keep developers, management and customers happy in a software setting?

For open source projects, there is often no management. Developers are giving away their work so you would assume that if they weren’t happy they could just move on to a different project. Users of OSS are usually happy to get something for nothing but at times I’ve seen them get picky and demanding. The situation for companies is quite a bit different. Quite often management is telling a developer what to do. Marketing or sales has promised the world and customers are unhappy at what is delivered. Senior management is breathing down the neck of middle management to get the project done faster, cheaper and better. So why are so many talented people willing to give their time — which is worth a fortune — to open source and at the same time companies struggle to keep their developers happy and engaged? Why also are a lot of users (especially power users) satisfied with open source but not satisfied with commercial software? How can management simultaneously keep developers happy and also ship products on time and on budget?

Understanding and recognition

In a commercial setting, there’s often a barrier between who worked on the code and who the users (customers) are. Developers like to be recognized for their hard work like they are in open source. It gives them a sense of pride. It certainly does for me. Now I’m not suggesting that companies should tear down the wall between developers and customers completely and always have an easy direct line of interaction between them. However, there should probably be a door on that wall. Developers may be surprised at how their creations are being used and they can come to a better agreement about new features or a change of direction. Users also may better understand why a feature was done a certain way instead of simply thinking that the software was done poorly. Open source usually has a direct line but once a project is big enough there is also a users group to field the easier questions and concerns. This satisfies developers’ desire for recognition while also allowing for good communication with customers

Ownership – the key to happiness

The idea of having developers interfacing with and understanding the wants of customers suggests that the developers, not strictly management should be at least partially in charge of what features get developed. If management can’t convince developers that their work is important, the project is doomed to failure. Nothing can lower the morale of a team of developers faster than knowing that they are working on something that they view as valueless. People want to feel that their work is useful. Problems of code ownership are for the most part unique to commercial software since there’s always a sense of ownership with open source.

On the other side of the same coin, why have Fedex days at Atlassian and 20% time at Google been so successful at motivating developers even when management is removed from control? The answer, I think, is three-fold. Firstly, I think concept of pride and recognition play into it. Secondly, developers like to have that control and not always have management dictate to them. The other reason is that when a developer works on a codebase more than a certain amount, they become uniquely qualified to make certain improvements: refactors that only they can make or features that only they could think of. In a word, they become the master of their domain and they just need the time to show it.

There’s an entire TED talk on the topics of autonomy, mastery and purpose that is worth watching. While the conclusion is that those are better motivators, I think they also lead to more happiness.

So what about management?

So if management isn’t really as important in telling developers what to do, do we still need them? While open source projects get by just fine without them, I think managers are necessary for commercial projects. However, instead of telling people what to do, I think managers (and developers) would be happier if they functioned more like idea-men. They plant the seeds of ideas into the minds of developers and see what takes root. While emersed in a project, occasionally it is difficult to sit back and take in the big picture. However, somebody needs to keep it in sight while also having an eye for improvements.

What to do about it?

One other message from Hsieh’s book is that it is never too late for a change. If your management is draconion and completely removes you (the developer) from the process, it might be time to explore other options. Likewise, if you’re a manager and you basically function as a middleman and your superiors yell at you to go yell at your subordinates, there are better opportunities out there. You might also take these things into account as a consumer of software as well. You might just end up a little happier.

Update (March 15, 2011): There’s a good article at NYT about Google’s approach to management.

Here’s a picture of some of my friends on a trike taxi in the Philippines.

5
Mar

RPC4Django Updates March 2011 Edition

I’ve been ignoring RPC4Django for a while, and I figured it was time to revisit it. There have been a couple bug reports as well as a bug reported against South. On a slight tangent, South works amazingly well. Getting back to RPC4Django, there is also a merge request on Launchpad to “allow specific methods to be available at specific URLs”. It sounds like it might be useful. What do you — the nebulous community — think? You can take a look at the code here.

I’ll be out of town for the next month on vacation through South-East Asia. I’ll be sure to post a picture or two.