Monday, December 21, 2009

Taking Some Time Off

In case you hadn't noticed, there hasn't been any news out of the ol' DW skunkworks. I haven't really had the desire to do much of anything with BeOS or Haiku the last couple of months, but, frankly, I'm not sure why. Some of it just seems absolutely futile--a chasing after the wind, to quote the book of Ecclesiastes. The thought of writing code almost leaves a bad taste in my mouth... that so much time and thought is poured into something which works well for a time, but also requires maintenance to keep running properly: a total lack of desire or motivation.

I've been here before. The last time I felt this way, it was burnout. There is a distinct possibility that this is the case again, but it feels different this time even though I can't quite put my finger on it.To put it succinctly, I'm puzzled. This may be just a pause in the journey, but only time will tell.

Thought for the day: when you're at the bottom of a well, don't forget to look up. :-)

Sunday, November 8, 2009

OpenOfficeMouse: An Epic Fail in Usability

Having been down for the count with a back injury for the last week, I'm a little behind the curve in keeping up with the news. I just learned about the OpenOfficeMouse, an open source mouse designed for use with the OpenOffice.org office suite. Upon seeing the picture, I couldn't believe my eyes and didn't want to, either.

This mouse is a usability nightmare and it's so ugly, it's oogly. If you don't want to mess with the press release, I'll give you the lowdown: it's a mouse with 18 buttons, 3 modes, a joystick on the side with 3 modes of its own, tons of optional extras, and tweakability beyond anyone's dreams or worst nightmares. When I first saw a picture of it, I couldn't believe my eyes that someone would come up with a product this bad. Warmouse did.

I've seen quite a few comparisons with Apple's Magic Mouse. I'm not going to go there -- it's been done -- but what I will do is detail what's wrong with the OpenOfficeMouse. There's quite a bit wrong with it, too, and I'm not even referring to its appearance.

The buttons... oh the bevy of buttons available on the OpenOfficeMouse... where should I begin? It's almost as if OOM is a cross between a keyboard and a mouse, possessing two groups of seven buttons with the two primary buttons on the outer corners. The only differences between any of the buttons in each group are minor: slight shape differences, location, and, in the case of the primary buttons, color. It would seem that the designers forgot that a mouse is generally used by touch, not sight.

One original mouse idea went around at the Xerox Palo Alto Research Center (PARC) where it was designed. The concept, if you ask me, was very forward-looking: its three buttons had a different color and texture so that you could tell which button you were pressing by how it felt under your finger but easily specified on screen, e.g. red-click. Aside from the mouse becoming more rounded to fit the hand, not much else has been done to significantly change mouse usage since its inception at the PARC.

Button collections aside, there is also yet another major flaw in the mouse: the abundance of modes. Changing application behavior based on a button press or a checkbox is not generally a good idea because the user needs to adjust his actions according to the mode in use. Adding more kinds of modes places more mental load on the user. More technical users generally don't have a problem with this, but the difficulty they impose increases with the user's lack of expertise. Without appropriate feedback on the current mode -- considering the design flaws elsewhere in the design, is unlikely to be the case -- the different modes available both on the joystick and on the mouse in general will probably cause plenty of input errors, as well.

The intention behind the OpenOfficeMouse is to improve the experience of using the OpenOffice office suite faster and/or more easily. Unfortunately, unless you're an incorrigible tweaker, this mouse isn't going to help. The solution is to fix OpenOffice. Software is MUCH more malleable than hardware.

Wednesday, November 4, 2009

Pondering the Next Moves for Paladin

It's been quite a while since I reported on any development I've been up to. There hasn't been much, but I have been doing some Paladin hacking. For probably a month now, I've been attempting to figure out what direction Paladin development should take. The development branch has received some changes to add support for different project types. If I remember correctly, BeIDE had something like this which it called stationery. There is also a code library feature which has pretty good potential, but I've noticed some major architectural issues in its synchronization code and also in other areas. The only problem is that there is other code, such as the Project class, which needs significant changes in order to make it work well, so I've begun doing some experimental refactoring. The nice thing is that I'm building in some more flexibility into the code. It should make for a more powerful build system... it should also be interesting to see how well all this works out. TTFN, dear readers. :)

Friday, October 30, 2009

Karmic Koala is out...shrug

I was really excited last April when Jaunty came out. This time...not so much. Don't get me wrong, I like the new release, and the machine I'm typing this from is upgraded to it pretty quickly, but from the perception of Joe User, it seems more like an LTS upgrade. Here's what I've seen that's new:

First, there is the usual shiny. The icons are different. This version includes some nice wallpapers, and the boot process was made shinier by replacing Usplash with Xsplash. Of course, there is just this odd-looking Ubuntu logo while you're waiting for it to appear. The Xsplash screen is just plain gorgeous, but vaguely-beige logo that shows up beforehand is at least one step back. It's just ugly.

Once again, boot times seem to have been improved. I can't put my finger on it and I haven't bothered to time the differences, but it certainly feels faster.

A few new apps and some changes to existing ones. Network Tools adds some standard tools like pinging and port scanning, but nothing that wasn't already easily installed by those who needed it (or skipped if using bash). The Disk Utility is a nice addition, but it's only a mild improvement over gparted -- SMART information and a different way of looking at the partitions. The Ubuntu Software Center is even simpler than Add/Remove Programs was. As if IM using Pidgin was hard, as far as I can tell, Empathy makes A/V chat easy. A bunch of programs received upgrades, such as Firefox to 3.5 and OpenOffice.org to 3.1. Aside from these kinds of things, nothing earthshaking.

One notable exception to the otherwise nice-but-not-groundbreaking list is Ubuntu One. Now by default there is cloud storage. For cheap power users like myself, the 2GB storage is just a drop in the bucket and with the US economy being in the toilet, spending $10 or $20 a month for extra storage just isn't an option unless you *really* need it. Dropbox has the exact same storage costs and is cross-platform, unlike Ubuntu One. If you need cloud-base file synchronization with at least one Window$ box, this is a much better option. Still, Ubuntu One is nice, too.

Maybe I was expecting more because some of Canonical's previous releases have been major improvements. Karmic Koala is more of an incremental improvement. There are other big fish to fry, such as simple remote desktop access with FreeNX or a decent entry-level desktop publishing -- sorry, Scribus doesn't cut it in this case. Yes, these are "merely" apps, but there are plenty of improvements that can be made. I'm hoping Lucid Lynx makes some real headlines, but for now, I'm quite content with Karmic.

Saturday, October 10, 2009

One More Feather in Haiku's Cap

At the end of last week, I ordered a new computer that came about the middle of this week. It's an Athlon II 2.6 Ghz quad core system. I was so excited about it coming, and now that I have it, it feels like a Ferrari compared to either of my other two machines. Zeta doesn't run on it very well, so that's a small bummer, but Haiku runs perfectly... no, unbelievably. It just gets out of the way. How well? I ran 4 instances of the Haiku3D demo at the same time, and all 4 CPUs were only at 50%. Compiling the Capital Be beta from source with the development Paladin took what seemed like no time and didn't even come close to maxing out all four cores, and as far as I could tell, it couldn't compile faster because gcc was I/O bound. Not only the Haiku run well on old or low-power hardware like netbooks, but it is even better on fast machines.

Sunday, October 4, 2009

Making Up for Lost Time

As if it weren't already obvious, I'm not off the radar yet. ;-) Just one day after the 1.1 release, I spent this evening hacking on Paladin and adding support for project templates. I never really bothered with it until tonight when I wanted to hack together a quick-and-dirty development tool and wasn't happy that I had to write some more boilerplate code. Bleah. I'd toyed with the idea long ago, but didn't bother for some reason. It's nowhere near what I'd like for customizability, but works pretty sweet for saving some initial project creation time, so here's one nice feature for 1.2. :)

Saturday, October 3, 2009

Capital Be... It's About Time!

As you can see, I'm working on tying up some loose ends. Years ago, I said that I was going to open source Capital Be, my personal finance application. I meant it... I'm just a little late. ;-) Like all of my other projects, it's MIT licensed. I may keep updating it, I may not -- all that really needs done to be *really* useful is to finish the budget variance report code, which isn't all that easy, unfortunately. Perhaps OFX online banking support isn't even out of the question. Only time will tell on this one. :)

Paladin 1.1 is Out!

Normally, a simple release wouldn't be particularly newsworthy, but this is one I'm pretty excited about: the current unstable branch was released. This is the version that I've been coding with (and on) for the last several months. There are lots of internal improvements, such as better startup time because it stores dependency information in the project file. A host of small interface tweaks have been added, as well. One that I use pretty frequently is the opt-out for creating a folder for a project -- great for migrating projects to Paladin without much extra effort. Using drag and drop to add entire folder hierarchies to a project is a great time-saver, too.

My favorite feature of the release, though, is the code library. It started because I have quite a few classes I've written over the years which are shared between my various projects, but because I don't have a dedicated source control server (something I've been considering more and more lately), keeping these classes in sync with the occasional changes that I've made is more than a little bit annoying and error prone. Check a few classes into the library as a module, and Paladin automatically synchronizes the code.

Saturday, September 26, 2009

Ohio Linux Fest... What a Ride!

Well, for not having been doing hardly anything Haiku-related in the last month or so, this kind of made up for it. It all started with almost not getting a table at the conference and then on Wednesday--if I remember correctly, that is-- suddenly having one by the power of Greyskull, um, I mean Koki. ;-) This meant a flurry of e-mails, burning what remaining CDRs I had around the house, quickly putting together a Haiku demo machine, and a host of other details.

I arrived at the Greater Columbus Convention Center at about 7:15 am to set up and was quickly met by Michael Summers, whom I've known since the first WalterCon years ago, and Joe Prostko. We had been concerned about not having a projector, particularly on such short notice, but as we found out, it wasn't really necessary. We had a six-foot table, Joe's MSI Wind netbook, my Thinkpad R40 laptop, some live CDs, a bunch of fliers Urias had sent us, a couple of chairs, and some great neighbors in the non-profit section: the Northeast Ohio Open Source Society (NOOSS) and The Linux Link Tech Show (TLLTS). Setting up didn't take long, and even at that early hour there were already a lot of people there besides the sponsors.

I'd never gone to a computer convention like Ohio Linux Fest before, so I wasn't completely sure of what to expect. It wasn't all that different from some teacher conventions that I'd attended early in my teaching career. The big difference was that I could talk about my favorite operating system with the people around me and they'd actually understand me. :)

To be honest, I wasn't really expecting the kind of foot traffic that we received during the day. The table was in a great location and I can't even remember the number of people that I talked to during the day, let alone Joe and Mike. The live CDs that Joe and I had made didn't last long at all and despite starting with plenty of fliers, after about four hours I ended up running to Kinko's to make some copies of our last one.

After reading about others' experiences at similar events, I thought it was going to be a long day. Nothing could have been further from the truth. The whole day was a blur of talking with great people. It goes to show you that time really flies by when you're having fun.

Having been through my first convention, I'd like to share some of the insights I've gained. First, this is a really exciting time for Haiku. It runs circles around the competition in terms of the feature set in combination with its ease-of-use, low hardware requirements, and performance that it offers. On a machine like a netbook, there is no comparison. The small storage footprint and ease of configuration give Haiku potential for a sort of OS toolkit, similar to how Linux is used as a base for tools, such as CloneZilla. The demand for something like our favorite OS is there. All we really need is critical mass.

Friday, September 11, 2009

Working Harder than Before in the Office

This school year sure has been a busy one. Like last year, I'm teaching computers, but unlike last year, I'm teaching junior high and high school students. No rugrats for me this year, which is a bummer. I like the students I have -- especially when I taught most of them when they really were rugrats -- but I love teaching little kids. The courses? Office and typing. Bleah. Luckily, teaching Office 2007 isn't so bad because I'm also teaching OpenOffice.org right alongside it. Time is tight, but some of them are getting it.

I haven't written a line of code since school started. :( I'm having to learn the Office curriculum I'm teaching, which has been sucking up a lot of time. I also need to expand my IT skills, so I've started studying for an MCSA. Just so you know I haven't drunk the Redmond brand of Kool-Aid, right before I started I had been working on learning CentOS administration, which I still plan on learning. The upshot of the studying is that just in the last week (which is when I started) I've managed to put to use immediately almost everything I've been learning. All of this has seriously cut into my coding time, but with the potential for more money, this is a Really Good Thing (TM).

I'm still planning to go to the Ohio LinuxFest, but I don't know if Haiku will be able to get a table. I'll find out later today, so I guess we'll have to wait and see. Even if we don't get a table, I'm still going and pushing Haiku from the other side of the vendor table. Heh. *evil grin*

Tuesday, September 1, 2009

Ohio LinuxFest, Here I Come!

After a little prodding, I've decided that I'm going to be one of the guys manning the Haiku booth at the Ohio LinuxFest. It's been held in Columbus for a few years now. Last year there was talk of going, but I couldn't swing it because of all the crazy stuff going on at work. It should be an intersting time, and after 4 years of not doing anything like this with Haiku (WalterCon '05), I must say it's good to get back to having some fun with Haiku again.

Saturday, August 22, 2009

CloneZilla: More than a Ghost of a Chance

School started for the teachers at my school last Wednesday, so no code for me. :( However, there has been an up side to it all. To make a long story short, I get to teach some junior high and high school computer classes and had a need to image a total of 10 laptops. In the past, I used Norton Ghost 12 and recently upgraded to 2003. Both were provided by my school. Never again, however. While I was in the middle of waiting for a machine to be imaged, I did a little looking around Wikipedia for alternative software, having never heard of any alternatives or bothered to look for any. There is a wonderful alternative: CloneZilla.

What is CloneZilla, you ask? It is a Linux-based Live CD project which does the same basic stuff has Norton Ghost 2003 (and a lot that it doesn't), but is free software and -- as far as I can tell -- faster, too. Both allow you to back up your machine to one big file and then clone others from that file. CloneZilla, however, is quite a bit more technical than Ghost, which tries to market itself as both a backup solution for the regular user and a sysadmin's imaging tool. With that said, CZ is quite technical, and there were quite a few options that I had no clue what they were for. It was a wise idea for those behind the project to incorporate both a beginner and an advanced mode. The latter is well-named!

Some of the other things that I really thought were nice to have: backup can be done via SSH, NFS, or Windows file sharing (Samba) or to a local disk. Quite literally, you could clone a machine from the Live CD and a flash drive! Maybe I'm just really happy because Ghost 12 leaves you using PC-DOS and 2003 sticks you with the Vista pre-install environment. While for different reasons, they're both junk. It took 2003 probably a good 5 minutes to boot and the CZ disc about 2. Multiply that by 10 machines and you have something significant.

One thing I did not test out was the server version of CloneZilla. It comes as a part of Diskless Remote Boot Linux and requires loading a machine with Linux to act as a server to handle booting over the network. If the testimonies on the project's website are any measure, not having to buy the expensive enterprise version of Ghost coupled with the speed of cloning up to 100 machines over the network at the same time is nothing short of phenomenal.

This is not to say that working with CloneZilla is all wine and roses. I did run into one major problem with my first attempt. The first image I created with it was done over the network to a disk I was sharing from Windows XP. The image had somehow gotten corrupted when it was created. However, I made a new one to a USB hard drive I had lying around and it was all fixed from there on.

I can't stand Norton's antivirus package, but Ghost is a solid product. CloneZilla feels like it's based on Linux, full of technical terms and a slew of unfamiliar options. Guess what? When it comes to price, speed, and hardware compatibility, Norton seems to lack the spirit.

Monday, August 17, 2009

Haiku Alpha: More than Pleased

I am *so* glad about the appearance of the alpha at last. It's something that I've wanted for myself and the community for a long, long time. Let's hope that there is an influx of developers into the community -- in the words of Michael Phipps, Haiku itself is a slow but steady train and while there are plenty of apps out there thanks to BeOS' legacy, there are some key ones missing, such as good office software.

What kinds of applications are we, as a community, missing? Major ones.

  • Word processor - the AbiWord port is by no means complete. Productive was lightweight for 2000. It's not even really worth mentioning almost 10 years later.
  • Spreadsheet - Sum-it, now that it is open source, is missing features that many office workers need.
  • Personal Information Manager - I hate Outlook. Haiku needs something better that fills the void. E-mail is covered with BeMail and Beam and contact management (mostly) with Mr. Peeps, but there is no good, easy-to-use calendar program. Sunbird isn't stable enough to count.
  • CD Burning - Helios is the only good one, but it's dead in the water because it's closed source and won't even run on Haiku. Melt is only open source one, it's hard to use, and its code is a mess.
  • Photo manager - Think of the many things that Picasa does. BeAndSee in combination with PhotoGrabber is a step in the right direction, but, as a community, we're not there yet. Wonderbrush is a great image editor, but it doesn't to photo-related work like red eye removal or color adjustment.

There are websites that let you do almost all of those, but there are a great many times when you don't have access to the Internet. What do you do then? If you dual boot with another OS like me, you reboot to another OS. If not, you're pretty much stuck.

If you're a developer and even remotely committed to Haiku, find a project, get behind it, and help. Don't know how to code? Try learning. If a moron like me can teach himself how, anyone can learn. I'm not in the realm of Axel or Ingo, but, then again, I didn't go to college for computer science, either.

What if you don't want to learn to write programs or can't for some reason? Help developers in the community by using their programs and telling them about your experience. I don't know about other developers, but it makes me feel good that something I wrote is helping someone else and I want to know about bugs. I probably don't know about some of them. It takes a some time to write a few e-mails, but not nearly that of writing programs, and it helps everyone. Have a blog? Test and review some software. Tell other people of your experiences with it. Can you write well? Help work on documentation.

In some ways, I'm getting a feeling around the community that is probably similar to the days of BeOS DR9. The community is quite small and most people I talk to have never heard of BeOS, let alone Haiku, or they heard of it once and that's it. What makes open source work is people giving back, and not just developers.

Friday, August 14, 2009

Windows Responsiveness (or Lack Thereof)

It's official: I really have gone off the deep end -- at least if you talk to anyone from Redmond. BeOS fanatic zealot that I am, I'm acutely aware of the responsiveness of an operating system's desktop user interface. I expect my computer to run slower if I'm hitting the hard drive or processor pretty hard. I also expect programs to NOT take several seconds to respond to input or to redraw themselves. My experience with OS X is pretty shallow in comparison to my usage of various Linux distributions, BeOS and its variants, and all Windows versions save Media Center and 2.0 -- yes, I there was a time where I twiddled with Windows 1.0. Nonetheless, to my recollection, I have never seen Windows respond to the user very well even on a machine far beyond the recommended specs.

After spending the summer with my work laptop running Ubuntu, I had to install XP Pro. I didn't want to, but my school is a Windows-only shop. I disliked doing the install and resented having to hunt all over the Web for drivers only to have to install 500MB of system updates, but the last straw was when I was copying over my MP3 collection. Both machines were running XP and the file copy was taking forever. After about fifteen minutes, I rebooted the source machine into Linux, deleted what little had been copied, and started copying the collection using FileZilla to do an SFTP transfer. I had two files being copied at once and each one was taking half the time to copy as the XP file copy had. Somewhere in there, there's a problem. Worse yet, the destination machine was so slow (Athlon 64 3000, 512MB RAM, 80 GB hard drive) as to be unusable. Just plain sad. Man, I'm going to dislike using this machine with Windows again. :(

New Paladin Stable Release and More

Well, I finally got around to getting the patches I've made to the stable branch out the door. I actually was planning on doing it a little while ago, but BeBits and Haikuware were down, so it seemed kinda silly to do it then. Anyway, it fixes a couple of minor bugs plus a couple of major annoyances. Anyone who has done any development in Haiku with Paladin has discovered that projects don't keep their file type, which is very much like trying to walk a mile with a rock in your shoe. This is a bug in Haiku (#3231) that hasn't been resolved, but I *did* manage to find a way to work around the problem. Libraries in /boot/common/lib also show up in the library window. These two patches make developing in Haiku a lot more pleasant.

I'm not just standing still on Paladin's unstable branch. I'm working on what will probably be the last feature before I release an official build: the code library. What in the world is that, you ask? A feature itch I've had for some time which is now getting scratched. The C++ computer language lets you write code with reusability in mind. I have a bunch of files which I use quite a lot in my projects. The only problem is that if one of those files gets changed, I have to go through all my other projects that use the same files and update them, too. Paladin's code library eliminates this by keeping its own copy and updating projects when you open them. It's a little like using version control (CVS, Subversion, etc.), but much less work for this kind of task.

Despite its name, the unstable branch right now is pretty stable. It should be interesting to see some of the bugs that other people find once it's released. TTFN

Monday, August 3, 2009

Happy Everything


I just recently discovered this picture as a really cruddy jpeg file with lots of artifacts. I liked it so much that I spent several hours yesterday redoing it in Inkscape. While there are small differences, they're not very noticeable. I'm posting the results here so others can enjoy it, too. You can click on it at the left and save it (PNG, 1280x1024 for desktop wallpaper) or save the SVG version.

Tuesday, July 28, 2009

Extracting Clipart from the Office Website

Despite things like the recent GPL-licensed(!) contribution from Redmond, Micro$oft is not well-known for being friendly toward the open source movement. One example is the clipart available on the Microsoft Office website. It's an excellent resource for teachers and office workers. With the Office 2007 clipart manager dead in the water with Crossover Office and Wine last I checked, getting clipart to make newsletters and such in Linux is a problem.

The problem is that clipart from the Office website is downloaded in MPF files. These are simply XML files with the actual file data base64-encoded. There is a Perl script to extract the files, but it requires several modules to be downloaded from CPAN. Not too horrible for me, but definitely not something that, say, the secretary at my church would be able to tackle. No more. I have written a GPL-licensed Python script, mpfextract.py, to extract all clipart from MPF files. This'll also be a nice thing to have once Haiku has WMF support beyond having libwmf ported. :)

Tuesday, July 14, 2009

Time Flies When...Aw, Who am I Kidding?

The last couple of weeks have been pretty fast, but I don't feel like I've done a whole lot. Most of my time has been spent painting my living room. Luckily, I finished it the middle of last week. I've spent the time since then applying and sanding drywall mud. Today I had 5 1/2 hours of joy: putting primer on every surface in the sun room save the carpeted floor. Bleah.

I do have some good news, though. Frustrated by the lack of a decent packaging system, I've created a self-extracting package. It looks and works much like the installer for SoftwareValet's packages. The nice thing is that these can be invoked to install from the command line, so using this system could be ideal for distribution makers. Now all I have to do is write the tool that puts files into a package, which was the reason for starting it all. I also need to do a public beta of a self-extracting package, so don't be surprised if you see a Paladin release of some kind in the near future. :)

Tuesday, June 30, 2009

Still Here

Yep, all quiet on the front, but not for any bad reasons or anything. I've been spending quite a lot of time working on the renovations in my house. Last summer, my wife and I started working on fixing up our house for when we finally decide to sell it and move closer to work. My living room was in a nice state of plaster covered with drywall mud when school started. 9 months later, I got back to working on it. You know you're in education if your life is school 9 months of the year. I can safely say that it's about 75% done -- 3/4 of the room is completely done and the other 1/4 isn't much beyond having the walls stripped and ready to start with mud. It'll probably be pretty close to completely done by the end of the week, thankfully.

Codewise, I'm still working on the GUI designer foundations -- list controls, buttons, and checkboxes work right now. There is still a ton of work before it's worth using for anything, but I'm not giving up. I've been working a bit on the development branch of Paladin, too.

The last couple of days I've been working on an alternative using SoftwareValet packages. The reason? Release time for Paladin is a major pain in the neck, mostly because the same set of procedures needs done each time and they have to be done manually. This, on more than one occasion, has led to mistakes in the package, in the build, or something else. This goes back to one of Joel Spolsky's questions in his 12 Steps to Better Code article. If you've not read this article and you are either a developer or work with one, you should definitely read it. To save the rest of you who don't want to bother, you should have it possible to make a build -- from checkout to compiling all the targets -- in one step. The BeOS platform doesn't have something like that... yet.

Thursday, June 18, 2009

It's Official: Paladin 1.0!

At seven months old, Paladin certainly isn't going to win any age records, but it's nice to see how far it's come since last November when I first started it. It's been a couple of months since the RC6, but that's actually a good thing -- it's taken some time to find some of the bugs that have bitten the dust in this release. I'm also at the point where pretty much the only time I use BeIDE is to debug Paladin. All of my other work, such as the GUI designer, BeVexed, BeMines, and so on, have been done using Paladin. It feels great to have really scratched an itch that I've had for such a long time. I spent yesterday putting GCC4 fixes into the code for both development branches, and now the community has an IDE for both GCC flavors. I'll still be patching any bugs that might crop up, but it is feature complete and stable at this point.

For those of you that haven't played around with it, here are some of the differences between BeIDE and Paladin:
  • Open source - you can pretty much do anything with its code that you want, except change the copyright on the original sources.
  • Group non-code files -- notes, TODO lists, etc. -- in with your code for better organization
  • Support for flex and bison out of the box
  • More ways to execute your program, including logging debug output and setting run arguments
  • Support debugging with gdb in Haiku
  • Project files are in an open format
  • Projects can be built from the command line
And this is just for the stable branch that came out today. Just so you know that I haven't been *just* fixing bugs, the development branch sports additional features, like makefile generation, better multithreaded build support, better integration of resource files, shell script support, and fast project backups. With the stable branch reaching 1.0, I'll be putting out periodic development builds so that people who like living on the cutting edge can get new features while others can get hold of a rock-solid build they can depend on. I'll be doing all of my development with this branch so that bugs can be found and fixed as features are added.


I've also added GCC4-only packages to BeBits so that anyone running it can conveniently get an alternative to just Pe and jam or make. I'm having problems uploading the new release to Haikuware, but I should have that resolved before long.

And for those of you about to code, we salute you. ;-)

Saturday, June 13, 2009

More Component Work Done

Since Sunday I've managed to get some harder code written in the component system for this GUI designer I'm working on. I was surprised at how much work was required to support the AddChild and RemoveChild methods for windows and views. It's not quite there yet, but it works well enough for some of my test code to work on other things.

The component code allows for something like reflection -- you can get a list of interfaces that an object supports and a list of its properties, so if an object implements the PView interface, you can, for example, expect to be able to change its ViewColor property and see its background color change. One of the coolest parts of the API that I've built is that I changed *one* name in the code and rebuilt the test program and a button became a checkbox! The component API itself doesn't lend itself well to manual coding -- more effort is required to set and get properties, for example -- but it isn't really intended for that. Getting a list of an object's properties, making an editor for each, and modifying the object's values from these editors will be very easy and not require very much effort.

All of this hammering on a project has also exposed some small bugs in Paladin's stable and development branches, including a crash that I fixed last night. As soon as I can get PalEdit's sources fixed to build with GCC4, the official 1.0 release will be going out the door. Man, I love summer vacation!

Sunday, June 7, 2009

Pythonizing C++

Yep, I'm still working with that possible GUI designer. It's been fascinating. To do a designer properly, you need some way of dealing with all of the different controls in an abstract way of dealing with properties and methods. The main problem for this in BeOS is that C++ doesn't like dynamic interfaces. At all. Luckily, I've managed to take some cues from Java and Python and the result seems to be both pretty flexible and reasonably elegant. Check this out:

PObject *o = NULL;
o = NewObject("PWindow");

StringValue sv("FooWindowTest");
o->SetProperty("Title", &sv);
RectValue rv(BRect(100,100,500,400));
o->SetProperty("Frame",&rv);

BFile file("/boot/home/Desktop/test.plg",B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE);
BMessage msg;
o->Archive(&msg);
msg.Flatten(&file);

In these reasonably few lines of test code, I not only manage to create a window in the upper left corner of the screen in a thread-safe fashion, but I can even save it to disk and recreate it in the exact same state as I left it, and the code is refreshingly short:

BFile file("/boot/home/Desktop/test.plg",B_READ_ONLY);
BMessage msg;
msg.Unflatten(&file);
PObject *o = (PObject*)UnflattenObject(&msg);

The backend code is only 5 or 6 files of reasonable length, but even so, I'd be hard-pressed to do the same kind of trick using regular BWindow and BMessage code in anywhere near the same amount of code. Then again, maybe I'm just overly excited. *shrug*

What's the significance of this technical rambling? The designer, assuming no other major roadblocks from here, will be very flexible, relatively easy to code, and pretty simple to extend with classes not bundled with the operating system. Code generation may not be all that difficult, either, but only time will tell on that one.

Thursday, June 4, 2009

Keeping Busy

As of three weeks ago, I was in the throes of futzing with Python to make a clipart manager for Linux and hit what seemed to be a brick wall. For the most part, it is... that is unless you use Qt. Looks like PyQt4 is going to be the route for the API at this point. I've taken a break from that for now while I'm in the process of learning to use it, but I'll be coming back to it later.

Paladin has seen some renewed development. The last time I was actively developing it, I was in a burst of activity that kind of burned me out a bit. After a little time off, I'm back at it. There have been some bugfixes and it looks like there are enough that a new release isn't far off. There are a bunch of things that have been fixed and there is even work on getting it to build under GCC4.

I've also stumbled into actively looking into something that I thought was going to wait for later: a GUI designer. Yeah, yeah, there's MeTOS, BeBuilder, Bic, BeXL, and probably a few others. Each has their own problems and limitations. The biggest problem I see is a lack of active development, especially in light of the slow-but-steady progress Haiku is making. None of the open source ones seem all that usable -- though each has some nice features -- and there doesn't seem to be anything new brought to the table aside from an easy way to piece together the GUI. Right now, I'm working on a component model that so far seems to do its job pretty well and as far as I can tell is language-agnostic, making the use of something besides C++ (yab, Python, Perl, etc.) not too far-fetched. We'll see what happens.

School lets out for the summer tomorrow, so there should be some significant stuff happening in the next couple of months. Should be fun to see what, um, develops.

Friday, May 15, 2009

Brick Walls Sure Hurt

Ouch. I've been doing research into the whole Linux clipart manager and wxPython and I've run headlong into a brick wall. What is it? The X clipboard system was designed by paranoid, short-sighted morons. If you're not copying text, you're pretty much shut out, so it seems, because most applications that work with other kinds of data use private clipboards. Then again, the way the X clipboard is designed, clipboard storage is decentralized and if an app puts something on the clipboard and then quits, the data goes poof with it. Interoperability at it's best. Yay! The nice part? Unless we have some benevolent dictator say this has to be fixed, it'll never be fixed, either.

This discovery more or less puts the clipart manager dead in the water, unfortunately. The upshot to all of this is that I've been slowly getting the hang of working in Python, which is both fun and powerful.

Wednesday, May 13, 2009

Hacking Python

16 days of school left before the end of the year. Good. I've spent almost all of my waking hours the last week and a half somewhere besides at home. For me, this is definitely not a good thing. I've been learning a bit of Visual Basic in VB.NET 2008. It's OK, but it seems like a weak cross between C++ and Python. The last day or two, I've felt more like it's a waste of time to learn VB when I can learn something like wxPython, which should be just as productive and cross-platform to boot.

I've liked Python for quite some time, but I never really had any need to use it. Until now. I haven't used BeOS lately because I've been trying to iron out some production limitations for office-related work done at my school and my church. What are they? I need a flashcard program that can handle pictures or text card and can be used in a way as to be done with an LCD projector with a class. Nothing out there does that. There is also a complete lack of a clipart manager for Linux, which for a teacher or church secretary is an automatic no vote.

The state of consumer-level desktop publishing under Linux is abysmal. Yeah, yeah, I know about Scribus. It could be workable if there were WMF support. KWord and OOo Writer can do frames, but neither is very easy to do even somewhat complicated layout work. I'm thinking of something along the lines of Broderbund's The Print Shop or even (blech) Microsoft Publisher.

The major problem with Linux DTP is that unless you're someone who does it professionally and knows the intricacies of things like working with a printer and such, it's not very easy to use. I hate to say it, but Scribus could be a really killer program if it were able to utilize WMF and EMF files. The pro doesn't need them, but a large number of other people depend on them. The part that bugs me most is that the website offers a crappy workaround which, while providing results with varying levels of quality, is too technical for Joe User to really get a handle on and, frankly, too much effort to want to manually bother with.

Barring the Scribus development team to implementing this (fat chance), the solution would be to build a manager which can import and manage collections of clipart from different sources and then export them to the clipboard or to a file in a variety of formats. That is the goal, but first, I must learn to walk before I can run. Alas. The fruits of my first efforts? A script to extract clipart from MPF files served up by the clipart obtainable from the Office website. I'll post it a little later when I have more opportunity. For now, I've got some serious reading and hacking to do.

Thursday, April 30, 2009

Ups and Downs

That would definitely summarize my life for the last couple of weeks. Not so much a roller coaster, but it has had some smaller ups and downs. I started working on integrating my old website and this blog and renovating my old site for the integration. It's a ways off and I'm having to relearn Javascript and learn some DHTML magic to make it work well, but it's started. Teaching computers at school has also spawned a couple of smaller projects and revived work on another -- if you're a coder and none of the tools available fit your needs, what do you do? Make your own, of course!

This would probably be the first time where I've been juggling more than a couple projects at once: a simple whiteboard application (almost done), fixes for BeMines, a few more tweaks remaining before Paladin's 1.0 final release, a small app for reviewing flashcards -- mostly pictures -- in class with my students, and reviving my first project by rewriting it: BePhotoMagic. It's a lot, but I'm not planning for the tools to be used before the end of this year, and it's all been fun stuff, so a timeframe for release isn't really an issue.

Unless you've been under a rock or don't follow Linux at all, the latest release of Ubuntu, Jaunty Jackalope, was released last Thursday. I absolutely *love* it because of the much-improved boot times -- the only real complaint that I've had about Linux up to now. My development box is a Pentium 4 3Ghz with Hyperthreading and 1GB of RAM and it boots in 30 seconds. That's half as long as XP Pro on the same machine!

Also in Jaunty is the dovecot-postfix package, a complete mail server installed in one package, courtesy of the Ubuntu team. If you've never attempted to set up a mail server under Linux, it's not for the faint of heart. In fact, I'd say it's harder than compiling and installing your own Linux kernel, so this is also big news for any would-be beginner sysadmins out there.

It's also easier to work with more than one monitor under Linux using the new release, as well. It's still a little strange and takes some playing around, but it's nowhere near the headache that it used to be. Gone is the need for futzing with xorg.conf files to configure Xinerama. This is also a major improvement in a smaller area.

In other news, Microsoft has conceded defeat on the OOXML vs ODF wars and apparently has included full ODF support in the just-released Service Pack 2 for Office 2007. All I can say is it's about time that Redmond got some sense in this area. Unfortunately, it won't be rolled out via Microsoft Update until August. At least now my coworkers can finally use my OpenOffice.org files without much hassle.

There isn't much else to tell, but when I have something to show, you'll know. TTFN. :-)

Sunday, April 12, 2009

Paladin: BeBits App of the Month

I just saw this a little bit ago -- apparently Paladin is the BeBits App of the Month for the Haiku Podcast. Pretty kewl! Not something I saw coming, but certainly nice. :-)

Minesweeper for Haiku

Well, this morning I uploaded my Minesweeper clone to BeBits, BeMines. Already a bug report, too. All of the code-related development was done with Paladin, and I was able to discover and fix several bugs in doing so. It was a lot of fun doing both, too. :-)

You might be wondering, "why Minesweeper, though?" -- well, actually, you're probably not, but let's pretend anyway. ;-) Like Tetravex, Minesweeper is another one of those little addictive time-waster games that I've had an attachment to at times. Unfortunately, there are only two available for BeOS: the demo shipped with R5 (which is not redistributable) and a browser-based one available on BeBits. Neither seem to really hit the mark. Frankly, the R5 version and its Windows counterparts are kinda hard on the eyes, especially at higher resolutions. The solution? Write my own. It's a relatively simple game conceptually, so why not expose some Paladin bugs writing another fun little game? Thus, BeMines.

The part that I like best is the different themes and how easy it is to make them. The one that probably took the longest was the GNOME one, and even it didn't take long. The middle-click sonar ping is a nice help if you hate to guess and don't want to bomb out on a game you've put some time into (like at the Expert level). I'm pleased with it, so here's to another fun little project born.

Monday, April 6, 2009

Mmm... Dog Food

Dogfooding is good for your software. Nothing seems to sniff out bugs more than just regular usage. Most open source developers don't have a testing team, and BeOS and Haiku developers don't have a huge community they can depend on for testing. Don't get me wrong, gentle reader, I'm not ripping on the BeOS community. By no means. The community is just not as big as the Linux hordes or the marketplace for Windows and MacOS. This means that while a particular program might be quite good and appealing, there just aren't that many people downloading BeOS software. This would be why I've been flinging code with the IDE of my own making.

Writing code with Paladin has been quite nice, actually. Once in a while I'll run into something that makes me say, "Wait, it shouldn't do that," or "What in the world?! Why doesn't that work?!" Some of the features that I've put into place are nice to have, like the Run Logged or the ability to set run arguments. These features -- or ones like them -- might be commonplace in Windows land, they certainly aren't here.

What have I been working on, you ask? Minesweeper, of all things. This is another little time waster that I've enjoyed on other platforms and, like BeIDE, there isn't a version that can be legally redistributed. It's playable and is skinnable, but it's missing some stuff -- high scores and a few other smaller features. It'll be nice to have around once I have it ready to release.

As a result of all this hacking, Paladin is, once again, a better IDE for wear. There is a major regression in RC5 which causes empty files to appear in the editor when you double click on a file in the project window. There are some other bugs that have gotten a good squishing, but there are a few more items on my to-do list before it's quite ready for release. Despite the seemingly endless number of candidates, there will probably be a point where I declare a 1.0 despite outstanding bugs, but in a case like that, none of them will be showstoppers like the one I just described above.

Friday, March 20, 2009

Presto: Instant-On Linux from Xandros

A while ago Xandros, the producer of a commercial Debian-based Linux distribution, announced Presto, a way to jump into Linux without the usual boot time to make Skype calls, browse the Web, and edit documents. Yesterday in my inbox was an e-mail announcing the availability of the public beta version of Presto. I was really wondering if it's possible to get the "instant-on" boot times advertised and if they really are that fast.

Downloading and installing Presto from the website is easy enough. The installer is 483MB, so it's smaller than most of the major Linux distributions, but larger than the little ones like DSL and Puppy Linux. It installs (and uninstalls) the same way that Ubuntu can be installed through Wubi and on my machine, everything installed without a hitch. There was one minor bug I had to deal with, but for my purposes here, I'm not going to bother with it here, being a beta version and all.

Boot times are impressive. From the time that I hit Enter at the boot menu to choose Presto, it was literally 10 seconds to the desktop. While I'm not so sure I would call that instant-on, the only OS I've ever seen to boot that fast is BeOS. By comparison, XP SP3 on the same machine takes over a minute. Ubuntu takes somewhere between 1 minute, 30 seconds to 2 minutes. Ouch. The test rig is neither a dinosaur nor a bleeding-edge gaming rig: an AMD64 3000+ with 2GB of RAM on a 320GB Western Digital EIDE hard drive. The major marketing point behind Presto seems to be pretty much valid in this case.

Once booted, you are greeted with a rather spartan desktop with a panel along the left side of the screen. The desktop environment is Xfce4 and immediately available are Firefox for web browsing, Pidgin for instant messaging, Skype for voice chat, the Thunar file manager, and a launcher for the Xandros Application Store and that's it -- sparse, but the Store makes installing other programs a cinch.

The Application Store is nothing new if you're familiar with Click and Run from the days of the Linspire distribution. For the uninitiated, Click and Run is a way to install a program with one click from the Firefox web browser. Many programs in the store are free, but there are also web services and commercial products, as well.

The only real downside to using Presto that I found was the lack of customizability. Having used Xfce and GNOME extensively and experimented with KDE 3 and 4, I'd say that Xfce is a good middle ground between GNOME and KDE for the amount of options offered to the user. Unfortunately, I found none of that available. In fact, the only way to open a terminal window is by right-clicking in a file manager window and choosing Open Terminal Here. It appears that the user is not permitted to add another launcher to the panel or to access the regular control panel that comes with Xfce.

This lack of customization makes me wonder what Presto's target market is. It seems too limited to bother with on a reasonably modern PC and worthwhile only in a semi-embedded role, such as the OS shipped on a netbook. Nontechnical users won't care what's on it as long as they can use Word (which they can't). Power users will probably find it fairly limiting like I did, and Free Software advocates will most likely look elsewhere, being this is a proprietary distro.

Personally, I find the boot and shutdown times amazing -- it boots as fast as BeOS and shuts down faster than Haiku, which is really saying something. Once booted, though, it feels like something's missing. There are some nice choices in the Application Store, but the ones which were unfamiliar to me were almost exclusively the non-free choices. Somehow, I just don't find Presto compelling. Here's to waiting for the Jaunty Jackalope release next month.

Thursday, March 19, 2009

March Madness... Basketball it Ain't

Tonight I just finished what will hopefully be the end of a 6-week schedule run where everything seems to happen all at once with starring (instead of directing, like in years past) in the Spring Program at school. This particular one involved an adult part in addition to the kids' parts, so I was asked to do it. The program went off without hardly any problems, so I'm happy.

In the fewer-than-usual spare moments that I've had, I've been dogfooding Paladin again. This time? Minesweeper. Once again, I've found yet *more* bugs in the unstable version, but I have a sinking feeling that they're also in the current release candidate (#4), so I'm betting there's going to be yet another one after it. You'd think there'd be fewer of them at some point. Sheesh. BeOS had a Minesweeper clone, but not Haiku -- or at least not an open source one. It's turning out to be a fun way to find bugs in Paladin, so I figured why not?

In unrelated news, courtesy of the illustrious C|Net, Spiralfrog, the ad-supported free(?) DRM-crippled music service has closed its doors. Good riddance. For those who don't know the history, back in October '07 I posted -- at my old site, no less -- about getting shafted by the Digital Restrictions Management included in each song downloaded from SpiralFrog following a reinstall of Windows. I have never forgotten it, either, and I don't intend to. Goodbye, Spiralfrog, no one will miss you.

Saturday, February 28, 2009

Paladin can Bootstrap Itself Now

Up until now, it's been possible to build Paladin using Paladin, which isn't that big of a deal -- the project manager part of the IDE is very much a simple build. PalEdit, however, is not. Only now is it possible to build it with Paladin.

The primary reason for the complexity with PalEdit are rez files. For those unfamiliar with it, rez is the name of a resource compiler for Macintosh. Maarten Hekkelman, the programmer behind Sum-It and Pe, wrote a version for BeOS which uses text-based resource files for menus, dialog windows, key bindings, and more. Sum-It and Pe -- and by inheritance, PalEdit -- use these files extensively, so until now, jam has been a requirement to build Paladin's text editor. While this is not a shot at jam, for someone who much prefers an IDE to a text editor and a terminal, this is a pain.

It's not all perfect, though. This is the development branch, after all. There are issues in building Sum-It, but this might be because of the speed with which I put the project for building it together. Then again, putting together a project with Paladin should be quick and relatively painless. Either way, the rez resource compiler isn't all that helpful in handling errors in its files. In the process, though, I patched some more bugs in the stable branch. Progress is good. :)

Sunday, February 22, 2009

The Road Ahead for Paladin

For some strange reason, February is one of two months of the year -- December being the other -- where Real Life gets a stranglehold on my free time. Music teachers in the U.S. typically put on at least one Christmas-related program each school year, so December isn't at all a surprise, but February... that one is still a mystery to me. Between the icky weather, my daughter's birthday, and replacing a vehicle, I haven't had much spare time. Most of the spare time I have had has been spent tinkering with Linux because I've been too tired to do much of anything else until yesterday and today.

Even now I'm pretty surprised by the number of bugs that have been squished since Paladin's first beta release. There will be at least one more release candidate before the final 1.0. There probably wouldn't have been quite so many were it not for so few people actually reporting bugs. The vast majority of bugs fixed have been ones I've noticed.

None of this is to say that Paladin is more or less standing still, feature-wise. The bugs from the release candidates were almost all ones which I discovered while working on the development branch. Some of the new features include support for shell scripts and rez files, lots of internal cleanups, shorter build times, and the ability to recursively add a folder's contents just by dragging and dropping.

Adding entire folders makes migrating from other build systems incredibly simple and fast, especially when groups are also created for the user. Projects which have lots of files and subfolders, like Open Sum-It, for example, all that is needed is to drop the main sources folder onto the project window, add a few include paths, and change the system libraries in the Project Settings window. It won't be much longer and Paladin will be used to build PalEdit instead of jam -- rez support is still under heavy development as of this writing.

I don't know how far I'll be taking Paladin development, really. The future is wide open in that respect, but I'll describe some of the features that I'd like to make happen most. If nothing else, it'll make for some good Sunday evening light reading. ;-)

One feature that will be added, barring unforseen issues, is a one-click backup of a project into an archive. Coupled with a command-line switch, it could make for some simple nightly snapshot files and also provide a good alternative to using revision control for those people who don't have access to CVS, SVN, or whatever.

A personal code library could also be really handy, and it's a feature that I really want to see happen. The idea is that sitting around my hard drive are some reusable classes that I've used in different applications. For me, this includes a C++ wrapper class around SQLite3, a TextFile class that allows reading of a file one line at a time, and a bunch of things that eventually made their way into LibWalter. There aren't really so many classes to warrant my own personal library -- libdw or whatever -- but there are enough of them to be difficult to manage manually, particularly if I find a bug in a frequently-used class. The solution? A personal code library without the overhead inherent with a full-blown revision control system. Not all of the details have been sorted out, but if I think it would help me personally, others probably would, too.

Code generation facilities could also speed things up in a useful way, too. BeOS C++ developers do a lot of subclassing, and it would be nice to have a way to quickly give a class a name, check a few boxes, and have the generator churn out skeleton code. Instead of using cut 'n' paste or manually typing out a MessageReceived function for a BWindow subclass, checking a box could make the genenerator spit out something like this:
 void
MyWindow::MessageReceived(BMessage *msg)
{
switch (msg->what) {
default: {
BWindow::MessageReceived(msg);
break;
}
}
}

One checkbox to get this? Sounds like a nice tool to do all the boilerplate code, if you asked me.

Basic makefile and/or jamfile generation is still on my to-do list and would make migrating to a more complex build system easier. Code completion would be a wonderful help -- I'm forever having to look up the parameters to a BListView constructor because I use them enough to want to have them memorized, but not often enough that I actually have memorized them. A preferences window and profiling support are coming, too.

All in all, there are lots of exciting things coming. I'm not crazy enough to think that it'll become the de facto IDE for Haiku developers, but if it helps a few people start developing for BeOS / Zeta / Haiku and helps grow the community a little, that'll be far more than I ever thought would happen.

Sunday, February 8, 2009

Another Paladin Release Hits Light of Day

This one sure took quite a while. Murphy seemed to be in full swing during its development -- there were quite a few instances where there just wasn't enough time. Writing the documentation took quite a while, and then my development box didn't want to work properly. Just as mysteriously, everything started working right again just this afternoon. In the process, my development machine has ended up multibooting XP Pro, Ubuntu, Zeta, R5, and Haiku. I'll certainly be able to test for compatibility, that's for sure!

This release for the stable branch really isn't anything overly exciting except for bugfixes and (finally) some documentation, but that's not entirely a bad thing. It seems like unlike most of my other projects, Paladin has had general stability issues -- almost like there are always these little niggling details which just keep cropping up. Each time something comes up, though, I'm not generally too long in squishing them.

As I am able, I'm also working on the development branch. Right now, I'd say that there are two features that I will be implementing unless there are major issues: support for adding files and groups just by dropping a folder onto the project window and build support for rez files so that I can get rid of the jam system for PalEdit.

Saturday, January 31, 2009

Dust Can Do More Than You Think

For a while, I had a problem where the LCD monitor on my main computer would suddenly start flashing from whatever it was displaying at the time to black and back about twice a second. The weird thing was that the machine itself appeared to be "asleep" (i.e. not doing anything) while the screen was black. The problem appeared to be limited to Windows.

Thinking it was a problem limited to Windows -- like a driver problem or something -- I decided to spend quite a bit of time in Linux for a while to confirm my suspicions. As it turns out, there was a different problem -- the screen went black as if it had been put to sleep to save power, only there was no waking it. In fact, I had to do the magical Alt+PrintScreen REISUB reboot. Upon reboot, the boot text was garbled.

I couldn't find anything anywhere on the WWW about it either problem. I figured the card was bad, so eBay to the rescue with a Geforce FX5700 256MB to replace my 5500 for $35. Not bad. I'm still waiting on the card, though, so I was going to grab an old temporary card (ATI All-In-Window Radeon 32MB) to stand in until it arrived. When I pulled the 5500 out of the case, lo and behold, an entire family of dust bunnies had taken up residence in the cooling fan of the card! I figured this might have been the problem, so it got a careful once-over with compressed air, a quick replacement back into the machine, and... everything seems to have gone back to abnormal.

Moral of this story: dust bunnies aren't just cute, they're electrically delicious.

Sunday, January 25, 2009

Viruses, Spyware, and Trojans, Oh My!

I wear a great many hats at school. Amongst them is the all-around computer geek fix-it guy. In the last three weeks, I've had to remove spyware from two machines, and I'm currently in the middle of a complete reinstall on a colleague's home machine as a personal favor. The cause? Conficker, a.k.a. Downadup. Sigh. I tire of this kind of stuff. It would also be the reason why I highly favor other operating systems. Then again, the source of the infection was a keygen for some software. People looking to get commercial software for nothing seem to forget that pirates and software crack teams don't distribute their stuff out of the kindness of their hearts. The son of my colleague asked me what antivirus program I'd recommend. My first response, as a somewhat-pointed joke, was "Linux," but I wish I'd been able to reply with "Haiku."

Thursday, January 15, 2009

Easy Remote Linux Logins with FreeNX

With my having to fuss with networks at school and having a couple of machines at home, there have been a few instances where being able to remotely log into another machine has been a significant convenience. There aren’t many options out there unless you want to pay money:

  • RDP (aka Windows Terminal Services) – Free only for the client. As far as my limited experience has been, this is quite nice, fast, and it even supports audio. The only problem is that the licensing is quite draconian and it only is available on the server editions of Windows or a pay-for version for *NIX.
  • X11 – X was designed for network-transparent sessions. The only problem is that it’s not secure and setting it up over SSH is a pain.
  • VNC – Lots of good things here – free servers and clients for just about any platform you can think of and setup is pretty easy in most cases. The problem? It’s a bandwidth hog.

Enter the Italian company NoMachine, which offers its commercial NX Server for remote access under for Linux and its ilk with open source libraries. These libraries implement the NX protocol, which is more or less a way to both secure and speed up remote login connections.

As far as my experience has taken me, it hasn’t seen anywhere near the popularity that VNC has. I find this strange – VNC tends to be slow – even with compression – and is not secure on its own. It can also be a little weird to set up sometimes, as was the case for me setting up UltraVNC on a Windows box at school yesterday.

Perhaps it’s just me, but FreeNX deserves more limelight than it has received, if my setup experience from earlier today is any measure. Part of the ease of installation was thanks to http://www.drtek.ca. The main part of the site seems to be in French, but one page was both in French and English. Compliments of its author, I received listings for the repositories that I needed and was able to install the server with one command. Because NoMachine offers NX clients for both Windows, Linux, OS X, and Solaris, I went to NoMachine’s download page and grabbed the Windows and Linux versions. Just to test to see if things worked, I installed the Linux client on the server machine and tried to log into a regular terminal login and it worked – a little too easily for Linux, in my opinion. I tried a GNOME login from my windows box with the same results. I’ve come to accept the amount of tweaking that Linux requires in most cases, so when it just seemed to work, I was a little suspicious, but everything works as expected.

For a short summary, here’s the entire install process:

  1. Open up /etc/apt/sources.list and add the following lines to the end:

    # Ubuntu FreeNX Repository for Hardy
    deb http://ppa.launchpad.net/marceloshima/ubuntu hardy main
    deb-src http://ppa.launchpad.net/marceloshima/ubuntu hardy main
    deb http://ppa.launchpad.net/freenx-team/ubuntu hardy main
    deb-src http://ppa.launchpad.net/freenx-team/ubuntu hardy main

    # Ubuntu FreeNX Repository for Intrepid
    deb http://ppa.launchpad.net/marceloshima/ubuntu intrepid main
    deb-src http://ppa.launchpad.net/marceloshima/ubuntu intrepid main
    deb http://ppa.launchpad.net/freenx-team/ubuntu intrepid main
    deb-src http://ppa.launchpad.net/freenx-team/ubuntu intrepid main

  2. Update the list of packages kept on your machine by hitting Reload in Synaptic or sudo apt-get update from the Terminal
  3. Install the freenx-server package, either from Synaptic or from the Terminal using sudo apt-get install freenx-server .
  4. Grab the necessary clients from NoMachine’s download page and install on the machine of your choice.
  5. Marvel at the lack of work required.

There is still the ability to tweak the configuration until the Second Coming of Christ, as is typical of Linux, but this is only needed if you want remote printing (which I haven’t tried… yet), sound, or certain other things like setting up a remote login cluster or something. If you just want to be able to log in, you’re done. Ain’t that nice.

Saturday, January 10, 2009

Will Windows 7 be a Hit for Microsoft?

Right now, I’m sitting in my living room, writing this from Windows Live Writer from within the newly-released Windows 7 that I put on a spare laptop from school. So far, my impressions are largely positive ones. The installer is much less involved than any previous version, though it does have a couple of annoyances. It creates a 200MB System Partition – not sure what that’s for – and it, once again, overwrites the MBR, so if I had another OS on this machine, I’d have to install the bootloader. Again.

Performance was my biggest gripe for Vista. Getting around feels a little more like a battleship than the cruise liner that Vista is. Driver and device handling is much easier. Once again, more stuff has changed, rendering an experienced user like myself a stranger in a strange land. Numerous places, as usual, are two usability steps forward and one step back.

Some of the changes over Vista are truly nice to have. Dragging a window to the top of the screen maximizes it. Dragging it to the right or left edge tiles it to occupy half of the screen. The new taskbar is a nice improvement. Windows Live Writer is a very nice blogging tool that I just might be using quite a bit on my main computer if it’s even possible.

Other changes are… less than ideal. I’m not impressed by the fact that I have to download a separate e-mail client. Even Windows 95 came with Outlook Express. Yeesh. If I want to download an e-mail client, let it be out of choice and not from lack of one. If Microsoft is going for their own answer to iLife, this ain’t it. The whole Windows Live cloud computing thing doesn’t exactly impress me. If you live in Silicon Valley, fine, but there are many people in the US that are stuck with the choice of dial-up or satellite, with neither being a pleasant option.

I’ve only had Windows 7 for about 6 hours now, so I know I haven’t hardly scratched the surface of the entire experience, good or bad. Some general looking around has given me some ideas for Haiku that would make it more pleasant, but for now, the jury’s still out on the next generation out of Redmond.

Monday, January 5, 2009

Back in the Saddle... Sort of

Now that I'm back from my vacation over Christmas break, things can get back to abnormal. I was traveling around with a laptop that dual boots Ubuntu Linux and Haiku and I discovered that, much to my chagrin, there are some bugs in Haiku that prevent me from doing significant Paladin-based development from within Haiku. Rats. On the upside, though, I did some heavy reading, learning more about both Python and Java. I don't plan on doing much, if anything, with them at the moment, but the reading was good for giving me a different perspective on programming.

I have put together a new development box which is well-suited to BeOS development: a 2.8 Ghz Pentium 4 with Hyperthreading, 1GB of RAM, an nVidia Quadro-based video card (with BeOS support for 3D-acceleration), and lots of hard drive space. It runs XP, Xubuntu, R5, and Haiku. Paladin's multithreaded compiles seem to have a bit of a speed bump over R5 -- which doesn't recognize the hyperthreading -- but not as much as I'd like. The disk is probably the bottleneck, so I guess it can't be helped. Oh well.

School starts back up today, so it's back to the grind, but because I should be settling back into the usual school routine, I should be back on track for more Paladin development shortly, especially being I found out that it crashes whenever you try to reorder file groups. Oh well. A programmer's work is never done. :-)