April 30, 2003

Thanksgiving

Today as I was shutting everything down at work I noticed that it was April 30th and I had a nice quiet moment that I should have had a long time ago. A few months ago I was very worried about me finding a job, the war, my wife, my current job, money, etc. I have much to be thankful for. The war is basically over, I have a job, my wife is moving over soon, we have an apartment, we are ok. Thank you. I should have thanked you everyday instead of asking for your help and then just putting my head down and working as if you weren't even there until I got to the top of the hill and relaxed, forgetting that you were the one who made the hill, made me capable of climbing it, and allowed me to do so.

06:43 PM part of personal

April 29, 2003

One cup

All I need is one cup, one cup spread my code to the whole world.

06:43 PM part of work

April 28, 2003

Professional

Sometimes the little perks matter a lot. I just received my new computer at my new job today - I was sitting in my office in my nice leather chair when I took it out of the box. It is top of the line with a large screen, embedded wireless card, pornographically long battery life, lightweight, comfortable to type on, etc. For months this machine, which only cost a few thousand, is going to whisper in my ear that I am important, hard-working professional and so this is what I will be.

06:42 PM part of work

Thunderstorm

There is nothing like a very dangerous thunderstorm to remind you that you are small and fragile, that your
shelter is temporary, that your possessions are fragile and fleeting, and that your relationships with people are the
most real things in your life.

06:42 PM part of personal

April 23, 2003

Perspectives

Me:

Man, I love my new job – it is just so cool how well I fit in with my new boss and everyone else around the office. We are working on some of the same stuff, so my technical expertise is appreciated and I get to develop some cool new stuff as well. I mean really, how many jobs are there where on your first day you can make a contribution and work well with the team? My boss and I just understand each other – there is no need to speak sometimes.


My boss:

Man, I think that the new guy is mildly retarded or something. There are these long stretches of silence where he just looks at me and makes grunting noises and gives me the ‘thumbs up’ sign before returning to his office.

10:26 PM part of work

Phones

I was talking on the phone with my wife today and I realized how different it is to talk to someone over the phone when that is the only way that you are communicating: little changes in tone turn into arguments, little arguments turn into big arguments; you are only as happy as your last phone call was pleasant. The thing that really bothers me is that all the little things that happen to me each day – my stories – can get lost because she isn’t there to hear them in person when I get home; my retelling of them after the fact is a watered down replacement just as our phone conversations are of what we really want to communicate to each other.

But this reminds me that this move was the right thing to do since it puts us near family and friends that we normally just call.

10:26 PM part of personal

Stars

You can actuallly see stars from our porch (yes we have a porch) even though we have moved from a smallish city to a largish one, we can actually see a good bit of stars from our porch. Awesome.

10:23 PM part of atlanta

April 22, 2003

Reflections on the new job

I love my chair. Not in a sexual way, but in a very physical way indeed. The support on my back is excellent – lumbar support – it is like I am an hour-old baby held up in one of Anne Geddes model’s hands.

11:04 PM part of work

Where the Players play

Today while sipping my Starbucks diabetes-in-a-cup, thumping Ludacris, and cutting across five lanes of traffic on my way home to my suburban rented mansion, I realized something: I live in Atlanta now.

11:00 PM part of atlanta

April 18, 2003

Leaving

It is very strange to say goodbye to people when you move. The ones that you are closest to you keep in touch with you, but the ones on the outside - the people at work who you know by name and shared experience - are difficult to leave because you are basically saying: I will never see you again ever, I am dead.

12:13 PM part of personal

April 17, 2003

Balance

I try to balance the amount of time that I spend working on a machine and doing regular things in the physical world. I know a lot of people who go to work and write code all day and then come home and log on to online computer games instead of watching TV and then go to sleep.

While I don't think that there is really anything wrong with living in this way, I do think that after living like this for a number of years you can turn into an impatient jerk without realizing it. Computers pretty much do what you want them to; when you move the arrows in a game you walk in that direction always. When you are on a machine it is a constant source of entertainment, knowledge, and excitement depending on what you want to do, how fast you want to do it, etc. The real world isn't like that at all; you aren't the king of the world.

After years of being used to this power at your fingertips you simply get used to it, so when you are standing in line at the DMV, or your wife is trying to calculate the tip at lunch, you freak out and get irritated simply because your impatience has been worn down after years of instance responses.

04:16 PM part of work

Breaking news

Coalition forces have captured Saddam Hussein's half-brother in a rural village outside of Baghdad. The marines who captured him were suprised to report that he was a little pussy when they captured him. "I don't know, I thought maybe he was a badass since he was the big man's brother, but we found him balled up in the corner of this farmhouse crying like a little girl" reported one marine. "And when we started to torture him, nothing serious - just innocent fun - he started begging for his life. I mean come on, suck it up, you had to know this was coming".

10:01 AM part of a balanced breakfast

April 14, 2003

You guys will figure it out

At the company where I work as a software developer we have a production section of the building where our custom hardware is assembled, tested, and burned in. The new software product that we are working on right now is a large complex system that has taken years to design and build. We are still adding features, fixing bugs, and testing.

So anyway, there is a guy who works in the back testing some of our hardware, and he came up to me the other day while I was updating the system with the latest build and asked me how it was going. I told him how there was still a lot left to be done before our ship date, and he said:

You guys will figure it out.

and it made sense to me. This is one of the main reasons that I like what I do; you can say with a straight face that you are solving little technical puzzles everyday - that you are solving little mysteries. And we will, by the way, figure it out.

02:10 PM part of work

April 09, 2003

Tops ten things

I am moving very soon - next weekend really. To get my mind used to this fact I have compiled some lists:

Things I like about Columbia, SC:


  1. The Vista area.
  2. All of the small, independent coffee houses.
  3. My job.
  4. The part of Shandon behind the church where I play ball.
  5. Eric San Jose's.
  6. Our apartment.
  7. How no matter where you are in the city you are about a mile away from a ghetto and a middle-class suburb.
  8. The way the Adluh flour sign blinks on and off all day and all night no matter what is going on in the city below it.
  9. The light that paints the water near the dam when the sun sets.
  10. Never before have I felt so in the middle of things - where we live - where I work - what I do at work - where I am in life.
  11. We will probably never live within walking distance of a pool hall and bar again, so now is the only time we can get really drunk and just walk home.
  12. No one would ever target it.

Things I hate about Columbia, SC:


  1. It is lonely, like everything happened here in the past.
  2. It is overall very conservative (read: racist).
  3. No Starbucks.
  4. No opportunity for what I do.
  5. No friends, family, nearby.
  6. She doesn't like it here.
  7. Landscape is too flat, monotonous, and even worse: we have gotten used to it.
  8. No excitement, crowds.
  9. People don't come here, don't tour here. We aren't a stop, a place to go.
  10. No professional sports, shows, etc.
  11. Both professionally and socially living here for a long time would feel like giving up, getting out of the game, hiding.
  12. The computer book section at the local Barnes & Noble is 3 rows.
  13. It would not be entirely unrealistic to say that I am the only democrat in the county I work in.
  14. The racial lines are drawn very boldly here, and it feels like they were drawn in the past - the past that the rest of the country is trying to forget.
  15. All of the 'new', 'exciting' stuff here seems like they are just copying somebody else's idea; that they are catching up.

Things I like about Atlanta, GA:


  1. 99x.
  2. Starbucks, Caribou Coffee.
  3. Lots of places to explore - a lifetime's worth.
  4. The computer book section at the local Barnes & Noble is like 7 or 8 rows, and there are small technology-only bookstores.
  5. People have heard of wireless internet access.
  6. Adventures in capitalism are better. (i.e. better shopping)
  7. More inspiration, experiences, life.
  8. Diversity of people.
  9. No systematic, geographic, or cultural depression.
  10. She will like it.
  11. Wider variety of jobs, professional opportunities for both of us. They have Technology conferences here that aren't centered around that fact that there is no technology economy here.
  12. The challenges and opportunities of a big city.
  13. Closer to family, including extended family that we will probably get to know better.
  14. When friends come to visit us we have a lot of cool places to take them to; places that aren't in Generica; places they haven't seen before in another city.
  15. The future of race relations in the South will be decided in Atlanta and places like it, not in places like Columbia.

Things I may hate about Atlanta, GA:


  1. Traffic.
  2. Cost of living is 10% higher - just enough to drive you slowly insane.
  3. More competition.
  4. It may be so large you can't wrap your hands - or your mind - around it.

    09:12 PM part of personal

Thank you

I would just like to say that although I am happy to leave, I will miss it here for reasons that none of you will ever know.

This job was perhaps the first time in my life when things did not go well and I stuck with it. In the past when things were going well I worked hard to make them better and when they turned I built them up in my head to be worse and cut them loose. It was like I didn't understand any of the emotions in between - it was either victory and confidence or a simple waste of my time and validation that I was worthless. One of the first ways that I realized this is whenever I would think about what my boss thought of me at any of my jobs I would always see the possibilities as either 'genius' or 'will soon be fired'. Nothing in-between. And I believed both stories.

But living in the middle has taught me the valuable lesson that I am the one who is in charge of how I react. When things happen around me they aren't strings pulling on my limbs, but tiny decisions to be made by me and me alone. No matter what happens the one thing that you are really in control of is what you think.

10:20 AM part of work

April 07, 2003

Dear former employer

  • I know that the coffee in the break room costs 25 cents, but I have never paid it. The first day I was here D gave me the tour and pointed to the coffee pots and said: "25 cents, honor system" and I thought "fuck that shit" and I like to think of myself as a man of my word so I have kept my promise. By my calculations I owe you well over 50 bucks; come and get it.
  • This was the first time that I ever took lemons and made lemonade. When I first started working here I hated it and normally in that situation I run to greener pastures, but I didn't this time and I grew and dealt with it. I earned respect from a tough situation, and for that reason it is tough to leave.
  • Sometimes I would come in late and there was no coffee, so I made some myself. Apparently I have some sort of measuring redardation because it never tasted quite right. To whoever normally made coffee - crazy mad props - it was awesome. I once came in at 6 and waited around for you to show so I could thank you, but I was disappointed. Perhaps you were a tasty coffee ninja, poised on the ceiling waiting for a quiet moment when you could reach down and measure out the perfect amount of freshly ground coffee to begin our day with. Thanks, coffee ninja.
  • A few months ago I thought that it would be easy to leave; a couple of people here drive me crazy and I thought that getting away from them would be great. Now that everyone knows I am leaving I realize that they liked me and are just assholes to everyone. Live and learn. It is still hard to leave.
  • Somebody just came up to me in the hall, one of the hardware designers who I never really worked with directly, and wished me well. He said that being close to your family is important and that we were doing the right thing. He said that he knew the area that we were moving to and that it was very nice. He wished me well. This is exactly what I needed to hear and touched me that he was so nice to somebody that he barely knew. I hope that at my future job the culture is such that this sort of thing happens.
03:57 PM part of work

April 05, 2003

The cost of software

Right now I am looking around for a good bug-tracking system for my new job, and I am a little bit suprised at the results. I am not suprised by the quality or quantity of bug-tracking systems out there because I know for a fact that they are easy to implement and close to every developer's heart.

Stick with me a second as I diverge.

Last weekend I was in an Apple store for the first time because I am thinking about eventually getting an iBook to play around with. The idea of a Unix core below all the pleasantries seems good to me, and many web developers use this platform. I was suprised to find that a full version of Office for that machine was $500 bucks, and BBEdit was $179.

Last weekend also had me indoors doing my taxes for a few hours. Yes, I do them by hand normally despite recommendations from friends that I use TurboTax. I just don't want to part with that $50 and then $30 a year just for software to do my taxes for me.

Now, the common trend in all of this is that I am contantly suprised by how expensive software is. Why should this suprise me? As a developer shouldn't I know just how complex it is to write software that does something useful in an intuitive and reliable way? I spend a good part of my life working on software but I just can't bring myself to buy very much of it.

I think that to me software is free - at work, when I was in school, playing with Linux - I am surrounded by tons of free (really free and just free to me sometimes) software. I am just not used to paying for it after I purchase a machine. I see this as a strange little quirk that I need to get over simply because you can learn a lot about user experience by using a lot of software and seeing what you like, and I am missing out on this.

02:55 AM part of tech

security.dll

Wait a minute, what is this file?

C:\WINNT\system32\security.dll

Hmmm... Security is not an add-on feature - its a dll.

02:55 AM part of tech

Technical creativity: when things go wrong

Back in the day when I was in school one of the questions on the Operating Systems midterm involved multiple threads writing to a number of variables without any sort of attempt to take turns. The question was basically: "List all the things that can happen in this situation." At the time this seemed like a stupid question since all the things that could happen were bad, and the solution to fixing them was to wrap the block of code that was writing the values in some sort of critical section so only one thread could be writing at the same time. I was not alone in this belief, a guy in my class wrote an answer similar to the below:

While many horrible things can happen in the situation above, I feel that these things can be easily prevented and will not list them here. I intend to devote my life to squashing these kinds of bugs.

The professor gave the guy one point for his creativity, and it eased later tension when read aloud to a class full of people who had just failed the midterm. Anyway, looking back on this question I can now see just how important it was to be able to think in that way: "How can things go wrong?".

When you are working on some code, you like to think that you know exactly all the paths that can happen in the code and what the program will do when it runs. But when you take your little part and integrate it with your neighbor's part and run it in the lab, or the real world, you see unexpected behavior. A typical initial reaction to this is simply suprise. You don't understand what is going on and so you are just sort of confused by it. Something that you didn't think of is happening.

This is when what I like to call technical creativity comes into play. This kind of creativity is not really the same as when you are using your sense of order, simplicity, and beauty when designing components, but when you are brainstorming crazy situations that can explain unexpected behavior. This skill is important because as developers you live in a world in which you don't know as much as the machine most of the time; it can't cut corners, and it sees all the paths at runtime. For this reason you have to be very systematic in your approach, but also very unconventional in trusting previously trusted subsystems and components.

An example of technical creativity at play is the following story about a strange problem at Bell Labs back in the day. An engineer was working in the lab where he would sometimes stand up and use a certain test machine and other times pull up a chair and sit for a while. When he stood up he would have no problem logging in to the machine, but when he sat down he could never login correctly. After doing this a few times he grabbed some other engineers and they all sat there in amazement as he showed them three times the full cycle of the problem. They all sort of laughed at it and scratched their heads while talking out loud: the machine doesn't care if you are standing or sitting, it doesn't know that, and you are typing in the same thing everytime - you just did it three times, etc. After a little while one of the engineers went over and looked at the keyboard. He noticed that one of the keys was in the wrong place: the j and k were switched. When the first engineer stood up he looked at his hands while he typed since he was bent over, so he choose the k by finding it with his eyes. When he sat down he typed by feel and so typed what should have been a k but was a j instead.

Now, the problem ended up being that a trusted part of the machine was wrong, but the way the engineer tracked it down was by thinking about the fact that the machine does not change its behavior unless you change yours, so the engineer must be doing something different. From this they were able to see the problem. Sounds crazy, but the keyboard was broken.

As I continue working on problems I see that the experienced guys around here have a really good sense of what to question and what to trust. They always assume that the problem is with their application and not MFC or the OS. They are good at tracking what has changed in their code from build to build so that they can see if problems have been introduced, or if they have tickled just the right spot in another system by making a change in theirs.

02:54 AM part of tech

Virus

Work has been hit hard by a virus - the servers are all down as our IT department (2 people) tries to frantically get rid of the problem. We can't:

  • Check in/out source
  • Test anything in the lab
  • Get to our shared directories where some of us save our code
  • Get to the web through the proxy, which despite being a simple Linux box, depends on some part of our network

I used to think that computer viruses were harmless little mind games - neat little hacks that exploited errors in popular software and made the companies look foolish when they should for not publishing the ones that they know about. They overall seemed harmless to me and I even enjoyed tracking them down, armed with a good anti-virus program and knowledge of the OS, and getting rid of them. Every once in awhile you can actually get the to the source (as in code) of a virus and they are very interesting in that they are simple. Mostly they rely on inherent properties in the systems that they infect, like how you can share drives and map network addresses. They can also rely on inherent properties of people as well - we use the same password to connect to all our mapped drives and all our web accounts. Only rarely does somebody come up with a clever new way to trick people into spreading them.

So anyway, in the past I have seen viruses as clever little system or psychological hacks. Now, as I see more of them mess up nice people's work, I don't care how clever they are. A simple message to virus writers: use it somewhere else.

02:54 AM part of tech

April 04, 2003

Comparison

Hmmm.... How do you decide which job to take if you are offered two?

Look at the (imaginary and real) books that you would have on your shelf and then count them up:

Job 1:

Windows System Programming
The C++ Programming Language
Inside COM
Writing Device Drivers for Windows

Job 2:
Inside COM
Programming COM+ with Visual Basic
XHTML/HTML
JavaScript
CSS
Web Services Essentials
Programming C#
ASP in a Nutshell
XML-RPC
SOAP
SQL Server
Oracle
SQL in a Nutshell
DHTML
Design Patterns

05:12 PM part of work

April 02, 2003

Sheltered

You know, you have got a nice little system worked out for yourself. You are an immature, know-it-all, little shit who hates being wrong. You hate being wrong - hate the feel of it, hate the temperature that it turns your face - so much that you avoid it at all costs - at the cost of being nice to people, at the cost of professionalism, at the cost of most things.

But here is the brilliance of your sheltered little system: you are so unpleasant to people when you are wrong that they avoid you being wrong as well. You lash out at contradictions from others by verbally abusing them and then laughing at them (literally) and figuratively (to other people when they aren't around). This is so annoying to people, and you are so small as to not be worth it, that people just don't tell you when you are wrong; they avoid it as much as you do.

This, however, does not mean that they think highly of you or respect you. Instead, they see that you have messed up (no big deal) and that you are now trying to cover it up by blaming the discoverer of the problem or anyone nearby. They then route around your problem. They buffer their efforts with the full knowledge that your would rather cover up a mistake you made then admit it and fix it.

But you don't know any of this - safe in your self-built shelter from criticism; your prison.

03:51 PM part of personal

Peeling

My face, neck, and arms are peeling. Sometimes I forget this, and I reach back and scratch my neck to find a slightly moist potato-chip sized slab of flesh greeting me when my hand returns. Other times I try to scratch it off; standing in front of the mirror I look for weak spots and root them out, making some progress. Sometimes I just wait and let it dry up completely and fall off.

I am changing. Sometimes I forget this, and find myself reacting to new events and old friends differently than I did before. Other times I try to change; standing in front of the mirror I look for weak spots and root them out, making some progress. Sometimes I just wait and let things fall into place.

Either way, I am changing and my new, true face is slowly making its first appearance.

02:26 PM part of personal