Home About Projects PIC code SX code
Name: Nikolai Golovchenko
Street Address: 2489 Trade Zone Place
City: San Jose, CA
ZIP: 95131
Country: USA
Home phone: (408) 941-9963
Email: nikolai-at-golovchenko(org)

About me

I'm 24 years old, graduated a year ago from the National Mining University of Ukraine, located in my home city Dnepropetrovsk (pronounced dnee-pro-pee-trovsk'). This summer I have moved to San Jose to work for Synaptics Inc, the major producer of TouchPads and many other interesting products, e.g. Chineese Character Recognition. I like this place!

I have two major interests, both of them are technical: electronics and programming. I started doing both since 15 years old, after building the first serious project - a Sinclair ZX Spectrum clone. Amazingly, this little computer (the size of a keyboard, Z80 CPU, 48 kB RAM, and 16 kB ROM) could do a lot of stuff, had a built-in BASIC translator, and became very popular as a home computer (mainly for games) in late 80s - early 90s. Soon the BASIC translator became too inefficient for me, so I learnt assembler. Since then I've been using assembler quite often on various other platforms, including Intel's 8080, 8086, 8051, Microchip's PICs, and Ubicom's SX. I still do on PIC and SX microcontrollers. Programming in assembly is challenging and rather a work of art sometimes, which makes it very interesting.

On a PC I use C and other higher level languages instead. For example, I have done a few online projects using C and some object oriented programming in C++.

Actually object oriented programming was a complete mystery for me until I came across Smalltalk. This is probably the earliest OOP language, but it rocks! It's super simple, 5 statements or so. And it is very powerful and I think more productive than for example C++, thanks to the huge and uniform class library. There are quite a few versions of Smalltalk system, some are free or demo, like Dolphin. Unfortunately, there is no free Smalltalk compiler available as far as I know, so you can only work in it, write an application, but cannot create an executable, which is not very convinient. So I prefer to use C++, even though it's more difficult.

From my non-technical interests I would mention learning English language. I started learning it (besides school and college) since 1995. It is extremely interesting to be able to understand such a widely spread language as English. But it's hard to learn! I still can't understand how I managed to keep doing it... First you try to memorize words, then you forget some of them, then you encounter them again and try to remember again... Then you realize that you forget some words over and over again! So, much of frustration involved in that. But it looks like you remember more than you forget, which is reassuring. Anyway, it is going to be a very long hobby!

And my new hobby is riding a bicycle. It started out as a necessity to get to work (public transportation in Silicon Valley is terrible), but I actually liked it, and still do this. You get excercise and it takes really no extra time, which is great.

Here is a view at Dnepropetrovsk (July 2000).

You can see its central part, one of the bridges across the river Dnepr, and the left bank part of the city (on the far side).

We are looking at the city from a room at the Automation Department in the university where I studied. By the way, this is the highest point in the city!

Last updated: 2001.

Questions:

Dwayne Reid of Trinity Electronics Systems Ltd Says:

Minor correction regarding James' description of $+1. $+1 is a NOP that takes 2 instruction cycles. A NOP takes 1 instruction cycle.

The purpose is to generate a precise 2 cycle delay but using only a single code space. In other words, shorter / more compact code.