Older blog entries for GJF (starting at number 15)

Re: The Perfect User Interface

I'm afraid I quite like the alt-key approach to selecting menu items used in Windows, as the underlines on the menu items prompt you which keystrokes are required. I prefer this interface to the direct "hot key" approach. For example, I would be more likely to use alt-F,P to open the print dialog than the alternative ctrl-P - even though the ctrl-P command is more direct - it just isn't consistently available in all the apps I use.

But, number one on my wish list for X Windows is to have ^x, ^c, ^v, the cut, copy and paste commands to work in all possible X applications, more or less like they do on Windows even if only for text transfer between apps. N.B. Windows had to abandon an earlier choice of key bindings (ctrl-Insert and some other keys I can't remember) and take on the ^x, ^c etc which is (I think) the IBM Presentation Manager Standard.

I like the facade idea, it is similar to the concept for Language Manager (an old commercial product of the company I work with). Language manager internationalises the menus of an application at run time. That means - if you don't like it you can change it - relatively easily and without recompiling - and the one application allows you to translate any other (Windows 3.1 only) application. It seems to me that it should be possible to place a layer between the Widget set and the application that would translate menu items and widget text, (or change the key bindings). The problem being that X has so many different widget sets - you would have to integrate with all of them. I've never programmed X Windows, so please tell me if I'm on the right track?

By the way, I have got the go ahead (funding) to build my community web site, so I am definitely looking at doing some work on mod_virgule and on an RTF to HTML converter (with style sheets) application.

Re: C Programming language.

apgarcia recently revisited the idea of an improved C. I have become resigned to using C or C++ over the last few years - it has such momentum. My main criticism of C is readability -
for( int i=0;i<j; i++ ) printf("unreadable\n");
I much prefer the Pascal syntax, but I acknowledge the criticisms in Why Pascal is Not My Favorite Programming Language. Some years ago, I worked mainly in Modula II, which is still my favorite language syntax. The main drawbacks must be the lack of libraries (and maybe their design) and lack of objects. But it did have some features I think of as highly desirable:

  • Explicit termination (END) for all IF statements
  • No macros
  • VAR parameters rather than explicit pointers
  • The HIGH function for determining the dimension of an array passed as a parameter to a function
  • Good control of name spaces and interfaces by the use of declarations in .DEF files (rather than extern and/or #include)

The Modula II compiler I was using had some extensions to allow low level programming. I think language extensions should be discouraged,but they did allow me to write a simple VGA graphics library - and that taught me a lot. In particular I learnt that a good optimising compiler can produce faster code than the assembly code I found published in a book!

After abandoning Modula II for C, I went through a brief phase of working with Delphi, which I quite liked. Delphi encourages much more readable code than C++, but of course it is proprietary. The name space system is a bit more primative than Modula II as well.

The company I work with has been doing a lot of Java work, and I guess Java tidies up some of the worst excesses of C and C++, I think it is unfortunate they kept some of the ugly syntax features (for loop, {} braces etc). Maybe with minor modifications to the compiler, we could plug-in a new tokeniser and make the language truly readable?

Early Java virtual machines were pretty slow and unstable, but the new ones can be pretty good. I still prefer native compilers/languages.

So these days my preference is C++, but there seems to still be compatibility problems with libraries on Linux, so I guess I'm stuck with C.

OK so I had to go off to www.extremeprogramming.org and find out what it is all about.

On pair programming

Oddly, we have done a lot of pair programming in the past. It has been quite successful, particularly for debugging. It is a little problematic for contract work done on an hourly rate - as your client needs to be comfortable with it. It not only improves code quality, but must diminish the problem of adding more programmers to a project too. It also gives insurance against losing indispensable programmers. I imagine OSS projects tend to be more stable than companies, as you may change employers, but continue will probably continue working on your OSS project. Personally I quite like the idea of pair programming. I guess the OSS development (in the Bazaar) doesn't need pair programming as much, because additional "eyes on the code" are essentially free - so OSS projects are already achieving a proven high quality of code.

On minimising design/intermediate products

Someone suggested that many OSS programmers would have problems with this as they prefer the "Big Design Up Front" model. Surely even an XP project is based on someone's architectural overview/conceptual model of the problem space. I haven't that much experience with open source code, but I have found very little in the way of business analysis documents, requirements specifications, use case or class structure diagrams. Maybe the XP people are just following common practice (or OSS practice) here? I imagine XP developers may well draw class diagrams for those parts of a project which are complicated, or just in the process of coding a specific module, or negotiating an interface with another pair. But quality working code should always be the goal.

Had a party on Saturday, it was for my partner and her friend - they hired a (rock 'n' roll) band who were really quite good.

Family turned up in force, both my brothers, my sister and my dad. My partner's mum came down as well as her friend's parents. Dad who is now 70 was one of the last to leave (unfortunately the band finished at mid-night so we couldn't party all night).

Have not made much progress trying to get my head around the mod_virgule code. Actually the problem seems to be with getting the right library versions as well as the right versions of mod_virgule. I think I've ended up with a new sample site and old code. Now that I've got the party lights back to the hire people, I hope to actually make some progress on this...

Today I am taken by the microcosm which is the <project>McFeely</project> project team. I feel compelled to give advice even though I am no better off than they are.

I too live in that murky sysadmin/would be progammer world. I took the leap a few years ago to become a consultant (actually I was pushed). But I have one client for whom I am basically an employee - so I end up facing many of the same questions of focus, direction, goals and definition that cdent discusses in his diary. Strangely, he also brings up the calculus people - geometry people spectrum. My thesis supervisor described this as holistic thinker - linear thinker and suggested that I sat in the middle too. I compare this to my work mates who have a thirst for detail that I avoid if I can. I find myself programming less and less, but remaining very opinionated about the projects I work on. I guess that's the overview thing.

jlf (a friend of cdent) complains of being dragged into the politics of his workplace, ouch. Workplace politics is a huge problem - also do you really want to be a manager or is it the only route up in your organisation. I've often wondered what became of the chief programmer team concept pioneered by Frederick P. Brooks it's worth trying to sell the concept to management (even if only to get yourself a reputation as a creative thinker). If you haven't read Brooks' book the "Mythical Man Month" it is a classic case study of (failed?) Cathedral development methodologies.

nymia asks "how contractors like me could get into the free software and open source market". I recently won a nice contract to build a community web site (which I have to fit in after hours of my other client). It is a government contract, so although their stock contract demanded copyright ownership, they were perfectly happy to place the source under a GNU licence. There are plenty of organisations who are driven by social rather than business goals (government, unions, charities), and plenty of other businesses who wouldn't know what to do with source code if it hit them in the head. If (realistically) they will never sell their in-huse software, and it won't be of use to their direct competitors, then you should be able to sell them on Open source on the basis of price, performance, compatibility etc.

He roa rawa te kakau o taku paipa - the handle of my pipe is way too long.

p.s. oops there is no <project> tag.

gwm reminds me:

"Human languages are very interesting and important cultural marks to be ignored in favor of some "English is enough" philosophy."

As I may have pointed out, I work mainly on Windows (NT), at a company which also sells software. One of the applications we developed (I only really did translations) is a product called "Language Manager" which translated Windows 3.1 menus and buttons into another language on the fly. The applications being translated didn't need to know they were getting translated. It was highly successful, we finished it in 1994 just 1 year before Win 95 made Win 3.1 obsolete. Progress has stalled on the port to Win 95/NT but as we have now too much other work. I've been pushing to release it under the GNU licence in the hope of getting it finished.

Language Manager is of course very Windows specific and it was never written with portability in mind. But it does seem to me that the concept of giving user control over user interface language is a good idea. Is there anything similar out there in the X free world?

Is anyone out there keen on working on a project like this?

Just updated my home page and added a link on my gjf page on Advogato.

Some interesting discussion about trust metrics have arisen since bagder posted the advogato stats. I'm bemused by the Linux vs BSD stuff - I guess the BSD crowd are seen as outsiders which they were, but I see that lilo deliberately formed an alliance by identifying Masters in the BSD community and certifying them directly to that level.

It seems I am a beneficiary of that alliance as many of the people who have certified me are involved with BSD. ovec points out that you can have 5 apprentice certifications and still be observer hey that's me!Ovec also notes that a sociological factor may also be operating which I suspect is also true. I've been working with computers (on and off) since 1978, I'm really not that keen on becoming an apprentice, but then I'm an outsider and <admission>commercial software developer</admission> no-one here knows me, and there may be other things about my contributions that set me apart. But I agree, it is odd that it seems difficult to make apprentice, but easy to make journeyer.

Well, I'm continuing my experiment with advogato. I've been considering projects that I can initiate etc. At present my biggest (almost open source) contribution is Te Pukapuka Kura Maori which is a 19th century Maori language school reader that I laboriously typed and placed on the web. I've talked elsewhere about my plans to do some development work on advogato and an RTF to web application based on style sheets. I've installed one of the alpha releases of advogato on my test server, but I haven't got it going yet. (The module is listed on server-info, but the <location> returns zero-length data to my browser).

Woohoo

Got three new certifications - I'm on my way to being apprentice.

I haven't certified many people, there are a couple like rms I almost certified, but then I realised that if you wanted to launch an attack on the advogato, the best way would be to impersonate a few famous people. How can I be sure that rms is actually rms? I can't really be sure unless he mentions Advogato on his home page, or posts enough diary entries to Advogato to persuade me that the person behind the pseudonym is actually rms.

To go one step further down this track (blind alley). Maybe someone could use a robot, primed with rants taken from his web site, that could successfully impersonate rms or some other well known open source evangelist.

I've been working on a backup system for a client - it works like this:

In an all NT environment I need to backup hard-drives onto a server. The hard drives are NTFS and not configured for network access. I'm working on getting a Linux installation working that will read the disk and use either Samba or ftp to copy the data onto the NT server.

I think I'm almost there. I've been amazed by what Linux can do. I'm hoping to:

  • Boot from (a diskette image) on CD... I've never made a bootable CD before.
  • Load the linux root partition from a disk image on the CD - using the loopback device (and ramdisks for writable directories like /var)
  • Mount the NTFS format hard drive, then smbmount the server share. Then tar/gzip the data onto the server
  • Examine the tar archive to make sure everything is OK before writing a new disk image over the old NTFS drive using Norton Ghost.

So far I have a bootable mini-linux with all the necessary features (NTFS, loopback, SMB, network card driver) compiled into the kernel. Just need to get the networking scripts written. Then move the boot diskette onto a CD.

I'm impressed by the loopback device, I didn't know about it until I started on this. I kind of like rolling my own kernel too - but working out what files I need to run Linux is kind of difficult.

6 older entries...

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!