Sunday, September 28, 2003

Get Rid Of It

Culture trend: new make-over shows not about getting new crap, but getting rid of it. Organization shows about taking control of your mess, and most of it ends up about having a person just sit down with you and ask "Do you use this? Do you even care?" and dumping anything you don't exclaim a whole-hearted "Yes!" to.

I, as many know, am all for that.

Been re-ripping my CDs with LAME (through CDex), but this time after every CD done, I take out the booklet, throw the jewelcase away, and put the booklet and CD in this CD binder. I saw my houseguest Gadi travel with all his CDs that way, and one day, looking at my living room, it made sense. This huge rack of media is dissappearing from view. It feels strange to throw all these jewelboxes in the trash.

So I also wanted to clean a little electronically, and one so I looked at one of the stupid little domains I own. I actually have (currently not resolving for some reason) as the version of ironic domain-name squatting of Gadi and me. (Ok, we cooked the idea up together and I did the rest.) Never got any hits. Then I linked it to my homepage so searchengines would pick it up, and now it's like the sixth entry on Google for Craig Shergold.

Today I checked the access logs for the first time in 3 years. It's now getting 5 hits a day. Now suddenly I have doubts: should I apply for a google text ad account and make hundreds of millions of dollars? Or just get rid of it?

Wednesday, September 17, 2003


3. Symbian C++ programming is a nightmare, and the examples are no help at all. I am so stressed I skipped my workout just to keep working and making some kind of progress.

4. Sean not having anyone to play with reminds me to write, for future refernce, that I am enjoying playing Pandemonium on the N-Gage. I was just allotted that game and Sonic The Hedgehog to just play around with. I should try if playing against another tester over Bluetooth networking works.

I am liking it a bit too much. See point 3. Today I reached for it around 4, when I couldn't take this wall of lousy documentation and impenetrable examples of constrained GUI programming anymore. I should have gone for the iron instead of the game deck.

I had a conceptual breakthrough at the end of the day, but it was already 7.35 PM and I had to be home by 8. I had a cat to inject.

Thursday, September 04, 2003

If You Are Not A Techie, Skip This

[Cloned from my Slashdot journal.]

So my title has been settled: my new business cards will state I am a 'Senior Research Engineer'. I think it sounds cool.

My current research gig is taking over a project from the person whose position in the group I am filling. Its current shape is a collaboration with an IBM Alphaworks project from a group in Austin TX. I want to do a site-visit, but can't find an angle to make it necessary, yet.

The project is about a system that makes it easy for programmers to make programs that communicate between mobile devices and back-end servers[0] at fixed locations. My end is to make the programs that can run on Series 60 phones -- these programs are called "clients" -- in various languages to show off how easy it is for programmers to use their system to do this, co-ordinating server and client objects.

First demo client was coded by my predecessor, it is going to be shown off at some mobile conference. I took a look at it. I have been in a demo-driven lab before, at CHIP, I have even stood on a demo floor at a trade-show for three days, showing off some medical-system prototypes to disinterested CFOs, CIOs, CEOs, journalists, doctors, and other clinical personnel shopping for systems, in a booth sponsored by SUN that was trying to generate medical buzz for their new-fangled JAVA language. I know what a demo needs to have to be credible. This thing was close, but not close enough. I sent a memo in email.

There was some consternation among my manager and my predecessor who would make the demo better, since I have to work on the next client, in C++. They were stopping in my cube to tell me I should ask some of the other researchers in my group for help, because I might be overloaded. I smiled and nodded and fired up Eclipse, configured Antenna, spent half a week learning my way around J2ME, and made the changes. JAVA is my native tongue now, people. J2ME only makes it smaller, which makes it even easier. The demo is good now. The person organizing the collaboration, managing getting it to the conference, and a source of future funding, likes it, likes the touches I added. That's what I do, baby, get used to it.

The next client is not in the confines and simplicity of J2ME, it is in C++. Symbian's version of C++. A fucked up version of C++, no exceptions, no polymorphism, and tons of traps and macros and double-stage constructions, all designed to deal as resource-starved as possible with the possibility that somewhere, in some call, the phone will say "fuck you and your program, I ain't got the free memory / connection / screen" and yet still be able to run for years uninterrupted. It is a nightmare for the novice of resource files, utilities to change one type of descriptive file into another, packagers, linkers, more linkers. I have spent a week now just acquainting myself with the tools and the strange organization of programs. The OS practically enforces a Model-View-Controller separation, and everything is a also a library. Oh, and don't use standard C++ types. Ever. Only Symbian derived-variable types, please.

I am having the worst case of Empty-Project syndrome, I can't get myself to start. The only way this is going to work is by pilfering one of the many, many example programming projects supplied and reworking it. I must start tomorrow.

On the other hand, even though I haven't coded a single line, I feel how powerful this system is I am working in. I have access to all the systems on the device, going through the endless APIs I even found the calls to use the voice-commands sub-system. JAVA shields you from the computer, gives you a neat little sandbox, but also shields you from the raw power, the real windowing system (which is why all JAVA programs look slightly out of place), the real sound system, the real libraries of other programs. I got used to it over the last, oh, 6 years, and coded around it, always making approximations, little wanna-be's. Now I am back suffering the pain of touching the real OS and the fucked up memory- and resource models, but there is also the reward of the power, all the possibilities. Pity I won't I have to time to explore it.

[0] Jargon: the communication-protocol is SOAP, a protocol for marshaling and unmarshaling objects, so that to a client it looks like the objects on the server, the ones with all the data, look like they are running locally. Offering objects over SOAP like that is called "WebServices". IBM's WebServices for Mobile Devices Toolkit is supposed to make generating the client- and server-stubs very easy. Austin sends me the library of client-stubs, I code a little program around them.