In my increasingly, ehh… ‘insane’ ? form of web surfing. I found this essay by Eric S. Raymond.

For one reason or another, I’ve been using TWO web browsers at one time lately. Flock for websites poorly styled, Google Chrome for as much else as possible ^_^. Multiple windows, several tabs on each, in both browsers hahaha !!! This has yet to slow down the rate at which I surf the web, instead I think I’m getting faster :

I found the article rather interesting. For me, I generally prefer editing configuration files. Because if they are actually well documented, I can usually find my way along faster. Most programs that I have used, usually do a poor job of documenting what various options do… The idea of using a GUI Wizard for setting up and configuring stuff is old as dirt, but so often done half-assed. I’ve seen many programs present Wizards, some do it very well, some do it to a point–that I’d rather do it the ‘hard way’, because it is easier!

The style of user interface I enjoy, is basically that offered by programs in /usr/bin. It’s often simple to use (if you actually document it) and it’s fairly easy to code. When I try to do a GUI, I usually try to create something that is simple to figure out, but still something that I *will* use. I typically will use what ever input method is closet at hand, if my hands are on the keyboard, I use it—one reason that I love vi! While if my hands on the mouse, I’ll probably click my way about: unless it takes more then a moment.

GUI’s all to often make simple tasks easy and complex tasks impossible.

A command line interface, you generally need to know how to use. It pays to at least ask for -h,–help, /? help, depending on what system your using. Most programs are fairly obvious in their behavior without arguments. And good programs that I’ve seen, try to make them intruitive to figure out. A GUI program by comparison, if you need to go much further then a tooltip for something that is almost obvious, but explicit. Then I think there is a problem. I generally pick up and use graphical programs without needing to read documentation, because using a spreadsheet is easy but the meanings of whats fed into them are not always so simple.

If I had to go through the same thing to setup a printer, I would probably say fuck it, and go do it in a way that actually deserves my attention, LPD lol. Although, I do admit: Windows does do printing well in my opinion, as long as you do not have to deal with print “jobs”, then it sucks.

If the designers were half-smart about UI issues (like, say, Windows programmers) they’d probe the local network neighborhood and omit the impossible entries[1]. If they were really smart (like, say, Mac programmers) they’d leave the impossible choices in but gray them out[2], signifying that if your system were configured a bit differently you really could print on a Windows machine, assuming you were unfortunate enough to own one.

The difference between doing the job, doing the job well enough[1], and going that extra mile to make it better![2]. Designing a good UI is much harder then a lot of other things, but when it does happen in a good way—it’s worth it.

I remember not to long ago, I replace my *nix based PDF/PS reader. I dropped KPDF along with most other KDE apps in my change over to blackbox. Gnomes Evince was one that had been on my list for awhile and the new Okular from KDE4 was not ready yet, so I tried Evince. The program turned out to be incredibly simple, so simple that there are no (real) settings to change. The only real configuration option is how you want to layout / size a page, namely fit to page, blah blah.

At first I found this quite disconcerting, but Evince has since become my idea of the worlds best PDF/PS reader. Evince is light, it’s fast (unlike Adobe or KDE’s offers), all of the important stuff is in quick reach, and all of the unimportant stuff is no where to be found. Like at long last, a PDF reader that just cuts the bullcrap and lets me read files gracefully…. without arguing with the PDF reader !

Random thoughts

In the course of my web-surfing about, I found this interesting post by Joel Spolsky.

“The Perils of JavaSchools”

I’ve never been formally educated on a computing thing in my life :. Having seen code by someone that was, whom I’d like to strangle… Some times I wonder if I should keep it that way >_>. I would still very much like to one day pursue a masters, an excuse to (hopefully) learn more then I can solo. But honestly, the odds of ever being free to do so are quite slim.

I still remember starting out in C++ for the first time, and having a problem handling the syntax for simple statements:

if (foo < bar)
do_bar();

if (bar < foo) {
do_foo();
do_bar();
}

At the time, it was actually the most complex thing I’d ever had to learn. After figuring out that the curly brace was only required if there was more then one line, the rest was easy as pie. Once the simple logic was sorted out, I never had a problem like that learning another language.

But, that’s why I’ve come to look on learning a language differently then learning to write programs. A language has a syntax, how do you express something in written form? Through the languages syntax. One of the things that I love about C, is that for better or worse. You can cram the entire language syntax into your head. It’s really that small and light, that leaves a lot more room for working on a problem and not feeling: “Oh, I didn’t know I could write it like that” later on.

Actually creating a workable program is a bit different, it’s not a question of how you may write it (e.g. if (expr) { do; } or if expr: do), but how do you write it? One of the big joys of programming for me, is to sit back and try to figure out how to solve the problem. That’s the fun thing (y).

Writer’s Block: Lunch Break

Do you bring or buy your lunch during the work week? How much money do you spend on food consumed during working hours?

Sponsored by Microsoft Small Business

Live Journals Writer’s Block

Used to bring lunch, but it was a waste of time lol.

Get up, get dressed, get ready, go to work, work straight through, come home and either eat lunch or wait for supper time, depending on the time of day.

I’m generally used to eating twice a day plus an occasional snack. My living habits have conditioned me against eating a breakfast, to the point that if I do, I won’t be hungry for lunch until hours later then normal. Some times when work is heavy, I skip eating until dinner, just to much bother: especially if work is early the next day, and eating dinner late wouldn’t be that much good. Then again, until recently I almost broke my inhale dinner, take nap routine :.

Lunch however, is generally my favorite meal of the day hehe.

Plan of Attack — tongiht through the weekend+monday

In no specific order:

0/ Train Ez, Spawn, possibly Ghost/Medic as well — operation marshal

1/ Write new interface for the ‘custom’ library on sas <---- implemented, remaining code is 'features', need to test it and place under revision control, along with other changes to the lib. 2/ Build mock-ups for GCHQ of the new docs

3/ Implement the install code for ‘that project’ I’m doing with a few guys from forums.pcbsd.org

4/ Test pythonic bindings to libxml2 (I may need this __soon__) <---- lxml interface to libxml2 accepted 5/ Evaluate gtkmm and py-gtk (I don’t think I like the wxWidgets api after spending so much time with Qt3/Qt4) — run tests under Winsucks, because linking against gtkmm and friends will be the big pain.

6/ look up the api docs for interfacing C/C++ code with Python 🙂

7/ eventually get around to placing my .vimrc, .exrc, .Terry_shrc, and various .site_shrc files under CVS (or other scm) on Vectra. <---- vimrc and Terry_shrc imported, other files being less portable, some name convention needs to be worked out. 9/ try to complete social studies homework before [SAS] SOP Prototype Due Date.

10/ eventually catch up with posting more on my LJ then todo snippets

11/ download Wiz’s latest mix and let’er blast <--- it rocks 12/ Implement my admin scripts 13/ Update cougars settings

14/ Implement my ‘lister’ PHP script <--- done, just need to write the password locker. You know, life would really be sweet…. If I could get paid to use my brain, instead of saving it all for my off-work hours lol. No if I new any companies in this burg that hire and train self-educating-geeks :

Japanese beaver or Blackwidow spider?

Well I’ve taken care of most of the stuff in need of doing, realising that I couldn’t take care of the paper work until I hear from Valroe, saved time lol.

Since I’ve been unable to find anything suitable, I’ll probably end up creating a new library of code for the website…. One that obey’s a policy of not shooting the next coder in the foot, like the bastard taking pot shots at me through years old code >_>. The sad thing? I thought about the ideal implementation for hours at work (my job leaves me with my brain free 90% of the time). Yet, between various business…. It is approx 15 hours later……. I’ve still not had the freedom to work on it!!!

Yet implementing it,a nd making code on the website would improve a heck of a lot. Especially debug times, and probably save me more time in the long run. Which reminds me, looking at the code I’m charged with maintaining/fixing:

Judging code by WTF/Min

But what do you do, if the WTF’s are rapid enough to be measured in seconds?

0/ fill out paper work
1/ complete assigned work form hq
2/ test code

rest, I can’t think, I’m to busy thinking about food >_>

Muttering about my task list

I managed to fix the issue quite easy, I still can’t believe it was that simple… I wonder though, if this is what will hit me in the next fix-it task to come up:. I’d also love to punch people that don’t check errorous return codes in the face!

I remember the 6th commandment of C Programmers,

If a function be advertised to return an error code in the event of difficulties, thou shalt check for that code, yea, even though the checks triple the size of thy code and produce aches in thy typing fingers, for if thou thinkest “it cannot happen to me”, the gods shall surely punish thee for thy arrogance.

Especially since I’m the one being punished for anothers dickheadedness!

I really wish PHP had exception handling, WAIT !!! (a quick google of the reference manual later), PHP 5 added them, YKYMF! I smell a few additions to my utility library… unless what I need has already been universally implemented by someone hehe.

And in likewise reflection upon The 10 Commandments of C Programmers:

Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest “foo” someone someday shall type “supercalifragilisticexpialidocious”.

Some people just don’t know how true that is!

Thumbing through the annotated edition, I can’t help but chuckle at this… And hope such a thing befalls the bastard that did this to me lol.

verily there be many, many ancient systems in the world, and it is the decree of the dreaded god Murphy that thy next employment just might be on one. While thou sleepest, he plotteth against thee. Awake and take care.

Ok, so maybe I am a jerk sometimes ^_^

Anyway, I got a little bit of time before bed. I’ll use that to take care of a few odds and ends, and I’ll finish the other work I need to do tomorrow night.

GIGO, How to debug and fix code the hard way

THAT SON OF A BISCUIT BAKING PIECE OF HOG CRAP OF A MODULE !!!!!

I’ve finally found the problem that, i spent 3 hours trying to prove was broken. Only to find out, the ‘contract’ behavior it expected from it’s environment at fault. And the rest of the module, is such a hopeless pile of shit, that I didn’t realize it, until I found the simple fact.

Garbage In, Garbage Out, but no Error message.

I never checked the data stream output, because the interface test failed. But it actually did do exactly what it was supposed to do, just with garbage values, which through off the rest of the code… That ignores errors rather then handling them.

If I h ave got to kick the bitch in the teeth twice a day to do it, this website will furfil the [SAS]’s needs.Or it will get ripped apart bit by bit and rebuilt as something that will serve them well!

Song of the day: 2008-09-08 / Highwayman



[Willie Nelson]
I was a highwayman. Along the coach roads I did ride.
With sword and pistol by my side.
Many a young maid lost her baubles to my trade.
Many a soldier shed his lifeblood on my blade.
The bastards hung me in the spring of twenty-five.
But I am still alive.

[Kris Kristofferson]
I was a sailor. I was born upon the tide.
And with the sea I did abide.
I sailed a schooner round the Horn to Mexico.
I went aloft and furled the mainsail in a blow.
And when the yards broke off they said that I got killed.
But I am living still.

[Waylon Jennings]
I was a dam builder across the river deep and wide.
Where steel and water did collide.
A place called Boulder on the wild Colorado.
I slipped and fell into the wet concrete below.
They buried me in that great tomb that knows no sound.
But I am still around.

[in unison]
I’ll always be around, and around, and around, and around, and around.

[Johnny Cash]
I fly a starship across the Universe divide.
And when I reach the other side,
I’ll find a place to rest my spirit if I can.
Perhaps I may become a highwayman again.
Or I may simply be a single drop of rain.
But I will remain.
And I’ll be back

[in unison]
again, and again, and again, and again, and again.

— title: Highwayman; written by: Jimmy Webb; performed by: Willie Nelson, Waylon Jennings, Johnny Cash & Kris Kristofferson, “The Highwaymen”

And this appears to be the old music video, mmmm: