I was in a car accident yesterday

(I’m OK. So are the people that were in the other car.)

Yesterday I was involved in a car accident. On this turn left on the way home there are two lanes: the right lane is both for driving straight and turning left. The left lane is only for turning left. The lights were blinking green and were about to turn yellow. I was on the right lane starting to turn left as the car on the left lane accelerated to make the light. The driver did make the light, however with no intention of turning left (as she must have, being on the left lane). She just drove straight ahead and so the front left side of my car hit the right side of hers.

We both kept driving until we cleared the intersection. When we both stopped and got out of our cars, she started accusing me. She didn’t realize at first that it was her fault. I responded by yelling at her the explanation of why she was to blame. All this time her teenage daughter and mother, who were both sitting in the car on the right hand side (daughter front, mother back) were standing there in complete shock. They both hurt their right hand. The driver, after seeing that they were pretty much OK (she didn’t mind too much, though), continued on blaming me, even when she understood it was her fault. This time I was to blame because I didn’t notice she was not signaling left. Like that’s any indication in Israel that a driver is not going to make the turn. She was also quoting the slogan “on the road be smart, not right”.

Continuing to yell at her (and also at her mom, which joined the blaming while the daughter tries to shush her) I decided to finally take the practical approach and exchange details with her while telling her that all that matters is that her daughter and mother will go and check their injuries at a hospital. All the while she was still taking shots at me like “you should have not turned when you saw me coming” and such. I responded to some, not making any real “progress” by doing so.

I’m sorry that I yelled at the woman. Her reaction of blaming me was natural, and even though I knew it (maybe not right at first) I couldn’t control my anger. I know that I was in shock and panicked too (I couldn’t stop shaking for a minute or so) but I should have also paid more attention to the daughter, who seemed to be the one who took the greatest emotional hit out of the accident. And while her mother and grandmother weren’t supporting her (which was noticeable) I could have done more to ease her shock.

Later on the driver’s brother (who actually owns the car she was driving) came in and was very calm and handled things very smoothly. He asked the daughter “Is this your first time?” When she nodded he said “don’t worry, it’ll pass” and moved on. At least gave her some attention.

After I drove away, my car mostly scratched but with a door that wouldn’t open (the driver’s door), I started feeling the stress levels dropping and while talking to my best friend Katz I started crying. I felt a lot of guilt for yelling and losing my temper, and for letting my “negative” emotions rise to a level where I couldn’t notice the feelings of the other people involved. It’s extremely rare that I really lose my temper, and when it happens I’m always sorry about it later. Although it was not my fault I felt guilty.

I suck at explaining computer-related issues to other people

When I try to explain computer-related things to other people I usually fail at bringing them to the understanding level that I hope they will have following the explanation. The problem is that I can’t figure out what’s wrong with what I say.

I guess one thing is that I want people to understand what they’re doing instead of just following my instructions until the next time they need to do the same thing again. It’s hard for me to accept the fact that sometimes people simply don’t want to understand what they’re doing with a computer but just get it done. Surprisingly I was the same with math – although I wanted to understand things when I studied math, many times I gave up and just asked for a way to solve problems without understanding.

Another reason is that things seem pretty obvious to me. Of course they weren’t so obvious when I first had to learn them, but now I find it hard to explain because I can’t recreate in my mind the learning process that I had to go through. It’s probably a different process for me and for others, anyway. I guess I’m not such a good teacher – good teachers can relate to the student’s state of mind to see how they can bring the student to a level of understanding.

Anyway, the outcome of all this is usually that I get upset as things I say don’t help the person I’m supposed to help and it becomes very apparent, making the entire process a pain for both me and the other side.

So to anyone I tried to help and made it into an unpleasant experience – I’m sorry.

2 years of working out

Today marks 2 years since I started working out. I still follow the same 4-days-a-week workout schedule from March this year. I must admit that having Tuesday off from workouts is a nice relief and also a chance to move workouts around the week when there’s a need to do that.

I think I’ve reached a certain point where my physique is pretty much the same, as well as my weight and muscle volume. I guess that if I want to make changes to my appearance now, I have to make some changes in my workouts. For example, I do 45 minutes of fasted aerobics every workout day (4 times a week). Fasted intense aerobics is not really recommended, but I feel good doing it so I’ll keep it up for now.

I can also make some diet changes if I want to look better, but I’m happy with the way I look and I feel good so that’s good enough for me. I just hope that things will stay the way they are as long as I keep working out.

Writing Software – Part 2

As a teenager I studied a little bit of the Logo programming language, then some Pascal and later made a failed attempt to study C++ from a really bad book, which insisted that I have to know how numbers are represented in bits inside the computer first. Most of the time I played computer games and explored (as much as it was possible before the Internet) the operating system and the computer hardware. I even worked as a computer technician for a little while.

After that I programmed for a while in the RPG programming language for the IBM AS/400 computer. That was actually my first real programming experience. RPG is like database-oriented assembly language and along with the green screens of the AS/400 terminal you can imagine that this combo offers little excitement. However, thanks to my brother, who was also my boss, I learned important rules like Don’t Repeat Yourself (DRY) and many other things.

Then I went on to study math and computer science. I enjoyed investing time in doing C and C++ home assignments, constantly trying to improve my code. After RPG, C++ seemed like a much nicer language to mess around with (also, I could do it at home). By the end of second year I was after OS course and with some OO knowledge, which I thought would be enough for me to look for a job (also I was in need of an income and it was before the bubble burst).

And so came my first C++ job. I worked for KLA-Tencor programming for Windows. At first I was amazed to see how little my knowledge of the standard C and C++ libraries had to do with the job. The Windows API contains so many functions, not to mention MFC and COM. Naturally, I had a trainer assigned to me, who was truly a guru when it came to Windows Internals. I learned a lot form him, but only a few months later, when he left, I was left to cope with Windows entirely by myself.

Programming for Windows is… it’s many things. Most of all it can be very confusing, especially with the plethora of macros and big structures that have to be transferred to functions with a lot of arguments. Looking for CreateProcess() in Google brings up two links: The first is Microsoft’s MSDN documentation for CreateProcess(), and the other is titled “Calling CreateProcess() the easy way”. I think that says a lot.

You really have to work closely with the MSDN reference when you program for Windows. One of the problems, however, is that first you have to know what the Windows API lets you do and only then you can start looking for it. Even then, it doesn’t mean that you’ll find the best and most correct way to do something. The good thing is that there are many resources online to help with Windows programming, so unless you’re looking for something rare, you’ll find your way. In that sense Windows programming requires you to be resourceful. It requires you to know how to read MSDN entries and it requires you to know how to find what you’re looking for.

With Microsoft constantly inventing new APIs while keeping the old ones, programming for Windows is a race between Microsoft and the programmers trying to keep up. A good Windows programmer is usually one that follows Microsoft’s publications like MSDN blogs, MSDN magazine and so on. The fact that MSDN blogs like Raymond Chen’s The Old New Thing have become so popular shows how much it’s needed to have people answer questions regarding Windows APIs.

Next time I think I’ll talk a little more about Windows programming (maybe a mention of .NET) and say what I know so far about Linux programming.

UPDATE: Here’s why Windows programming can be confusing – check out this latest post from Raymond Chen about “Waiting until the dialog box is displayed before doing something”. After my few years of Windows programming experience, I wouldn’t have gotten it right myself.

Curious Ace

I tried to take shots of Ace taking a nap, but she woke up and took great interest in the camera as soon as she heard something was going on.

Ace gets curious about the camera 1

Ace gets curious about the camera 2

(click the images for a larger version)

I should have followed my UQAN idea

Another day goes by, and another questions and answers service comes up. As this TechCrunch article suggests, Q&A services are growing bigger because people are better answer-givers than search engines. Yahoo! Answers is now the biggest Q&A service around, but more and more are popping up. I already wrote about Guruza and Illumio which look very similar to my own UQAN idea. The new guy on the block is Answerbag and there are probably more to come (Google Answers is a paid service so it’s kind of different.)

All this brings me to the inevitable conclusion that I should have followed the idea of UQAN (Universal Questions and Answers Network) instead of dropping it a few years ago.