Archive

Archive for September, 2007

*nix

September 28th, 2007

First off, my Sun blog should be coming sometime this weekend/early next week. If I post anything interesting there, I’ll be sure to cross-post it.
This morning at work, while reading Digg, I came by two interesting links that got me thinking:
5 Reasons Your Parents Should Use Linux and Ten Things Linux Distros Get Right (That MS Doesn’t).
Now, I’ll admit, my *nix experience is pretty much limited to Linux. I’ve used BSD a few times, but only as pre-built images for embedded systems like my Soekris boxen. I’ve used Solaris mainly just as a user/web developer in SSH at work. And while I now have a work computer running Solaris 10 and a SXDE image on my laptop, I’m still relatively new – and, given that I’m now doing hardware support and wireless work, I don’t even know what I need another machine in the office for.
That being said, the second link got me thinking. Specifically, about something I read in The Art of Unix Programming [Wikipedia] by Eric S. Raymond (available online here) with regards to interface design. One quote that I was able to find in the online version, comes from Chapter 11, under the subtitle “Tradeoffs between CLI and Visual Interfaces”,
“Resistance to CLI interfaces tends to decrease as users become more expert. In many problem domains, users (especially frequent users) reach a crossover point at which the concision and expressiveness of CLI becomes more valuable than avoiding its mnemonic load. Thus, for example, computing novices prefer the ease of GUI desktops, but experienced users often gradually discover that they prefer typing commands to a shell.”
There is another similar quote in the book, mentioning how resistance to the CLI drops as typing speed increases.
Unfortunately, in some areas I’m still bound to Windows. Though my only personal use for it is to control an ancient Umax Mirage IIse SCSI scanner (with only Windows and Mac drivers), I ultimately need to touch it now and then – whether on my mother’s box (she claims she has to have Windows and MS Office because “that’s what businesses use”) or as admin of the four boxes at the Ambulance Corps where I volunteer.
However, whenever I am (unfortunately) pushed into the task of working on a Windows box, I always feel something lacking. To be blunt, I don’t see how experienced users can deal with it. And this isn’t just an issue of multiple desktops, or reliability (I expect my desktop to have months of uptime, and my servers to have years). This isn’t just pro-Linux, it’s anti-Windows. Linux is great. Solaris seems wonderful, and I can’t want to move my servers over. And, believe it or not, due to playing around with the Solaris Management Console, for the first time in 5 years, I plan on running X on my servers.
What this is, is a talk about total workflow. Years ago, I reached the point where I am more comfortable at the command line, or in an Ncurses-style GUI, than in X.
I an attribute this to two factors – verbosity and speed. The CLI is as verbose as anything can get. I remember setting a static IP on a Windows box. I had to navigate the Start menu, open up the control panel, the network thingy, click on the network card, and work through a series of dialogs. In Linux, I clicked on the terminal icon, typed “sudo ifconfig eth0 up 192.168.0.211″ and then a password. Done. Likewise, refreshing a DHCP lease on Windows requires a whole bunch of “repair connection” nonsense, whereas in Linux all it requires is “dhclient eth0″. The bottom line I know what I’m doing. Windows should have an option to let me quickly do it.
Speed is a related issue. Click, click-click, drag, click, click…. what about just typing? Even for people who aren’t CLI-friendly, there’s Ncurses. YaST2, the SuSE/openSuSE administration tool, has both GUI and Ncurses interfaces. I always use the Ncurses interface. Why? Because I’ve been using it for years. I know that if I want to add a user through YaST, I hit the down arrow 7 times, tab once, down 5, enter. Tab once more to bring up the add user dialog. I can do this in well under a second. What’s the bottom line? Well, first of all, my hands are already on the keyboard. That’s where they like to stay. That’s where they’re comfortable. My fingers need to move a *lot* less to navigate with the arrow keys, tab, and enter than they do to use a mouse. If you know what you’re doing, if you already know what you’re looking for, then a mouse is slower than the speed of thought (or reaction).
So where’s the Windows bashing? Simple. How do people at Microsoft deal with this? How does the guy who *wrote* that network settings dialog deal with navigating the GUI every time, even though he already knows exactly what he wants to do – and probably the system calls to do it?
The bottom line is that every time I sit down at a Windows machine, I wonder how the most popular OS is one that doesn’t give any thought to advanced users. I know that I can type faster than I can move a mouse, why don’t you let me use that? More importantly, why didn’t Microsoft ever think that people would use computers on a network? When I installed Solaris, I wanted to edit a config file. I hadn’t customized *anything* yet, hadn’t installed any other software, nothing. Yet, I was able to open up a terminal and grab my .emacs file from my laptop in one line (scp).
To be totally honest, the question running through my mind is something like “everything is so much quicker on Linux. How do experts deal with Windows?”

Miscellaneous Geek Stuff , , , , ,

Sun, Solaris, other fun stuff

September 26th, 2007

A few bits of news, none of them too important:

I’ve just been hired as the Sun Microsystems Campus Ambassador for Rutgers University. Essentially, my job is to tell students, faculty, staff, and researchers about Sun’s open source technologies and what they can do. This involves giving some tech demos and talks, some networking, and completing a lot of training on my part. Hopefully also getting to hand out some neat Sun swag around campus. I have to admit, I’ve never been a real fan of GUI IDEs – I do pretty much all of my development (admittedly, very little in Java, most of my work is simple PHP stuff) on Emacs. That being said, I’m really pyched about trying some new stuff like J2EE and maybe some Ruby. However, I also looked over some of our training materials on the upcoming NetBeans 6.0, and truthfully, I’m damn interested. I haven’t used a Java IDE since three years ago in high school, and it looks as though they’ve come a very long way.

I’m also really getting into Solaris. The new openSolaris / Solaris Express releases have a lot of great features – and I can’t want to get my hands on a machine running Zones, Containers, and ZFS, just to mention a few technologies. I setup Solaris 10 on one of my work computers, and I’m hooked. It’s fine for a desktop, but I can honestly say that after a few minutes playing around with the Solaris Management Console, I’m seriously considering ditching SuSE (now OpenSuSE) which I’ve been using as a server OS for some 7 years, and switching over to Solaris.

Unfortunately, Solaris is really an enterprise OS. That means it has loads of wonderful features that are also rock-solid, and was designed with the idea of centrally-administered servers in mind – something that SuSE only caught onto recently. However, that also means that it is intended to run on what I would call “new” hardware. In other words, don’t look to put Solaris 10 or Solaris Express (openSolaris / Solaris 11) on your 386. And if you’re like me and running something along the lines of a Generation 1 Compaq Proliant ML370 with a 2nd-generation SmartArray RAID controller (a system that was made about 10 years ago), you might have some issues. It appears that the ’smartii’ RAID driver (and EISA support) was removed from Solaris 10 in 6/06. The solution? I’m going to be looking into buying a bunch of new systems, possibly Dell PowerEdge servers and, if I can get the cash, a few Sun systems.

Lastly, within the week, I’ll be setting up a blog at blogs.sun.com. This will probably contain a lot of Rutgers-specific information, but will also most definitely include my notes on Sun products, and a healthy amount of Solaris-related information.

Miscellaneous Geek Stuff ,

Bug/Issue Tracking – Update / Review of Eventum

September 17th, 2007

So, after many hours of investigating potential bug/issue tracking packages, I have chosen one. And gone live with it, all in one weekend. After much evaluation, my final choice was Eventum from MySQL (I’m using the current version, 2.0.1). I will admit that it is not perfect. There are some features I wanted that weren’t there, and the documentation is awful. But it’s written in PHP.

That being said, it is very much a community-driven project. The support on the mailing list, both from other community members and from Bryan Alsdorf, has been wonderful. I had some issues viewing the help documents, specifically those in pop-ups, but I’ve been told that most new documentation has been moved to the wiki at the link above.

The project provides for advanced bug- and issue-tracking including time tracking, file attachments, and customizable statuses, priorities, and categories. It also provides email integration, both in terms of sending email alerts and opening issues (as well as updating and tracking) by parsing incoming emails. The email alerts worked out-of-the-box, but I did not configure parsing of emails.

One of my main requirements which was met perfectly by Eventum is its’ ability to easily handle multiple projects. It also has a built-in capability to allow anonymous issue submission (enabled on a project-by-project basis). You can define custom fields for issues on a project-by-project basis, and set them as required fields for either registered users, anonymous users, or both.

One feature that I found lacking was the possibility for a user to view all of the open issues assigned to them. Currently, all user interface is on a project-by-project basis. Therefore, listing of open issues is only available for the currently selected project. To cope with this, I hacked together a little PHP script that just queries the database for issues by user and displays it in a simple little page.

One of the major features about Eventum that caught my eye was integration with a version control system (SCM, as far as the Eventum docs are concerned). The feature list stated integration with CVS and SVN. When I actually looked into integrating it with CVS, however, the problems began. Firstly, the javascript-based help popup would not display anything, let alone the proper page. Installation was otherwise perfect under Apache2. I was forced to browse to the included HTML file manually and check it out. The overview seemed simple enough – throw a script in your CVSROOT loginfo file, update a few variables in the web-based Eventum configuration, and you’re off to the races. Reading on, I found that the installation page was a confusing jumble of references to a deprecated perl script and the current PHP script to call from loginfo. Furthermore, database access is provided by having the script called from loginfo parse the logging information and then *run a HTTP GET* on a local script served in the Eventum web directory. This added level of abstraction not only confuses me to no end, but also introduces the possibility for malicious users to insert data in the Eventum SCM database simply by visiting a well-known URL.

More importantly, the script provided to be called by loginfo seems to expect the old CVS logging format, not the new one being provided by my installation of CVS 1.12.12. While annoying, this ended up being a minor fix in the provided “process_cvs_commits.php” – I simply had to rewrite the argument parsing code so that it no longer expects the file, old version, and new version (%{sVv}) information to be space-separated on the command line in the form of s,V,v tuples, but expects everything to be space-separated. I should be cleaning up my fix a bit and submitting it for inclusion in the next release.

Once patched, CVS integration works perfectly. Simply append an identifier to the end of your commit log message, such as “(issue: 21)” or “(bug: 21)” and the commit will be automatically associated with the issue of that number. When viewing an issue, a list of associated CVS commits can be viewed.

It must be remembered that, as I have read, Eventum is used internally by MySQL. It is, therefor, a mature project that is well tested in one circumstance. I believe that it is mature and generally well-working (though I’ve heard reports that the 2.x tree isn’t as stable as the older versions, which are most likely still in use at MySQL). It must also be noted that the issue with CVS integration is most likely only with the newer CVS versions using the new logging format (I don’t know when the switch was made) and will probably not be noticed in older projects which have established CVS systems.

Now, for the opinion section. Eventum has thousands of features. I have detailed every issue that I have, which total about five. I found it to be a stable system, ready-to-run out of the box. Overall, I think it has the best feature set of the open-source bug tracking systems that I surveyed, which are probably most of the ones out there. It’s a great project which I’d recommend to anyone, though if you want more advanced features (like integration with CVS, or things not offered such as anonymous issue viewing) you should be comfortable with coding in PHP until someone makes patches available.

Projects, Reviews , , , ,

PCpro UK: Boycott ad-blocking Firefox, urges furious web designer

September 17th, 2007

When browsing through Digg this morning, I came by a story at PCpro UK entitled “Boycott ad-blocking Firefox, urges furious web designer“. This gentleman stated that, Software that blocks all advertisement is an infringement of the rights of website owners and developers.”

While I don’t like giving press to such a story, I found it alarming on many levels.

Firstly, I’ve never heard of rights of website owners and developers. Being a “website owner and developer” myself, I understand that the web is a dynamic medium. Moreover, I think of HTML as what it is – a markup language. It just tells a program (browser) how to display something in a user-friendly style. I test my pages with Lynx, and expect them to conform to HTML/1.1. In other words, I believe that the Internet is an information distribution tool. I expect, I *want*, my content to be viewable by as many people as possible. I try to use simple markup and make use of ALT tags so that as many people as possible will be able to view the content. I want it to make sense on as many platforms as possible. I want people who need accessibility aids to be able to understand it. In short, I want my content to reach as many people as possible.

Not only is this developer trying to do something which is ignorant and a case of being a flat-out bad citizen of the ‘net, but he is trying to fight against the progress which has so painstakingly been made in the field of web standardization. I well remember when, not long ago at all, I was handicapped by my choice of using Firefox. I still come by the odd site which chose to use a component which is tied to Internet Explorer, thereby alienating 35% of web users.

I will admit that I am by no means the typical Internet user. The fact that all of my some dozen or so machines (excepting one which I need to use a legacy SCSI flatbed scanner) run 100% Free/Open Source software. I use Linux. OpenSolaris. BSD. I believe that I have a right to examine and modify the source code of the programs that I use. When choosing a bug tracking system, I spent hours customizing an open-source alternative because I was unwilling to use the closed-source option which seemed to fit best. Therefore, I guess it is easy to understand that I refuse to buy from, or even visit, a web site that doesn’t support Firefox.

This is not a browser war. This is not me simply deciding to flame someone who isn’t a F/OSS zealot. This boils down to a deeper issue that can be seen all around us – including in the recent news surrounding the US FCC’s auction of a portion of the 700MHz spectrum. The issue at hand is the complacency of technology users, and the feeling by technology providers that they can push anything they want on users. The concept that providers are sending data to me, and that I can use that data however I want (within the extent of the law) is getting lost.

When I watch TV, I used to leave the room or pick up a book when a commercial comes on. Now that I have a PVR (specifically, MythTV), I can record the shows I want, and then have commercials flagged for automatic skipping before I watch them. When I decide to watch them, I have no commercials. When I use the web, I select the content that I want. If I don’t want it, I don’t get it.

Moreover, another large issue at hand is the simple nature of digital media. This applies to TV recording, music and movie sharing, software piracy, etc. Digital media is not the same as analog media. An MP3 (or, for that matter, a CD) is not the same as a tape. In product litigation, there is a term known as “perceived use”. If you make a glass coffee table that is exactly at knee height, it is perceived that eventually, someone will try to sit on it. That’s common sense. If it shatters and kills them, it was your responsibility to foresee such an obvious eventuality. It’s only common sense that if something is flat and at normal sitting level, someone will try to sit on it.

Likewise, I would argue that when any content is distributed digitally, you must foresee that it will be copied or altered. It is simply the nature of the medium. If the recording industry didn’t want people ripping music from CDs, they should have kept releasing things on tape. Even more so with DVDs – I’m sure we all remember the push. Five years ago, I was hard pressed to find a DVD in a local rental store. Today, I haven’t seen a VHS tape in years. The industry *pushed* the format on us, and is now complaining when we use it in a brutally obvious way. If I had to liken it to any legal phenomenon, I would pick entrapment. It’s not a far stretch to compare the recording industry’s actions to those of a police officer who leaves a car running, with the keys in the ignition, and a sign on the windshield that says “Take me for a spin around the parking lot” and then arrests someone for auto theft when they leave the lot. If they industry is worried about piracy, it should have been their obligation to look into exactly how easy piracy would be, before they chose a distribution medium.

In closing my rant, I will ask a few simple questions:

1) Why is it that the law, being as biased to corporate interests (and against the individual) as it is, doesn’t recognize the rights of the individual to use what they legally purchased in a way that they see fit? (i.e. if I buy a DVD, I should be able to make a backup copy on my computer – even the *copyright law* states that).

2) How long will it be before someone turns up an internal RIAA memo from ten years ago stating that the industry could increase its’ profits by releasing music on a medium (CD) that is prone to piracy, and then fining the people who exploit that common sense?

3) When they came out with VHS recorders, the industry was up in arms about piracy. So, they got together and added a small amount on the price of every blank tape, intended to reimburse the labels/artists/networks for the copy that it would be used to make. Why can’t they just tack $3 onto every blank DVD and CD, $20 on every blank hard drive, and stop suing college kids?

Ideas and Rants , , ,

Bug / Issue Tracking Software

September 7th, 2007

I recently posted the following to the DevShed forum in hope of an answer:

I’ve spent the last 48 hours reading up on bug tracking software. At the moment, I’m using the SourceForge tracker for my public projects and a custom (lightweight kludge) system for internal and customer-specific stuff.

First off, I’m looking for something that’s F/OSS and no-cost. Beyond that, it should have a web-based interface, preferably coded in PHP as that’s what I’m most comfortable writing code for.

I’ve looked into many possibilities. At the moment, they’re pretty much narrowed down to RT, FlySpray, Codetrack, Trac, and a few other america’s promise rorabaugh3possibilities. I’ve immediately disregarded anything without an online demo, so some may have slipped by me.

I can do some coding to add a few features as needed, but here’s what I’m looking for:

1) Web-based interface
2) Ability to handle multiple projects
3) Ability to handle modules/branches of a project – specifically to be used for projects which also have custom, user-specific modifications on a branch.
4) *multiple* bug submission forms – ideally, one for team members/technical users, one (simplified) for non-technical end users, and one for non-technical users which also collects browser/OS information, as many of my projects are web-based.
5) If possible, integration with CVS or SVN so that I can track commits related to a specific bug.
6) Fine-grained access control. There should be a way to submit an anonymous (unregistered user) bug. Anonymous submissions and registered user submissions should be authorized on a project-by-project (or branch-by-branch) basis. There should also be access control on viewing *any* information at all for certain projects/modules (so the same system can be used for internal-only projects).

I’m sure that I have a lot of other requirements, but these are the ones that stuck out in my mind. Also, though I don’t have a system up and running yet, there’s a possibility I may be moving to LDAP for all auth, so something where I could drop in a custom auth module would be a plus.

Any suggestions?

I know I probably won’t find *all* of this in one place, but I’d like to minimize the amount of programming I have to do. After all, starting a new programming project to track bugs in an existing one isn’t especially efficient.”

We’ll see what happens out of it.

I recently received a few emails from someone attempting to get PHP EMS Tools up and running for his EMS agency. I did a lot of correspondence via email, and ended up in a bit of a predicament. First off, since CVS is down, I had to make a copy of the latest development sources from their live location on my web server, and revert to using RCS for the development work. Secondly, he wasn’t familiar with the SourceForge trackers and didn’t have an account with them, so I had to manually enter the bug reports. This was not good. I need something better.

I know that a lot of ticketing systems use e-mail interfaces, but I have no interest in that – I want to be able to require certain information for certain people. Moreover, I have a few main issues with most of the ticketing software I’ve seen:

  1. It’s either designed for development team members or non-technical end users. I want a system that can present an end-user with a simple, non-jargon-filled issue submission form, yet put that right in with issues entered by developers, which would have a greater depth of technical content. Developers should be able to follow-up on users’ tickets and add technical details as needed. Most importantly, since most of my projects are web-based, I want to add JS to the form which will include the users’ browser and OS information in the ticket.
  2. I don’t have a server farm. I don’t expect to be getting hundreds of bugs a year, let alone week. As such, it makes no sense for me to run a separate system for every project. I want a system that can handle multiple projects.
  3. Furthermore, I want it to handle internal projects as well – server upgrades, hardware issue tracking, etc. As such, it should support fine-grained access control, both for viewing and submitting bugs. Some projects should allow anyone to view bugs, and allow a non-registered (provided the email address is valid) user to submit. Some projects shouldn’t let anyone but me see *anything*.
  4. I need support for branches within projects. While PHP EMS Tools only has the trunk publicly available, I now have two branches, one customized for my organization and one for this gentleman’s organization. I want a system that can understand that these are branches of the main project, and that bugs may pertain to only one of these branches, but that all of the bugs from the trunk will pertain to them.
  5. I would love a system that can somehow integrate with CVS or SVN, so that I can associate a specific commit with a specific bug(s).

So far, I’m considering FlySpray, RT, and Trac. I’m also looking at Eventum, Codetrac, and BugZero. I’m interested in OTRS as I’ve heard good things about it, but I can’t seem to find a web-based demo. Most likely, I’ll probably give two or three of them a whirl, and then add in the custom code to do what I need. Of course, none of this will happen until I either get CVS back up or migrate to SVN.

Projects, Reviews, Uncategorized , , , , , , , ,

The Death of a Disk

September 7th, 2007

A few months ago, a disk on my Compaq Proliant ML370 went down. The machine has 6 Ultra3 Wide SCSI 15k RPM drives, 18 Gb each, in a RAID 0+1, so I figured that between such a configuration and weekly complete tape backups, I’d be pretty much set. At least for a “home” user. I powered down the system (eek! downtime!), feeling lucky that it didn’t host any critical services. At a loss for a spare drive, and hoping that the decade-old SCSI controller was just having a bad morning, I let the system sit for a few hours and then powered up. It rebuilt any lost data and came back fine.

Unfortunately, a week ago, the same problem happened. The good news is that there wasn’t much important “data” on the disk. The bad news is that the disk was the root partition, and that I lost *both* mirrored drives in a 42 minute window. The system is now down indefinitely, pending my winning the lottery and getting the money for two 15k SCSI disks.

Now, I originally wasn’t too worried. The system is mainly used for storing unimportant data. However, I quickly remembered three facts about STOR1:

  1. My two and *only* tape drives are hooked up to this box.
  2. This box is my CVS server, so now not only are my nightly builds stopped, but I don’t have CVS access.
  3. The To-Do list item stating “fix STOR1 backup script and re-enable cron job” should have been a higher priority.

So, in the future, you will not only read about data recovery operations using a LiveCD, bare metal recovery of the system, but you can also expect my wiki to include a page on implementation of Bacula.

Miscellaneous Geek Stuff