Name: Euan MacGregor
Member since: 2002-09-09 21:15:21
Last Login: N/A


Now at University.

The sides I take:

  • Editors: Vi and emacs.
  • Linux Distros: Debian, NOT Slackware, Gentoo, LFS (and other "build from source").
  • Languages:
    • C: Nice.
    • C++: I almost always use this, mostly because the stuff I do is suited for it (even as a "better C"). I've recently started appreciating templates a lot more than before and libraries like Boost have lots of useful things to take the drudgery of some tasks (e.g. boost::optional). The STL still suprises me every time I look more closely at what it has.
    • Perl: Haven't written enough code to form a real opinion. Seems powerful, and can be kept readable.
    • Python: Haven't yet learnt this. Sounds like a nice language with a decent standard library behind it, and I imagine the whitespace "problem" is soon overcome.
    • PHP: Never written anything in it, don't want to either. Have recently seen many problems with the API and the language in general (e.g. no unsigned integers means working with IP addresses is painful).
    • Java: Have learned a bit whilst at Uni. (mostly as part of the course). The class libraries have a nice broad coverage of tasks, but the lack of generics and operator overloading means I find using things like Vector quite grating. I thought jwz>'s rant was good.
    • C#: Despite its origins, I like the language more than Java as it has a) operator overloading b) boxing c) #if expressions (makes abstracting platform specific things [e.g. the naming convention for native dynamically linked libraries] much nicer).>
  • Desktop environment: Neither, but I often use programs from both KDE and Gnome.
  • Window manager: Openbox (switched from Blackbox. It was the window snapping that sold me)


Recent blog entries by zx64

Well, after University kicked in I got distracted from this (and other things). Got elected as secretary for the Uni's CompSoc and AnimeSoc which was nice. More recently, I attended the Debian 10th Birthday party in Cambridge.

Bleeh, FreeCNC 0.2.1 still not out. There are a bunch of annoying bugs and design issues (the current code for animating things is a little crufty and is a bitch to debug) that need fixing and I've been preoccupied with both exams last June and preparing for next year at Uni. I'm still rather pleased with the guy who sent in a patch that contained a mostly complete ratemplates.ini so Red Alert maps now load a lot more correctly than before.

On the way to the party in Cambridge I did some mildly crazy stuff to cut out the overhead involved in parsing large ini files that don't change that often by "serialising" the data structure as a .so by emitting C code that was then wrapped inside some boilerplate routines to handle all the library stuff (such as initialising the hash table inside _init and freeing it in _fini). This turned into an interesting learning experience with glib2 (a library I previously hadn't written anything with): I didn't have the API docs installed, so I picked things up by reading the header files (and found gems like g_blow_chunks). The library stuff is done, I "just" have to write the emitter and see what whacky stuff I can do with make so you'd just dump an ini file (e.g. foo.ini) in the right directory and run "make foo.ini" to get your library.
Regardless of whether it has any practical use, it was a fun way to spend about four hours :).

My next mini-project is to extend the ini-file format to support inheritance. This would actually be of use in FreeCNC as there is quite a large intersection between the ini files used for Tiberium Dawn and for Red Alert (which I haven't yet explicitly written because e.g. "raunits.ini" would have a lot from "units.ini" [i.e. data duplication]).
XML is more or less out of the question as ini files are sufficient anyway (this is just me being anal about data duplication) and ini files were what were used by Westwood in their games (so mods can be ported quicker).

Also, if you write C++ that uses the STL, you probably will appreciate StlFilt.

Moved into my new home for the next ten weeks on Sunday, didn't get net access until Monday due to some absent mindedness on my part (forgot my own cat5 cable, and didn't get to the shop in time). University net access is good, apt-get runs just as fast as if it was running from a local mirror. Timetable starts tomorrow, and an exam Wednesday (need to get 80% on each of the four sections to pass, and it is 20% of one of the modules I'm taking this year). So far, I have managed to keep my room reasonably tidy.

Yesterday evening, I added write support to the VFS (for external files only). The VFS lacked this before as hardly any of the code needed to write to anything. Also started making the dispatcher code less of a quick-n-dirty, proof of concept hack.

Yes, I have been outside my room.

I'm writing this entry after returning from my final SWLUG meeting (until December or so), which ended with pjdowner, Robot101 and I going round to alan and telsa's house. Phil was picking up an IBM harddrive that had failed and said he'd try the various IBM tools to repair it. Alan managed to offload some rather interesting pieces of junk to Rob (who has a friend that wants circuit boards etc. for making abstract art).

On Sunday, I got an eight port hub from Robot101 on the cheap and obtained some cabling from Maplins with the intention of turning my old workstation into a firewall so that my parents can use my cable modem while I'm away at uni (University of Warwick, for Maths with Comp. Sci.) Still random problems with ntl's DHCP not working when plugged into the would be firewall (will probably have to import lease from current workstation and hack it to work).

More Uni. related stuff: I have a pile of exercises on differential and integral calculus, trig and inequalities to work though. The payoff is that the exam all first year Maths students have to sit is contained inside the exercises (I have a strong suspicion that "sqrt(x + sqrt(x + sqrt(x) ) )" will come up on the differentiation).

Coding: Not much. Probably related to my recent joining and participating of #C++ on freenode (as well as odd sleeping patterns). Started writing a Dispatcher for FreeCNC into which ui/input.cpp and ui/selection.cpp will hook. The Dispatcher will handle relevant input and game events so that game sessions can be stored to disk and played back (mainly to make things easier to test fixes to the anim code). The main things left to do are how to track adding and removing units and structures (so that stored orders will always map to the right thing), and getting the events to be replayed at the right time. The next step is to make the Dispatcher read/write stuff from/to the network layer, which will result in low security (relies on non h4x0r3d clients) multlplayer now (more as a proof of concept), and better security when the server is done (i.e. all calculations done server end, then relevant info pushed out to clients).

9 Sep 2002 (updated 9 Sep 2002 at 22:08 UTC) »

Hopefully, the level of Real Life that requires instant processing should drop to near zero levels for the next few days so I can get back to coding.

Still todo for FreeCNC 0.2.1:

  • Fix big endian bug in video code. I think the bug is either in the scaling code or the drawing code, should dump some decoded data on the Sparc Woody box to find out.

  • Fix reproducable bugs found in recent anim changes. Found a few solutions, although they are either fixing the symptoms or are inefficiant.

  • Scheduling consistency stuff. Bleh: what should happen to the events that are replaced by setSchedule? Deleting seems the best approach, although I need to ensure that setSchedule won't create a circular list of events.

zx64 certified others as follows:

  • zx64 certified zx64 as Apprentice
  • zx64 certified pjdowner as Apprentice
  • zx64 certified Telsa as Journeyer
  • zx64 certified alan as Master
  • zx64 certified davej as Master
  • zx64 certified thom as Journeyer
  • zx64 certified etbe as Master
  • zx64 certified comrad as Journeyer

Others have certified zx64 as follows:

  • zx64 certified zx64 as Apprentice
  • pjdowner certified zx64 as Apprentice
  • mascot certified zx64 as Journeyer
  • etbe certified zx64 as Journeyer
  • comrad certified zx64 as Journeyer
  • zx80user certified zx64 as Journeyer
  • ara0bin26 certified zx64 as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page