Ze Ace's Tech Spot

Thursday, May 29, 2008

Is carbon-dioxide still a problem in 100 years?

Today of course, over abundance of carbon-dioxide in the atmosphere is the biggest concern facing the world. But will it still be in the future?

Carbon is an extremely useful element. It's in our food, our oil, and is the exclusive ingredient in diamonds. It's in wood furniture and houses, and it's in plastic. Even steel and stone contain lots of carbon.

So in 100 years, when we're building spaceships to travel to other planets, and buildings large enough to house dozens of billions of people, where are the resources for all this going to come from. Traditional sources of carbon like coal and graphite mines will be politically unnavigable and costly. Cutting down trees and crops will be seen as an incredibly inefficient use of water and land. But there will still be tons of carbon just floating around in the sky.

I predict that within a century there will be a large-scale industry that uses cheap power (Solar? Fission? Fusion? Dark-Anti-Matter??) and uses it to convert CO2 into C and O2. The oxygen obviously will find it's value as rocket fuel, or just for breathing. The purified Carbon will be collected and turned into carbon-fiber, nano-tubes, bucky-balls, or whatever other brilliant substance we've figure out how to make. This carbon will end up removed from the ecosystem as it travels to other planets, or is merely encased in materials that won't break down for millions of years.

Within a few years, the world government will have to step in and put limits on how much CO2 this industry can remove from the atmosphere in order to keep the air healthy for plants. They'll look back on the "Carbon Taxes" of the early century and laugh.

Computers will search for the earliest mention of this phenomenon and my blog entry will appear prescient.

---

Either that, or global warming will have killed us all...

Monday, January 28, 2008

Car Mechanics vs. IT

What if people were as ignorant about cars as they used to be about computers...

- Hello, this is XYZ car repair shop and my name is Carl. How can I help you today?

> Hi, my car's light won't stop flashing.

- Ok, can you tell me which light?

> I don't know which one! I'm not "a car person" so I don't know that much about it. I just know there's a light flashing.

- Hmm... Are you talking about a light on the dashboard?

> What's the dashboard?

- The dashboard is the area behind the steering wheel...

> What? Why do you have to use technical names like dashboard. Can't you just say behind the big hand wheel? And no the light's not there. I'm not in the car.

- Oh, so it's on the outside of the car. Is it on the front, or the back?

> Uhm, let's see. I think this is the end of the car that I look at when I'm driving...

- That would be the front then. Is the light yellow and on one corner of the car?

> Well I think it's orange.

- Ok, I think your turn signal is on.

> What's that.

- That's the light you're supposed to use to signal to other drivers when you're going to turn.

> Why would I need that? Can't they tell I'm turning by looking at me?

- Well, legally you're supposed to use it before you change lanes to warn other drivers.

> Stupid laws, making my car more complicated. Isn't it enough that I have to remember which pedal does what?

- Yeah, well I can help you turn the signal off.

> The signal? Oh yeah, you mean the light. You'll have to stop using those technical words.

- Sure thing. I need you to get in the car.

> Ok, just a second. I have to remember how this key thing works. Let's see I put it in, and turn it. Nope that didn't work, let me try the other way. There we go. Ok I'm sitting in the car.

- Ok, so the steering wheel is in front of you?

> What? You didn't tell me to get in /that/ door!

- Sorry, my fault. Could you please exit the vehicle and then reenter through the driver's door. That's the one with the steering wheel.

> Oh, I'll never figure out that key thing again. Let me just climb over the seat.......... Ok, there we go.

- Ok so you're at the steering wheel now?

> Yeah, but now there's another light flashing. This time it's on the Dishboard or whatever you called it.

- Yes, that's the turn signal indicator, telling you that your turn signal is on.

> Whoa!! That went way over my head. I just want to know how to turn it off.

- Uhm, sure. So behind the left side of the steering wheel you'll see a lever sticking out of the middle of the wheel. Do you see it?

> Uhm, no.

- ... Are you sure? Try putting your had just behind the wheel and feeling around.

> Uhm, my hand doesn't fit.

- ... Why not? There should be lots of space behind the wheel.

> Well the flowers are in the way.

- ... ... ... Flowers? Behind the steering wheel? There aren't supposed to be flowers there.

> My cousin put some pretty flowers on my steering wheel. He's "a car guy" so he said it would look better.

- Hmmm... So there's flowers covering your steering wheel. Is there a lever sticking out behind the flowers.

> Oh yeah, this thing. I hate it. It's always in my way and I keep running my hand into it. Is there a way to remove it.

- That's the lever for turning your signal on and off.

> Oh, is that what it's for I always wondered. So is there a way to remove it?

- Uhm, remember the law says you need to use it, so no, there's no way to remove it.

> That's dumb.

- Yeah, well let me teach you how to use it. When you want to turn left, just push down on the lever and will turn your signal on. When you want to turn right, push it up.

> Right is up and left is down? That seems like a really dumb design.

- I assure you it's pretty easy when you get used to it.

> Whatever. How do I turn it off.

- Well, after you turn, you should tap it back towards the center. So if you pushed it up to signal a right turn, push it down a little to turn the signal off.

> I though pushing it down signaled a left? I'm so confused.

- Well if you push it halfway down it goes back to normal. If you keep pushing it down it will signal a left.

> That seems way too complicated. Why did you car people design something so stupid?

- It's really easy once you get used to it.

> I don't even want this feature at all. Are you sure there's no way to remove it?

- I'm sorry, you'll just have to learn how the signal works.

> Man I hate cars. I'm never going to buy one again...


-----

People are dumb, I'm the first to admit it. And anytime you're making a product for "everyone" you're really making it for the dumbest person around. User interfaces are always a pull between easy to learn and easy to use.

Cars have been around a long time. The interface has changed over the years, but the current incarnation is pretty good, and the rate of change has certainly slowed. Initially cars were terribly hard to drive. You practically had to be a mechanic to figure out how one worked. Eventually the basic things were simplified with inventions like automatic starters, fuel injection, automatic transmissions and ABS. This has made the car more accessible to non-experts.

But at the same time we've added things: Dashboard gauges, turn signals, seat belts, radios. These have been great enhancements, but they've added complexity to the interface. We've been able to do this because the interface of the car has become part of our culture and because we've required a basic amount of training in order to get licensed to operate a car. All people understand the basics, and we've been able to move past the most simple interface towards a more useful one.

As we continue adding to cars with navigation systems, backup cameras, and eventually collision avoidance systems and even self-driving vehicles we will have to adjust the interface. At each step there will be a resistance to making things "more complicated" but the new features will slowly become common and eventually will get so ubiquitous that we forget that it isn't obvious how they work.


Computers are at a very early age of the same cycle. The invention of the GUI was the beginning of non-expert usage. Even then, there were still a lot of interface objects that weren't critical. Over the past few decades we've made great progress in simplifying the GUI. A first time computer owner no longer needs to understand things like the file system, function keys, control panel or video modes. This has been a great step forward in bringing computers to everyone.

But what now. We don't have to keep making computers simpler. Our culture has grown and adopted the computer interface. The mouse, icons, menus, and programs are concepts grasped by everyone. It's time to move on to making the interface more useful.

Most programmers and IT professionals don't use the GUI. We use the command line! It's a horribly archaic interface that requires the user to understand a thousand details about the computer before they begin. This interface hasn't been improved in decades. But it's powerful! A few keystrokes can do what a half hour of clicking never could.

Now that the "dumbest" user knows the basics of the GUI, it's time to start moving the most useful features of the "advanced interface" into the basic one. It will make things more complicated, but eventually it will make everyone more productive.

After all, we all figured out how the turn signal works, and I'm glad for that. :)

Thursday, December 13, 2007

Does it make economic sense to treat your empoyees well?

So life at Google is great. The past week Deadra has been out of town so I've been spending a lot of time there. Three great meals a day (I've had lamb 3 times this week) and a midnight snack. Not that I'm working until midnight; I'm just playing board games with some of the other Googlers. On the days I'm not there so late I bring Chachi. Today the big discussions were the winter trip and the Christmas bonus. The bonus is two orders of magnitude better than any present I've received before. And my real bonus is still to come in March. The trip alas I can't go on this year because Dea is due so close to then, but it's a 3 day trip with a bunch of Googlers, traditionally to a ski hill but there's some different destinations this year. I've spent one day this week working on my own independent project. I also did a last minute interview so HR gave me a thank you certificate for a free hour long massage.

It's all kind of insane. Why would a company treat it's employees this well. Some think that Google somehow got lucky, made a bunch of cash, and now is spending it unwisely on ridiculous perks. They figure that the money will run out and either the perks will stop or the company will go bankrupt. Is this so?

Well, how much do these perks really cost? There's in the neighbourhood of 20K people in the company, including contractors, temps and interns. Give them all a nice salary somewhere in the 100s of thousands, toss in many 10s of thousands more for ridiculous perks, then add the costs of office space and computers and whatnotelse. Of course there's also potentially the stock options, but if the company is really going to run out of money those won't be worth anything anyway.

The way I see the math, the final compensation budget is somewhere around a few Billion dollars a year. That's a lot of money! Way more than I have, and in fact way more than many mid-size companies are worth. If you trimmed costs by 10% you'd have a few spare $100M per year. That's still a lot of money. Surely 10% trimming wouldn't hurt that much, right?

So what would a company like Google spend that cash on? How about another YouTube, or part of Facebook, or the next great thing that none of us has of heard yet. Google spends billions of dollars every year on these acquisitions. What do they typically get from these purchases? Software, Hardware and People. The Hardware is usually pretty minimal, and while the People are often great, they still demand salaries every day and big stock option grants so you're really only saving on their recruiting costs. That means that most of the value of these companies is in their software. Software can have value in two ways: It's complex software that would take a long time to reproduce, or it has users who wouldn't switch even if an identical product existed. Websites tend to have very little of the former, and lots of the latter (The first mover advantage).

So every year Google spends similar amounts on it's entire compensation budget and on buying companies that have first mover advantage. What if you could produce one more product in house per year, such that you then buy one less company. Well, that would save you Hundreds of Millions of Dollars, the same amount as all the crazy perks.

Most of these startups are created by a couple of guys in a garage working on crappy hardware with no job security. Surely if you took a few thousand really smart people, gave them all the perks in the world, great job security, the greatest computing infrastructure that exists, and a few days a month to brainstorm ideas, one great idea product would spring forth, right?

If all those perks cause one of thousands of Googlers to make one great product for Google then all the perks have been paid for.

When it costs the same amount to buy two guys in a garage as to keep tens of thousands of employees crazy happy it seems really dumb not to treat your employees well...

Saturday, September 29, 2007

Second week on the new job

It's been a busy week. Google has a ton of training stuff for Nooglers. A lot of it consists of learning secret stuff that may never be spoken of with the outside world. Fun stuff. But I've been more impressed by the real difference in attitude developers have here.

Every company says "you should write unit tests for all your code". This is the first time I've actually had training on how to do such a thing. And there's tons of infrastructure to make writing these tests easy. Then, every time you want to check in code you have to get it code reviewed. This ensures that all coding standards are followed, and makes sure everything is unit tested. But more importantly it makes everyone feel a group responsibility for the code. It also ensures that everyone in the group knows how well everyone can program. This means the peer review process actually works.

I'm having a great time so far, although my mind is numb everyday from information overload. I suppose that's a good thing. I look forward to actually contributing in the near future.

Monday, September 17, 2007

So I'm a googler

To be more precise, I'm a Noogler, an endearing term that sticks with new Google employees for their first month. I even get a funny Noogler hat to wear to the beer bash this Friday.

So far I must say I'm very impressed. I'm writing this from my new laptop, which is far more capable than the development machine I had before. My linux box at work has one of the biggest screens I've ever seen (So big that you'd be embarrassed to have it expect that everyone else does too, some two). The food was good, but we were herded like sheep today from orientation to orientation and had lunch on the go. I look forward to trying all the cafs.

The overall company feeling is great. Everyone is brilliant, and everyone is new. Seriously, I met one guy who'd been there more than a year. My team is half people under two months, and there's a new guy starting next week. I've been spending the day going through the piles of employee benefits. It's crazy. There's no way you could take advantage of all of them.

Tomorrow I start my engineering-centric training, so that should be better. I'll let everyone know how things are going.

Ciao...

Wednesday, August 29, 2007

My big news

So I realize that I've been really bad at keeping the content rate of this blog anywhere close to reasonable. Still, there seem to be a couple dozen hardy souls who took my advise and subscribed to my feed. As a reward for your patience I have some big news that will break here first!!!

In two weeks I start my new job, at Google!!!

Cool, eh?

I just got my offer last week, and I officially accepted it a couple of days ago. There's a ton of paperwork to fill out, ranging from background checks to immigration documents. But the most interesting two are those I received today.

First, they want me to pick my username. I've never had a choice before. In high school I was berkana which I wasn't very fond of. Since then I've mostly been aberkan, with the occasional adamb or just plain berkan. I think I've grown accustomed to aberkan so I'll probably stick with that. Any thoughts? (Remember the name should probably have something to do with me and shouldn't be rude!!!)

Second was a document asking me what kind of computers I would like. Notice the 's'! I get a desktop and a laptop, with any of Windows, Linux, or Mac OS on them. I've certainly never worked anywhere that lets you pick your development environment. So here's the dilemma I'm facing: I've mostly been a windows based developer my whole life, and the thought of not having MS Visual Studio for debugging is kinda scary. Also, my time at Microsoft made me a bit of a Windows guru, and I'd hate to throw all of that away. But... Don't real hackers use Linux? I developed on Linux (and Unix) in University so I'm sure I'd manage. I'm a vi freak so I know I don't need the pretty interfaces from Windows. Is this the right time to switch? Finally, I've been seriously considering buying a Mac for around the house. Apple is the hot shit in Silicon Valley right now, and all the hippest engineers are using Macs for their web development. Hmmm... I could even conceivably get a different OS on my two machines. But which two? And on what machines? Linux laptops are not an option, and I'm not really interested in a Mac desktop. That leaves:

Windows PC, Windows Laptop
Windows PC, Mac Laptop
Linux PC, Windows Laptop
Linux PC, Mac Laptop

I really don't know what to pick. I'm leaning towards the 3rd option, but they all have something to offer. Any suggestions?


I promise to keep mt loyal readers well informed about how things at Google are going, and that means you'll be seeing a lot more posts in the near future. So enjoy, and let me know what machines I should ask for...

Sunday, July 22, 2007

Generation of Data Paths in Synthetic Circuits

Hi all,

I was rooting around my old files today and I found my undergraduate thesis. A quick search on Google found very little mention of it and no copies of it at all. In an effort to share my research with the world, here it is:

Generation of Data Paths in Synthetic Circuits

The idea, for those who care, is to generate electronic circuits that have desirable characteristics. In addition the project can extract those characteristics from existing designs. The hope was you'd be able to say "I want to test on a design like this one, but a little bigger" and my program would magically make it so.

Of course it turned out to be far more difficult than I anticipated, and while the resulting design tended to exhibit the requested characteristics, in many other ways it came across as very artificial.

Ta Da, my contribution to the world of academia. Enjoy if you're into VHDL hardware design... or if you're really bored/insomniac.