Saturday, December 20, 2008

Ye Olde News Soupe

I haven't mentioned much about Paladin here in a little while, or at least when compared to happenings in its development. Then again, aside from releases, there really hasn't been much to write about that wasn't already mentioned in the release notes for each one. My IDE has done significant maturing and Release Candidate 2 should be released tomorrow, barring any unforeseen issues in Real Life.

There have been so many releases is mostly because of all the bugs that came out of the woodwork, but also because of some incidents that went sort of like "Now to... hey, this doesn't have feature X and it's one I use fairly often. One more for the to-do list. *sigh*" Then there was also the "I can't believe I forgot to make this able to open its own files!" moment, too. I still shake my head in amused disbelief at that one. RC2 will have fewer bugfixes because it didn't have any feature improvements. I have a development version that I'm working on that has a few new features, but I don't think it's ready for primetime just yet.

Paladin is also now hosted at SourceForge [project page here]. While I would have liked to use Subversion for source control, the BeOS port is old and doesn't support checkins using the https: protocol, which, coincidentally, is what SF uses, so I'm stuck with CVS. Having the revisioning (is that a word?) and the online backup of the sources is a relief, considering the antics my development box has had lately.

Some of the maturing that Paladin has seen has been due to my actually using it for development and discovering bugs as I was using it. I've had a need for a way to show flashcards to my computer classes to quiz them on PC components, but literally nothing I've seen did what I needed, so I'm writing my own and writing it with my own software. I've been quite pleased with how things have been progressing, and I have a machine dual-booting Xubuntu and Haiku to show it off. Just earlier tonight, I actually used RC1 to build from the RC1 sources with a quick patch to a significant bug in the code which adds files dropped into the project window. It seemed really weird to use Paladin to build itself, but when I walked away with a successfully-patched executable in Haiku, I must be doing something right. I guess the next step would be to support the goofball rez resource files so I can do the same thing with PalEdit. One more thing for the to-do list, I guess. ;-)

Sunday, December 14, 2008

Windows Workstation 2003 Reviewed

Besides all my BeOS development misadventures of late, I've also been working with Windows Server Standard 2003 as a desktop OS. In a lot of ways, you could call it similar to running Linux on the desktop, and it's not all it's cracked up to be. Just for the sake of others who might be thinking about doing the same (or something similar with 2008), I'll offer my thoughts and experiences.


The actual installation wasn't any more difficult than a regular Windows XP installation. In fact, there wasn't much difference. Considering that XP and Server 2003 are based on the same codebase, this isn't at all surprising. Once installed I did have some issues with drivers.

There isn't nearly as good official hardware support as XP. My Via Vinyl AC'97 sound card wasn't recognized, nor was my D-Link DWL-g510 WiFi card. I didn't have Service Pack 1 slipstreamed on my disc and my machine uses a wireless connection, so even if I had had drivers for the devices, I still had a few hoops to jump through to get things working at all. Luckily for me, even though neither officially supports Server 2003, I was able to get them both working using the XP drivers.

Post-Install Configuration

Once Server 2003 is installed, if you're looking to run it as a regular desktop OS, you still have quite a bit of work to do. Fortunately, at least a few other people had gone before me in this area and wrote an excellent guide which can be found at the Microsoft Software Forum Network. There are quite a few things that need changed, mostly for convenience's sake. Here's a quick summary of all the tweaks needed:

  • New User: you need to create a regular user account to use instead of the Adminstrator account
  • Disabling Internet Explorer's Enhanced Security settings: By default, IE will only go to a whitelisted set of sites. Good for a server, bad for a desktop, so this has to get disabled.
  • Disabling Shutdown Event Tracker: Server 2003 logs all shutdowns and reboots. How annoying for a desktop.
  • DirectX, Sound / Graphics Acceleration: DirectX isn't installed and acceleration is turned off. Few people do any gaming on a server, so this makes sense. Installing and enabling these wasn't a big deal.
  • Theming support: Server 2003 uses the ugly Classic look by default, so turning on XP's shininess was a requirement.
  • CD Burning and Image Acquisition: Most desktop users have a need for a digital camera, scanner, or CD burner, so these services also had to be turned on.
  • Error Reporting, CPU Scheduling, System Restore: Once again, just some more configuration because of the different outlooks for a desktop and a server. Error Reporting is turned off except for critical errors, the processor scheduling is set to give programs priority, and system restore is turned on.
  • Games: The usual games which ship with XP are not included at all with Server 2003. It was surprising just how much work was required just to install them, too!
  • Three-Finger Logon: Logging in on a Windows Server involves using Ctrl+Alt+Delete to supposedly get around keyloggers. I don't know how successful it is, but knowing M$'s track record, I'm not real confident. I much prefer as simple a login as possible, preferably an automatic one.

Software Installation

After every Windows install, there is the inevitable install of what seems like 50,000 programs to get things from spartan to usable. With all the tweaks listed above, Server 2003 really looks and acts like Windows XP, so it's easy to forget that you're not running XP until you change hardware or install certain programs.

Antivirus software is one of them. I'm a fan of AVG's free-for-non-commercial-use antivirus package, but it won't install on Server 2003. By running a server operating system, it thinks you're running a server and, thus, refuses to install. I can't say I completely blame AVG for this move, and there's probably a way to beat it into submission (probably illegally, though), but I wasn't about to mess around with it. Instead, I installed DriveSentry, which while also free for non-commerical use, didn't slam the door in my face like AVG did.

After fighting with A-V software I ran into the same thing for several other programs. Office was one of them, for example. I actually had to install my copy of Office 2007 Professional on my machine (I avoid Office when/where/if I can), but Micro$ft did the same thing as AVG. When I installed a copy of my legitimately-licensed corporate version on it, it ran without a problem, but then Google Calendar Sync pulled the same stunt. It seems that quite a few people expect you to actually run a server with a server OS.

Other Configuration Adventures

One of the reasons I tried the whole Workstation 2003 thing was because of Remote Desktop. I'm well-versed in using VNC for my network, but it really is a bandwidth hog and I see noticeable lag even within my home network, so I wanted to give it a shot. I found out that licensing and setup for Terminal Services is just as draconian as the copy protection found in Vista. It wouldn't surprise me if the same guys are responsible for both. Once I did get it set up -- which did take some doing, though not as much as remote login via VNC on a Linux box -- I was quite pleased to see how responsive and easy-to-use it was. No wonder it's closely guarded.

File sharing using Server 2003 still stumps me, and I never got it working correctly. Perhaps I'm just a Weenix Unie on this one, but user management and file permissions under Windows operating systems just seems weird. I had what I thought was the proper boxes checked and the right users added and so forth, but I couldn't access files on my other Windows box that was running XP. Oh well.


It's kind of a nice idea in theory, but running Windows Server 2003 Standard Edition as a desktop operating system is not all that it seems on the surface. In the end for me, it was far too much work to stay with it. Even more than Linux, believe it or not. You're on your own for hardware support, certain regular desktop programs won't support it, and from a cost effectiveness standpoint, it makes no sense whatsoever. The only compelling reasons to run a Windows server might be for Active Directory (not sure about that one) or Terminal Services. Then again, that may not even be true -- I need to investigate xrdp a little further before I can definitively say so. For now, the jury's still out.

Friday, December 12, 2008

Further Refinement

Well, after a couple of weeks my most recent project has seen two beta releases, numerous bugfixes, and some of the feedback I've received has gone right back into the IDE. In fact, sometimes I'm amazed by the things I miss: the first beta had no way to open a project from within the program! I still shake my head in disbelief at that one. Beta 3 should see the light of day this week. I spent this week bugfixing and making minor tweaks. I also split the code on my hard drive into a stable branch and a development branch. The stable one isn't getting any new features -- only bugfixes -- so that there is a solid foundation for people to work with. The development branch has seen some smaller features this week, such as support for executing shell scripts bundled into projects, some tweaks to PalEdit's default keybindings, some more tweaks to better integrate the editor and the project manager, and so forth.

The big thing that I really got excited about this week was actually doing some development with Paladin. I found a couple of bugs and found plenty of ways to do some refining. Right now, one of my personal favorite features over BeIDE is the New File window. If I want to add a new class to the project, I can hit Alt+N, type in the name of the file, hit Tab and then Space to check the box to create both the header and the source file, and then Enter. In a matter of a few seconds, I have both a header and a source file and the header already has the header guard filled in for me. Sure, it's just a little thing, but with as often as I add new files to my projects, it's a nice convenience. The same goes for just being able to add a particular system library to a project just by checking a box in a window. Small, thoughtful touches to an interface don't amount to much on their own, but their combined helpfulness paves the way for a more pleasant experience overall.

Thursday, November 27, 2008

The Quest for Paladin Continues

...and I'm having a blast each step of the way. I wish code hackery were always this fun. In fact, I have to remind myself of the consequences of not taking breaks even though I'm in the zone and don't really want to. Haven't hurt myself yet. :-) I'm also thankful this season for the rest of my family having caught colds nasty enough to keep us home that aren't so bad as to make life at home miserable. Why? Some much-needed rest and relaxation. I've even had some time to catch up on some projects around the house in addition to spending time with my family, whipping up Thanksgiving dinner, and working hard on my future first choice of development tools, the real reason for this post.

I'm happy to say that Paladin has reached alpha -- it's now feature-complete. While I know of a few bugs that I found shortly before I stopped for the day, I bet there are more yet to be discovered and fixed before I'm comfy with releasing the official Beta 1. I'll be eating my own cat food (dog food? No thanks...) on this one, so it may be a bit, knowing my perfectionist tendencies. It should be well worth all the trouble, and the closer it gets to actual usefulness as a tool, the more excited I get. I'll be able to get rid of BeIDE's annoyances, and the community at large will have a free-as-in-freedom development environment. Who knows? Maybe the guys back at Haiku might even find it worthwhile to have as one of those tools included in the pre-alpha builds. I won't push for it or anything, but that'd be the icing on the cake.

Saturday, November 15, 2008

Paladin: Code by Day and by Knight

Wow. I can hardly believe that it's been more than a month since I posted about working with Oliver and Tako on Niue. A *lot* has happened since then besides my R2 proposal. My small diversion turned into a not-so-small one. It's funny how that seems to happen, but it grew in a good way. I'll get back to the DeskPanel sooner or later -- I'm having *way* too much fun right now.

The more I worked on the Niue sources in an attempt to clean them up, the more I felt like it was spaghetti code which would be easier to rewrite from scratch than to clean up. One night I just decided to see what it would take to put together a rudimentary project manager and it all snowballed from there. The result? An MIT-licensed IDE called Paladin which is modelled after the illustrious BeIDE which is based on Metrowerks' CodeWarrior. Xcode it ain't, but should be a pretty good improvement upon BeIDE.

BeIDE is an excellent, if dated, IDE which lends itself pretty well to beginners picking it up. Just so you know, BeIDE has been my right-hand coding tool since Day 1 when I started tinkering with the sources for an open-source paint program called Photon that I sort-of developed into BePhotoMagic. With the hundreds of hours I've logged using it, I've learned a few of its quirks. I've also found myself wanting certain features that, obviously, weren't going to materialize. I now have that chance to fix that.

The only IDE that we have for C/C++ development which even comes close to BeIDE is Niue. Niue's got some great features, like code completion and the ability to see the actual compilation output as if you were watching it in a Terminal window. So far, the only major problems I've seen outside of the maintainability department are that it depends on make to do all the heavy lifting, it eats up screen space like candy, there are bugs in the editor, and the code is a mess. Keep in mind, though, that the last two are probably the result of having lived and breathed BeIDE for years.

The project manager has gone together quickly, but I wanted to be able to hit Alt+M to build the thing while I still had focus on the editor. I also had some other integration-related desires that I'd need to have a text editor for. As a result, I started looking for information about writing one or building upon existing code. In my search, I learned about (and am reading) the book Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson, and Vlissides. I also discovered that Niue's editor is, in fact, a quite-modified version of Yate and why: writing a text editor is hard and time-consuming. Yate's sources, by the way, are part of the reason for the mess of Niue's sources, because Yate's code is bad. Really bad. There aren't very many other open-source text editors for BeOS. I narrowed things down to a port of Scintilla or hacking Pe. After spending a weekend off and on playing with Scintilla, I decided to go with Pe. The only thing about Pe is that it uses a different resource compiler, rez, which supports other text-based resources, such as dialog boxes and menus.

The only bad news that I have is that the result of these antics isn't even in an alpha state yet, but it is quite a promising IDE nonetheless. Currently I can build quite a few different kinds of projects, including Paladin itself. Pe is being pared down into a leaner text editor primarily focused on C++ development, so, for example, the HTML palette has been given the heave-ho. This doesn't mean you can't use it for other things -- the syntax highlighting for other languages is staying -- it just means it would be a little like using BeIDE for writing Python or Perl.

Paladin has a lot of potential because of both the features it has and the ones that are coming. Project files are just special text files, so they are both user-readable and friendly with CVS, git, SVN, and so on. Paladin can also be executed from the command line to build a project without a GUI, so it can be scripted. While no visual editor is planned, a boilerplate code generator feature is in the works -- choose what class to add to the project, give it a name, check off options and virtual methods you want implemented, and voila! Instant skeleton code, both header and source file. I'll probably be adding a feature to generate makefiles and jamfiles from projects. Projects can be run in the debugger, run from the Terminal, or (eventually) run with predetermined command-line arguments. Adding libraries from the standard locations to a project is literally a matter of clicking on a menu item and checking (or unchecking) items in a list. There is also some basic project template code which will probably be expanded, as well. Best of all, the thing is MIT-licensed, so once it's released, anyone can contribute to its development or utilize its code in other projects. I'm also contemplating a code library feature for those bits of code that we codemonkeys seem to be reusing time and again.

I'm excited about the whole thing and I hope this gives you a little more to look forward to for Haiku's future. Obligatory screenshot:

There's a new code warrior on the block. Have a good weekend everyone. :)

Thursday, November 6, 2008

R2 Desktop Revisions: It's *Finally* Published

After lots of research, tweaking, and refining, I've finally finished my proposal for the Haiku R2 desktop in its consolidated, revised form. It's about time, if you asked me. I originally planned to release it after the DeskPanel was finished, but with me working on something else that will see the light of day sometime soon as a nice diversion, it was better to get this out the door. There isn't a link on my old site, but it's kept there. You can get the PDF of the proposal here. If you care at all about the direction Haiku is going, please do me a favor and comment here or my blog thread on the subject over on the Haiku website.

Friday, October 17, 2008

The Bumptop Desktop Shouldn't be a Desktop

Apparently a desktop environment I heard of years ago, the BumpTop Desktop environment, has reached a point where the development team has released a private beta version. I remember seeing this demo video on YouTube quite some time ago. These guys are talented, no doubt -- the developers and the designers involved have definitely put some time into this. If you don't feel like watching the video, the synopsis is this: a desktop environment that mimics real-world physics with files in much the same way that you'd deal with playing cards. You can stack files, turn one in the stack so it sticks out a bit, corral them, fan out a pile for preview, and innumerable other tricks. It makes playing with files pretty fun, or at least that's my impression. I signed up for the private beta, but haven't received an invite yet.

The premise behind BumpTop is that managing your files is easier if it is done in a way that is just like the Real World. In this case, it caters particularly to people who organize by piles, and this organizational method is explicitly mentioned in the prototype video. There's one question that I have to ask about this, though: as cool as it is, does it really make someone more productive? I highly doubt it. Let's take a look at why this is probably a better demo than a productivity app.

This 3D desktop has some inspiring ways of working with file icons, but, in doing so, introduces a new interaction vocabulary, i.e. a new set of actions to get things done. Instead of just point, click, double click, and drag, there is drag and throw, lasso, push with maximum pen pressure (impossible with a mouse), pigtail (a variation on lasso), lasso and cross (another variation on lasso), and probably a few others. This introduces more complexity into the interface. This is actually good for touch and pen interfaces because there is only one "button" to use and adds to the otherwise-limited vocabulary, but for desktop and laptop PCs, this actually makes things harder because it breaks with the de facto point-and-click standard interface that is the status quo. Call it a blessing or an obstacle, depending on your needs.

The prototype utilizes icons to represent files, but I don't know if this is intended to be final. In fact, previews of photos and web pages are used. This could be quite good for photos and even perhaps movies, but mp3s, which have no useful visual component (album art doesn't count), and office documents and web pages, which require much greater visual detail, are hard to identify using this interaction model. It is also hard to see how files could be differentiated without having additional information displayed, such as file names. Previews are not always enough in this respect. It could be a highly effective method, however, in conjunction with, say Microsoft's Surface multitouch tables.

One focus for BT is how it empowers the user to organize their files, but I'm not so sure that it is as empowering as some think. As with hierarchical filesystems, there isn't any inherent organization to the system and, thus, the burden of organizing files is placed on the user. Piles of files -- that has a nice ring to it, now that I think about it -- certainly are one way of organizing them. There is one catch, though: they occupy space, limiting how far this method of organization can scale before it has a negative impact on productivity. Let's say that a secretary or some other office worker has literally hundreds or thousands of documents and has them organized into a hierarchy of folders and subfolders by category. Now imagine converting each folder in the hierarchy into a pile. It would easily be possible to have fifty or sixty piles on the desktop; some of them possibly more than a hundred items tall. Perhaps I'm too much of a neatnik, but the thought makes me shudder. I wouldn't even want to think about searching for one particular document in those piles and not remembering which one it was in? Ouch.

One neat thing about the BumpTop desktop is how far the designers went to emulate real life. On more than one occasion I've seen cross-stacked papers in an office to be able to make a large pile of papers while being able to group papers that belong together. You can do the same thing on the BT desktop. Some people dogear (fold over a corner) of a paper to remember something special about it. The virtual icons can be folded just like in real life. A paper can be crumpled and thrown in a corner to be deleted later. There is one thing I question: in real life, tricks like this are generally done to make the best of a situation, such as the lack of a sticky note at the time or not having a better way to organize papers. Why dogear a paper when you could tag it with metadata? It would be the virtual equivalent of using a sticky note instead of folding the corner and trying to remember why you did it. Maybe it's just me, but it seems like this emulates a what amounts to a hack in real life.

I'll probably need an asbestos suit after saying this, but I think that the BumpTop 3D desktop environment is very similar to the Dock in OS X -- it demos very well, but it lacks in the productivity department. Direct manipulation does not scale well. The interface isn't very discoverable, either, and to use a concept from Donald Norman's The Design of Everyday Things, more information is kept in the user's head instead of the world, increasing the workload of a user instead of decreasing it. Outside of the desktop environment, however, I can think of a marvelous use for it: card games. An Internet game of Euchre this way would rock.

Wednesday, October 8, 2008

Everything Happens on October 8th

...At least if you read Dave Barry Slept Here, a Sort-of History of the United States. My high school American History teacher would read the class excerpts from time to time. From the way work is currently going, every day feels like October 8th, because everything seems to be happening all at once. I am, however, taking time to write some code, but I'm also (almost continually) reminding myself that I started back up in the code trenches because I wanted to, not because of some sense of obligation.

For as long as I can remember, I have had a strong sense of duty, i.e. if I feel responsible for something, I make sure that it gets taken care of properly. That's probably why things were so hard for me with Haiku: a lack of time combined with a sense of responsibility leading to frustration and, ultimately, a lack of enjoyment of what I do. Thanks to the change in my job description from last year to this (music teacher -> janitor), I have learned how much I need to enjoy what I do. Things have gone from "I love what I do" to "Gee, do I really have to go in today?" :(

As a nice diversion (I need variety) from my work on the DeskPanel, I've been working with Oliver Ruiz Dorantes (urnenfeld) and Tako Lansbergen on Niue. The current code is a mess, so there are efforts to clean up the code. Code cleanup isn't exactly the most exciting thing in the world, but for a neatnik like me, it fits. Maybe more to write about next time. Until then, readers, God bless.

Sunday, September 21, 2008

All About the DeskPanel

I try my best to make the commandment about keeping the Sabbath day and make it a day of rest, doing stuff that I think is fun and/or relaxing. Even though it takes significant effort and energy, writing code is one activity that fits -- it's fun and I enjoy it. My wife and my son were sick today, so I stayed home from church and kept things going. I did have some spare time that I threw at the DeskPanel, too. What did I accomplish? The running app list works properly except for doing drag and drop on program entries to open them and some more problems with layout have been fixed. I also whipped up a quick shutdown / restart window to go with the Quit item in the Computer menu (see screenshots from last post). I don't have a shot handy of the shutdown window, but it looks pretty decent and is reminicent of the logout window that Xfce4 uses. I removed some quick-and-dirty hacks in favor of some proper code. The last thing I did at the end of my coding run this afternoon was shut down my machine using the DeskPanel. It felt good.

The DeskPanel has been probably the most complicated piece of code I've worked on since my app_server days. There are some sections of the Deskbar's code that work some BeOS black magic and other parts that are not so pretty. BNavMenu is one massive class. It's what gives us those wildly-convenient navigational menus accessed by right-clicking on a folder in Tracker. It's also the code that powers the Deskbar's Applications and Preferences menus. The nice part is that it wasn't too difficult to unbolt certain important sections of code and place them elsewhere for the reorganizational part of the DeskPanel.

Some of you may be wondering what the big deal about all the effort I'm putting into this extended-from-summer project. It's all about organization and simplification. At the risk of being boring, allow me to go into some details about some of the new tricks it does.

First of all, there is the Programs menu, the first of the three screenshots from the last post. Gone are the days of "one menu to rule them all." The only thing you'll find in this menu are programs. I added a permanent Run Program item which could easily one day turn into a swiss-army knife command prompt that you could type in stuff like map "1313 mockingbird lane, schenectady, ny, 12345" and do a Google Maps lookup on the address or define grace and get a lookup from an online (or offline) dictionary. As for the actual program shortcuts and the categories in the Programs menu, it's a case of smoke and mirrors. The main menu is a listing of /boot/home/config/be/Programs, but the items in it are queries for the category attribute. This attribute is a new indexed attribute which is used for Programs menu entries. Tagging an application with a particular category suddenly adds it to the menu under the appropriate category. The actual category entries are just saved queries with custom icons to make them look nice. I think it works quite well, and unlike the current situation with the Deskbar, there are no symlinks to break. You can even add a folder to the list simply by tagging a folder with the appropriate category.

The Computer menu is pretty straightforward -- items related to the system in general. I'll probably be renaming About this System to About Haiku (or BeOS or Zeta, as appropriate) and adding an item named About this Computer to fire up a small, relatively simple system info app (like a less-technical version of BePCInfo). I've mentioned the System Settings app started by the Computer menu item of the same name -- a launcher for the various preferences apps in the same vein as the OS X system settings app, but without the resizing and the Back button. The Quit item removes the "Are you sure?" messages that exist in Haiku right now without having accidental reboots and shutdowns that can happen in R5 at the moment.

I personally think the Bookmarks menu is really, really convenient. All your NetPositive bookmarks can be accessed with a couple of clicks, you can add bookmarks just by dropping items on the Bookmarks button, and organizing them is as simple as file management. The Recent Documents / Folders / Applications menus are still there and as useful as ever. This menu is one feature that makes me wish the DeskPanel were ready to replace the Deskbar right now.

The other stuff is in a state of change, but not in a bad way. The running programs list, now that it is debugged, works just as well as the Deskbar's except for two things: you can run so many programs that not all of them are visible in the list and, as I mentioned before, you can't open a file by dropping it on an entry in the list. I'm still working on a good solution to the first issue and the second is just incomplete code, so no big deal. There are other things that should be attended to before release, such as the preferences app for the DeskPanel other little things. I also need to formalize the way that add-ons are added to the Deskbar. Right now, they're all hard-coded, but the addons themselves are written in a way that they can be added and removed on the fly.

Overall, a lot has been acccomplished on the DeskPanel, but there is still quite a bit to do. Instead of just having an incomplete and/or buggy demo, I'm going to give it a good solid go and make a proper app. It'll take longer, but it'll be worth it. While it will be quite a while before a stable R1 is released, if I have anything to do with it, when it finally arrives it'll be possible to create a tricked-out R1 install that will be pretty sweet and a usable, productive, and free environment for people to work with.

Monday, September 15, 2008

Can't Leaf the Area Very Easily

For those following the events in U.S. weather, the midwest was hit with a major windstorm last night -- gale force gusts, to be precise. It's amazing how loss of power puts everything into perspective, even if it's only for a few hours. I needed a good reminder to keep me grounded in what really matters. In retrospect, I count myself very much blessed. The worst of it was about 24 hours without Internet access, which was quite annoying, about 4 hours without power, and a bunch of branches and leaves in my back yard.

Others were not nearly so lucky. The street I live on, for example, is currently a detour for a major state route that has a huge fallen tree across it. I'm also quite glad I don't subscribe to the digital phone package that Time Warner pushes alongside its RoadRunner service. Both my in-laws and some very good friends of the family were not only without power, but also without a source of communication by not having a cell phone or a landline. Over 450 school districts -- not schools, but districts -- were closed for today.

Over 230 schools were closed in my area , including my own, so I had an unexpected -- but nonetheless welcome -- day off. With my newly-found spare time, I spent the morning hacking on the DeskPanel, the proposed R2 retooling of the Deskbar. Progress? Igor, it's alive, I tell you. ALIVE!! HAHAHAHAHAHA!! Well, it's certainly comparable to Dr. Frankenstein's monster -- the sources aren't exactly pretty. Then again, the Deskbar's sources wouldn't have won any beauty contests to start with. *shrug* Anyway, the changes are more evolution than revolution -- more reorganization and some minor improvements here and there. While it's definitely a work in progress, I finally have some eye candy for all of you. I won't comment on them, but with the cat out of the bag on the last of my summer projects, I should be publishing the revisions I made to my desktop RFC in the next day or so.

Saturday, September 13, 2008

Filer 1.0 Beta 3 is *Finally* Out the Door

Yep. It's out at last. This is the version that's been sitting on my hard drive for the last three weeks while I've been trying to keep up with the usual massive changes to my life that occur when I go from summer break into the school year. It was quite a pain because I wanted to redo the icon for the app in addition to coming up with icons for the AutoFiler and its settings app.

Normally I try to have fun with icons for my apps. The fortune cookie I used for Fortuna and the Metroid-inspired icon for Seeker come to mind when I say this -- they were fun to create, especially Seeker's. The Filer and the DeskPanel projects are supposed to be system-level applications, so the icons really should follow the isometric perspective like the rest. Unfortunately, isometric icons are a pain in the neck to draw. Oh well.

The big feature to this release is the AutoFiler that I just mentioned. Karl vom Dorff (of Haikuware fame) suggested a daemon to automatically file items in certain folders. Hazel, the app which I used as inspiration for some of the features for the Filer, requires a folder for each rule. I didn't want to have this requirement, but having it as an option makes the Filer more useful than before. The main use I see for it is for a downloads folder. Point the AutoFiler at your browser's download folder and set up rules for your files. Here's an example rule:

Name ends with .zip
Terminal command... unzip %FULLPATH% -d /boot/home/Desktop
Move it to the Trash

The part that I also see could be really cool is if I managed to get the program bundle code working properly under R5, you could conceivably install programs with literally one click -- your browser downloads the bundle, the AutoFiler invokes the Filer on the download folder, and the Filer installs it. One click. Now that's ease of use.

Monday, September 8, 2008

Still Busy and Still Hacking

The school year is in full swing now... the third week of school already, and the last two went very fast. There hasn't been as much code as I would like, but it can't be helped. This year is quite different because of the move my school is making to a new, multimillion dollar facility, which, when it comes to schools, isn't really saying much. I was supposed to be teaching Band at the new building and Computers at our big campus in Columbus, but enrollment was down, so I'm doing custodial work. At first, I didn't really like it much, but it's growing on me. It used to be that I just fixed computers around the building, and now I fix other stuff, too. My wife and I work a cross between first and second shift, so it's been quite a lifestyle adjustment for the family. I've started to get the hang of it, so I've been able to make the non-work part of my life fit in again, like code.

I've got a new release for the Filer pretty much ready to go out the door. It's been held up for a while because I haven't had time to get it packaged up and handle the inevitable busyness -- in a good way -- that follows a release. I'm still hacking away at the new Deskbar, tentatively titled DeskPanel. It's been a real pain in the neck. I slapped together some icons that, while not my best work, look halfway decent. The layout code has been a real problem. I walked away after 3 hours of fighting with it. I also cleaned up some of the interface-related code that handles the Programs menu, but most of the time was spent on layout. A major pain. Hopefully, I'll have more good news to relate next time. TTFN.

Friday, August 22, 2008

Busy and Still (!) Hacking

It never ceases to surprise me how life has its little twists and turns, often in an unexpected direction. I'm still working on fixing up my house, which is funny, because I had originally planned on having it all done and my house being put on the market by the end of June. Boy, I have to laugh about how far off even our best-laid plans can be. God must have something else in mind, but being He knows best, I'm not really worrying about it. The school year started for the teachers this past Wednesday, so I've had significantly less time for fun stuff, but even then, I've made some time to unwind by sitting down and hacking some code for a bit.

Since last time, I've spent more than a little time attempting to finish up the other project that I've mentioned this summer -- an application bundling program. The concept? To the user, the program is just one file; delete it and you've uninstalled a program. Installation is as simple as downloading it from the Internet. The only downside to this method of packaging programs is the size of the file. The BFS filesystem forces packages to be at least about 1.5MB for even something small like Mr. Peeps or Run Program. With hard drive storage being so cheap and the unlikelihood that someone will have as many program bundles as MP3s, I figure it's not that big of a deal except when downloading. The solution? Compress them, which they do very nicely.

There is one problem, however. In testing a Filer rule for uncompressing and installing zipped bundles, I ran into some very strange instances where if I zipped a bundle and then turned around and unzipped a new, theoretically exact duplicate of the original, the original would run just fine but the new one wouldn't. I even compared CRC32 signatures with perfectly matching results. The conclusion? Something doesn't work so well under R5. I get some totally different error messages in Haiku, so a bug report is probably in order there. If any of you more technical readers would be willing to do a little testing under Zeta or Dano, I'd genuinely appreciate it. E-mail me or leave a comment. In any event, the program bundling is on the back burner for the moment, leaving me time to work on my final R2 project of the summer: the Deskbar.

In my R2 desktop proposal, I described changing the Deskbar to make it more functionally useful and better organized. All the details can be boiled down to breaking the Be menu into three and making the Deskbar behave a little more like a panel used in Linux, with addon widgets for things like inbox monitoring, weather, and other useful tools. I've started it and made much more headway than I thought I would. I was intimidated by the Deskbar code, which is mature, stable code which more complicated, architecturally speaking, than I'm used to dealing with. After some code study, though, it isn't nearly as difficult as it looks.

How far have I gotten? Well, I have all three menus implemented: Programs, Computer, and Bookmarks. Integration of NetPositive bookmarks is complete, and would be wildly convenient if I had a decent browser to use them with (might try NetSurf). No more broken Deskbar links, either -- applications are found by query and there is an almost-imperceptible delay when browsing the menu. The system settings program (screenshot in an earlier post) drastically reduces the clutter in the Computer menu. The Bookmarks menu doesn't create bookmarks when you drop files on it yet, but that's currently being investigated. Overall, I really like it, and I can't wait to get it to the point where I can replace the Deskbar on my machine with it. That day will come, and it will be a good one. No screenshots yet -- I'm also working on some nice icons to replace the cruddy placeholder ones I currently have in place. Stay tuned!

Tuesday, August 12, 2008

Another Little Project Launch: Run Program

The box I used this summer to do all my BeOS development died Sunday. Kaput. For little apparent reason, the motherboard went. I had a feeling that it would, considering that it would randomly reboot without cause. By the grace of God I backed up all my files right before it went, so I lost nothing. I installed Max Edition 4 on a spare machine that I has mistakenly thought was dead and was intrigued by a little app in the Deskbar titled Run..., written by Luke A. Kanies, which is the BeOS counterpart to the Windows Run window. It's OK, but it lacks path information, so it requires you to type in everything. That's a lot of work. For some reason I thought, "You know, it wouldn't take much to add autocompletion to that." Sure enough, the autocompletion code I wrote for Capital Be was easily reused and Run Program was born.

I like Windows' Run window because you can hit Win+R and run explorer, regedit, and other apps. It certainly saves hunting the Start Menu. One of the few features that Vista introduced that I liked was the ability to search the Start Menu. Type in a few letters and you have the program you want. Run Program combines the two -- start typing and you can start a program in the Deskbar or do a quick Terminal command. I bound it to a quick key combination using SpicyKeys and now I can run just about any program (StyledEdit comes to mind) without using the mouse. Considering how twitchy my mouse is, that's a good thing. You can find this on BeBits and Haikuware. Who knows? Maybe someday I may extend it to act more like Enso.

Thursday, August 7, 2008

Talk about Turnaround... Filer Beta 2 is Out

Today sure has been busy, but in a good way. I spent last night and this morning putting together a new bed frame for my daughter (some assembly required... yeah, sure), so I was a little surprised that some people found a serious crash bug and that I my efforts were mentioned on BeOSNews. Consider me flattered. :-) After attempting to come up with some other neat uses for the Filer, I thought of a couple more features to add, started hacking away, and even found and fixed a couple more bugs. Beta 2 is out on BeBits and Haikuware.

The second beta adds some niceties that I thought would be really useful. If you send the Filer a symlink, it treats the link as if the real file were sent to it from the link's location. In other words, if I have a link to a file on the Desktop and I send the link to the Filer, it treats the file as if it really were on the Desktop. The Open command fires up the file's default application, and you could set up a simplistic form of backups with the Add to Archive command. One thing that I thought would be really useful (alas, wput doesn't exist for R5 :( ) would be to have the Filer automagically turn one of my project development folders into a zipfile and upload it to my old website. It certainly would make releases a little faster. I also added the %FOLDER% substitution pattern. Sometimes you want the folder a file is in and not the file itself. :)

It's kind of all a blur at the moment, but if I remember correctly, someone asked me how exactly you could use it to organize your MP3s for you when used with id3attr. Here's a rule to do it all:

Name ends with .mp3
Terminal command: id3attr '%FULLPATH%'
Rename it to: %ATTR:Audio:Artist% - %ATTR:Audio:Title%.mp3
Move it to: /boot/home/music/%ATTR:Audio:Artist%

Note that the %FULLPATH% section in the Terminal command has single quotes around it. This makes sure that things like spaces don't mess things up. If you also wanted to play it after it was sorted away, add an 'Open it' action at the end.

All in all, not bad for a day's work. TTFN :)

Wednesday, August 6, 2008

Filer 1.0 Beta 1 Released!

I haven't released any new software in such a long time that I forgot how exciting a time it is. I just got done posting the release to BeBits and Haikuware. Last night I was hacking away at it, and when I finished, I thought, "oh, wow, this is cool!" I certainly haven't had a moment like that in a long, long time.

One of the really neat things about it is being able to grab Axel's id3attr from BeBits (that creates attributes from MP3 tags) and use the Filer to organize an MP3 library. You can do this because of pattern substitutions and the ability to use bash commands. Pattern substitutions are a feature in cd ripping software where you can set a format for a file name, such as writing in %A - %T.mp3 to have the software make files with names like Skillet - Savior.mp3 and Big Tent Revival - Two Sets of Joneses.mp3. Unzipping a Zip file to the Desktop is as simple as one command: unzip '%FULLPATH%' -d /boot/home/Desktop. %FULLPATH% substitutes the full path of the file being processed before the command is executed. I listed some other examples in the help file bundled in with the executable.

If you come up with a really neat rule, put it in the comments or e-mail me and I'll put it up to share with everyone. Enjoy!

Monday, August 4, 2008

Project Progress (3 of 4): The Filer

With all the updates in a short time and then nothing, you'd think that I just didn't have time to do anything. You'd be wrong, for once. I mentioned in my last post that I'd be getting back on the 31st, which I did. Once I returned home, I went into a flurry of code the likes of which I haven't seen in years. In fact, on more than one occasion I did some late night or very early morning code sessions, with some nice, concrete results this morning at about 5AM. The results? The third of my four summer R2 projects: the Filer.

Unlike many other ideas that were in my original Desktop RFC on the Haiku website, this one did not change much, so the info is pretty close to what is in the revised -- and still yet unpublished -- version. You can find more detail on the Filer by following the link, but to quickly summarize, it's a program to let you automatically organize your files according to a set of rules that you create. The idea has actually been around for quite a while, but I only heard of the only two implementations this summer: Belvedere, a freeware Windows app well-known to Lifehacker readers, and the original which inspired it, Hazel, an incredible shareware OS X app from Noodlesoft. The difference from these two is that -- hopefully -- mine will be integrated with the OS, offloading one more task for the user when he wishes.

Filer development, simply put, has been long and difficult, which is why it's taken so long before I mentioned anything about it. It's probably the biggest "little" app I've written, so I want to do more testing and fixing before releasing it. There are other features planned, but it has the essentials and with two weeks before school starts, I want to make sure the last project gets done or at least most of the way done. As is my habit, here is a screenshot to keep you going:

Saturday, July 26, 2008

More Juicy Tidbits

If you haven't been following my work for the last couple of weeks, I've been letting little things out about the work I'm doing to make working proof-of-concept apps to accompany my document on my vision for Haiku's R2. First was a screenshot of a settings app launcher to replace the current scheme. Instead of navigating up to a submenu that is shallow and wide, i.e. one level deep and what seems like 30 choices, the user clicks on one menu item which spawns an app that better organizes the preferences apps. The large buttons look pretty good and also make it easier to launch an app. It's very much like the preferences launcher in OS X, which adds some familiarity for people from that camp.

The second screenshot (posted on the 18th) was one which I left as a bit of a puzzle. Pieter, the only commenter, was correct. It is a package builder, and simple enough to pick up and use. All that is needed is to point it at an executable and, optionally, the topmost folder to use for the package. The developer provides some additional basic information about the app, click Start, and voila! A package is created in a process that is so easy it makes a man speak French against his will. ;-)

What was not in the screenshot is something equally important: an package runner. Doubleclicking on one of these packages runs the app. While I can't claim originality in the idea, no one has implemented it. One file for the entire program. Want to delete the program? Delete one file and you're done. It's also done in a way that you can use queries with them.

It's incredibly simple and works for most apps, but not all. Just as OS X has disk image files (.dmg) and package files (.pkg), Haiku will need them, too. Most of the code needed for regular packages is already there, and I released something like it some years ago. It still needs some tweaking and thought, but it won't take much work.

My current project is much more complicated than the settings launcher and the utilities for program bundles, but it will be worth it. I'll be forthcoming with the details once it's finished, which will probably be a couple of weeks -- I'm currently writing this from out-of-town and I won't be returning until 7/31/08. Until then, I guess we'll all have to wait.

Tuesday, July 22, 2008

Cleaning the Microsoft Natural Ergo Keyboard 4000

A couple of days ago, I decided that I needed to take apart and clean out the keyboard at my workhorse machine: a Microsoft Natural Ergo Keyboard 4000. The name seems kinda over-the-top, but despite my general disdain for the giant from Redmond, I like most of their hardware. I have a couple of minor gripes, but it's overall a good keyboard for RSI sufferers. Anyway, disassembling it wasn't exactly obvious and there may be others out there who wondered how to get the thing apart to clean the thing. Not only will I relate how to void your warranty this way, but I'll also give you some tips on cleaning the thing.

  • Lineman's pliers or, alternatively, needlenose pliers
  • Cotton swabs (Q-tips)
  • Philips-head screwdriver
  • small flathead screwdriver (or other small prying device)
  • old toothbrush
  • compressed air
  • rubbing alcohol
  1. Unplug it from the computer. While this might seem obvious, some people might go commando and use the thing while in the process of cleaning it. You've been warned. ;-)
  2. Remove (no exaggeration) 21 screws from the underside.
  3. Place right side up and wiggle off the faux-leather wrist rests.
  4. Remove a screw from under each of the newly-removed wrist rests.
  5. Find a small flathead screwdriver (or some other flat prying object), slide under the front edge of the space bar and gently give it a twist. The spacebar should pop right out. Set it aside.
  6. Remove two silver screws and then remove the top cover. Note that this will require some wiggling becase there are a few plastic catches sort-of holding it in place, such as in front below the F-Lock light.
  7. If your keyboard is anything like mine was, you'll need to be able to clean under what's left, so remove 4 more screws under where the Back and Forward buttons normally are along with the metal bar they hold down.
  8. Remove the silicone overlays.
Now you'll need the rest of the tools I listed above to clean the thing. You'll probably want to remove all the keycaps from the grid. If that's too much bother, at least get the ones with the metal sliders.

  • The best way I've found to get the keycaps out is to use one hand with the pliers to slightly pinch together catch for the keycap while gently pulling on it from the other side with your other hand. If you pinch too much, you'll bend the plastic on the catch and possibly break it, which would be a Bad Thing (TM).
  • If the warranty was good on your keyboard, it certainly isn't now.
  • It's amazing how many crumbs (and in my case, cat hair) fall in between the keys and collect in this thing

  1. The compressed air will come in really handy for cleaning under the components that are still in place.
  2. The bigger keys (spacebar, Backspace, Caps Lock, number pad +, etc.) have a little metal bar that slides under a couple of plastic "hooks" which are a great place for crud to collect and make the action for those keys pretty gummy. Cotton swabs and rubbing alcohol work well for cleaning it from the back side of the key grid.
  3. The silver buttons at the top shouldn't need cleaning unless something has been spilled on your keyboard.
  4. Cleaning an empty grid is pretty easy with the sprayer hose on the kitchen sink. You *might* be able to get away with running the grid through the dishwasher, but you might melt the plastic, so don't complain to me if it does.
Plan to spend a couple of hours doing this, but for a $50 keyboard, it's probably worth your time. It's also less mind-numbing if you're doing it in front of the TV. I hope this helps someone else out there. :)

Saturday, July 19, 2008

A Word of Clarification and Musings about Haiku R2

This morning I got to thinking about the last couple of posts and I realized that it might be easy to misunderstand the officialness (is that a word?) of my efforts. I'm not with Haiku anymore, as I announced last fall, and, as such, nothing that I do at this point can be considered official Haiku code or anything. This is something purely on my own, just like my LibWalter project over at OSDrawer.

For those of you who haven't heard of it -- most people, I'd imagine -- it's a repository of MIT-licensed code which is sorely missing from the BeOS API, like menu items and list items which can have an icon, a font chooser, and other stuff. It also provides a point of access for useful-but-homeless code floating around the Web, like some code that exists for a dropdown combo box that's been around for years. LibWalter It has been done in such a way that when R2 comes around that most, if not all, of the code can be incorporated into the Haiku source tree and give it a nice shot of progress.

These little code projects that I'm currently working on are in the same vein. Too many people have suggested bizarre, impractical, and/or undesirable ideas on the Glass Elevator list. I also fear a "designed by committee" user interface which doesn't really do a decent job of helping someone. No one really seems to have a vision for R2. I do, but I'm in no position to dictate anything, and even if I were, not all of my ideas are necessarily good ones. These screenshots (and the to-be-released-later programs) are an attempt to show that my vision for R2 is good, sensible, practical, and worth putting into place, and because of the way that I'm writing them, it will be possible to try them out on R5, Zeta, or Haiku long before R2 is even a practical target.

Friday, July 18, 2008


After a few days being quiet, I've got some more news for all of you. First, the bad news: My wrists are *so* sore because I've been stupid... coding while ignoring the habits that I've developed to avoid hurting myself, so it serves me right. Good thing that I'll be going on my annual summer vacation trip next week -- it'll force me to be good, but right now, I don't think that's going to be a problem.

Now, the good news: The last screenshot was a new way of accessing system preferences. I've got a new one for today. Once again, this is a screenshot that has only seen the crop tool to make it download faster. This one is a developer tool, but a very important one for the new desktop. I won't explain it just yet. What do you think it's for? Leave a guess in the comments. The only thing I will say is that it will be released later this summer when all the little projects are released all at once.

Saturday, July 12, 2008

The First Secret to Slip

Well, I did some further hacking on my R2 desktop document and now it really is pretty close to finished. Without any screenshots, it's about 9 US Letter-size pages in OpenOffice, so it's a bit of a read. I also have some apps which I'll probably be releasing some time in the near future. I'm still waiting on the stupid KVM I ordered from eBay -- the stupid US Post Office's Media Mail shipping method is crap. Then again, I haven't had too many good experiences with traditional snail mail in recent history, either. :( Anyway, here is a cropped-but-not-Photoshopped screenshot of one of my working R2-related mini code projects to get you wondering:

Thursday, July 10, 2008

360 Desktop: Cool but Not Very Usable

I visit Lifehacker frequently because of all the really useful information that is posted there. When I saw a post for 360 Desktop for Windows, I thought I'd take it for a spin. It certainly sounded like a neat piece of software.

The Concept

360 Desktop changes the "flat" mental model of desktop workspace into something of a cylindrical one and gives you the ability to add widgets to the desktop, as well. For people who are into this kind of thing (I'm not), this is nice, especially because it opens the door for Windows XP users. The picture at the right, courtesy of, gives you an idea of how it works. A small slider is placed in a window at the top right part of the screen and an icon is placed in the system tray after installation. By dragging the slider left or right, the desktop pans in that direction. By using 360 Desktop, you suddenly have a lot more desktop space and some nifty backgrounds and widgets to go with it.

The Good

It certainly adds work desktop space, and being Windows still does not have built-in support for workspaces like the rest of the world, this is quite helpful for people with smaller monitors. The space taken up by desktop widgets doesn't matter quite so much any more. The panoramic desktop wallpapers were really pretty.

The Bad

The extra work involved with accessing and navigating the extra desktop space wasn't really worth the benefit it gave. For example, if you have a plethora of open windows strewn across the cylinder, how do you jump from one side to the other quickly. Panning is great for keeping track of where you are, but it's not so good on speed. It's also not very precise. Also, unless I missed something moving windows around the cylinder isn't possible, either, so you have to either repeatedly pan the screen some and then drag the window or close the window, pan to the new location, and reopen it. Either way is a pain. The selection of panoramic wallpapers wasn't very big and most of them were really bright, which looks nice but makes finding icons on the desktop more difficult.

The Verdict

I'd say that 360 Desktop is a nice idea, but it's another case of a nifty demo being developed into a full-fledged program when it really shouldn't have. Some people may really like it, but in this writer's opinion, it just slows you down -- workspaces are much faster by way of the keyboard, much more precise, and the jury's still out on desktop widgets. :)

Wednesday, July 2, 2008

My Summer So Far

It's almost like I've taken a complete vacation from anything online, but my summer schedule has been packed. Solid. I've been... repurposed at my school and doing the job search thing. There wasn't anything at all available by the time I started, so I'm still at the school I've been working at for the last 8 years. On top of that, I've been working like a dog at renovating my house so that I can sell it a little later this year. Hopefully, that'll be before the end of the summer, but at the rate I'm going, I'll be lucky to be done by that time.

Not everything has been paint, drywall, and resumes, though. The skunkworks has gone back into production. It took some time, but I managed to put together a basic coding machine from spare parts -- my workhorse can't run R5 or Zeta, which is a huge bummer. It has some minor issues, but it works well enough to get the job done. Unfortunately, I don't have a good coding environment (i.e. desk, forearm rests, decent chair), so I'm waiting on a KVM to arrive so that I can sit the development box beside the other one and be able to work without hurting myself.

I have my R2 document about as done as it's going to get, but because it seems like some people tend to offer their opinions without giving serious consideration to many of my ideas (and because design also needs testing), I've been hacking some code to put teeth to my ideas. So far things have worked as I expected them. Some are really exciting to play around with. Others need some more hacking. What are these things you ask? I'm not quite ready to let everything out of the bag just yet, but I'll tell more later. For now, one thing I will say that I'm studying the sources for Tracker and the Deskbar to be able to... improve them. I was never allowed to do anything official for R2 while a member of Haiku, but nothing is stopping me from doing stuff on my own while I have time this summer. Who knows? Maybe some of it will go into the official stuff then. It'd be nice to see R1 in the near future. I'd do some work, but it's terribly boring work and most of it is too technical for me to be able to do anything besides test. Oh well. I'm working on the fun stuff right now. *heh*

Just to give you an idea of what I've been up to, renovation-wise, here are the before and after photos of my bedroom, and it was not nearly as nice-looking as the before photo would have you to believe. The new wall color looks kind of pinkish in the photo, but's a nice light brown that looks awesome IRL.

Wednesday, June 11, 2008

Still Alive

I'm not totally out of commission, just so you know. I haven't had anything really worth posting about and the end of the school year has made things kinda crazy. I've been mainly working on my revised Haiku R2 Desktop document, which is still in the works, but I'll be posting it as soon as it's done. TTFN

Saturday, May 24, 2008

Steve Ballmer is a Funny Guy

I doubt that he really is trying to be as laugh-inducing as he is, but he makes me laugh on a regular basis. Most of the time it's by making himself look more than a little foolish. For example, I'm not the only one who enjoyed the video of his "Developers, Developers, Developers" hype. He dances at least as bad as I do. Sometimes I just shake my head in disbelief at events surrounding his leadership at Microsoft--times like a very unhappy Hungarian lobbing eggs at him, his training for the Chair Throw event at the next Summer Olympics, or his comparison of Linux to a virus. Today, I'm doing both.

Apparently, Windows Vista sales are really good in Steve's opinion. More and more often I hear about low opinions--often very vocal ones--about the latest desktop OS from Redmond. This article was quite an enjoyable read. Why? It shows just how much of the Kool-Aid he really has drunk. He's happy that Vista is selling really well because of OEM preloading it onto machines. I wonder what he would say if he had to depend on selling Windows than depending on OEMs to do the dirty work for him by not offering customers a real choice. Here's where I translate the marketing speak Steve used into real English:

Steve: "Application compatibility in Vista was not as high as many of our customers would have liked."
English: People didn't like that we broke as many programs as we did.

Steve: "I think we’re going through something of a process whereby Vista users are still getting used to Vista after moving from XP"
English: People are going to have to get used to all of the changes we made, whether or not they're good ones.

While there are those people who wanted it for whatever reason, many consumers who bought it with a computer don't necessarily know the difference between Office and Windows, but they knew something was wrong when their hardware wouldn't work and a comparatively smaller number of people don't want it at all. He really thinks that a lot of people like Windows Vista and wanted to upgrade it. Now that's funny.

Tuesday, May 6, 2008

What Vista could Teach Linux and Haiku

Once again, I am in the process of finding some hot sauce to go with the words that I'm eating. There was once a time when I said to myself that I'd never, ever install Windows Vista on my desktop machine at home. It's funny how circumstances have a tendency to change your mind. To make a long story short, I plonked down 65 clams to get an upgrade license to Home Premium and my computer now dual boots Vista and Xubuntu. I haven't forgotten or abandoned my love of Haiku or my liking for Ubuntu, but I will share with you a little food for thought, as in what Linux and Haiku could learn from Vista, both its successes and failures.

The Out-of-the-Box Experience Matters

This one is mostly for Haiku, but it could also apply to just about any Linux distro. Apple has got this one nailed, but I digress. Microsoft did well on the OOBE for Vista. From the unpackaging the CD (or DVD) to the "junk papers" included in it, the installation and ability to upgrade from within Windows, Vista at least gives you the impression that it is a well-polished piece of software.

The installer is nice-looking, clear, well-worded, and--dare I say it--usable. I can do without all the marketing-speak, but that's par for the course and easy to ignore. I think that Haiku could do more to reduce the amount of interaction needed to get an install done, but Redmond has certainly improved over, say, XP's installer.

Proper Hardware Support Really Matters

Driver support has been spotty in Vista. I know more than a couple of people who have been burned by unsupported peripherals after an upgrade to Vista. My desktop machine is about a year old, and -- unsuprisingly -- its game port is not supported. I have an old 3com 3c905b network card which I'm not exactly surprised isn't supported. Yeah, yeah, some of you are might be saying that it's up to the manufacturers to support their hardware, but I'll say it again: the technical details only matter to the technically-minded. Businessmen don't typically care unless it significantly changes profits, one way or the other. Nontechnical home users don't care. Many office workers don't either.

Some devices in Linux work perfectly out of the box. Others require some tweaking, and then there is the On Your Own realm where either a device requires a lot of playing, configuring, reconfiguring, swearing, forum scrounging, and possibly even code hacking to get to work. Of course, there are more than a couple devices that don't work at all, for whatever reason. The funny thing is that even between distros you find support for certain hardware or hardware-related features, such as suspend / hibernate, varying between distributions.

BeOS did somewhat better in this matter. It either worked or it didn't, and there generally wasn't anything in between. Unfortunately, there were occasions where it wasn't obvious whether a device worked and, as a result, remained a mystery without some digging around. An easier device manager app might be the solution to this. Hardware support for Haiku will be hit and miss in many cases for a while, but it should be easier to make it come around, thanks to many of the inroads made by Linux.

Place No Unnecessary Restrictions on Your Users

Vista has a variety of methods for getting in the way. You can't use GRUB (or any other bootloader, for that matter) without some hackery. The UI is comfortable, but slow. More steps are required to do certain tasks than in XP. There is much change for the sake of change. UAC makes me Cancel or Allow seemingly everything, and while Linux and its brethren have the occasions where you have to type in your password to do administrative tasks, this happens much less frequently in my experience than Vista. Filesystem permissions can give headaches from time to time, but they have nothing on the annoyance value that Vista's do. Using an upgrade license key isn't that bad unless you need to change the partition table, in which you will have no choice but to install Vista twice -- the key only works when installed from Windows and the partition table can only be changed when booted from the install media. Joy. It's things like this that make books like O'Reilly's Vista Annoyances necessary.

Eye Candy isn't Required, but it is Nice to Have

Believe it or not, I'm not even referring to a 3D-accelerated desktop experience, even though that is the direction that Vista took. Good looks aren't necessary for the experience, but it does help to initially draw someone in to take a second look and it makes working with the OS more enjoyable. One thing that I've felt in using Vista is that it feels like going on a luxury cruise: it looks pretty nice, has its annoyances, costs a lot of money, has a generally cushy feel to it, and it takes some time to get used to your surroundings. It also makes some people want to throw up. Don't get me wrong, though.
Let's just say good looks has enough value to make a requirement.

Linux has some distros that look good and others not so much. GNOME and KDE go in opposite directions in terms of general look and feel. GNOME is very conservative and KDE is brightly colored-- so much so that some would say it is garish.

The initial work that
Stephen Aßmus and others have done on the icons and general look is praiseworthy. The colors aren't too bright, but it does look nice and without shying away from the use of color. I'd say Haiku's in good hands on this one.

A Broken Trust is Hard to Repair

This has more to do with a company behind the software than the software itself. There are numerous instances in both XP and Vista where it shows that Microsoft groups users into two categories: geeks and clueless people, and it doesn't trust geeks without making any attempt to hide it. How? Let me see... Windows / Office Genuine Advantage and its WGA Notifications nagware, DRM in Windows Media Player, Trusted (ha!) Computing, the privacy-invading Windows Vista Customer Experience Improvement Program, and forced software activation, and even stealth computer updates by means of Windows Update, just to name a few.

Most of this stuff has been put into place because of software piracy in the warez scene and bootlegging overseas, even though Microsoft has made money by the truckload with Office and Windows. As a result, many existing customers have less trust for MS than most citizens have in the Internal Revenue Service here in the U.S. The sad part that Microsoft neither seems to care nor has any plans of changing this. Combine this distrust of its users with several botched software upgrades like XP SP3 and you have a reputation problem on your hands that even Redmond's spin doctors will have a hard time fixing.

Linux proponents vary in their opinions, which, considering the wide variety of its users and developers, isn't surprising. Many of them fall into the Richard Stallman camp which not only preaches software that is free as in speech, but has a somewhat-justified distrust of proprietary software.

My experience with the BeOS / Haiku community is that open source is good. Haiku is developed under the MIT license but bundles in software with other licenses. I remember asking Michael Phipps about the "what if someone grabs the source and makes a closed-source product with it" scenario and I liked his answer. It went something like, "So what? Haiku is still free. Call it a gift to the community. If some one makes a closed source version, Haiku is still free." If that's not goodwill, I don't know what is.


All-in-all, Vista's not a bad experience for most folks. It's just that, at best, it's not very compelling and at its worst, it's a nightmare. High cost, steep hardware requirements, too many choices of editions, a development cycle that went way too long, a company whose bureaucracy weighs heavily on software development, a lack of trust for its customers, and many other factors combine for a let-down with few positives. If Microsoft wants to head into decline, it need only continue its current behavior. However, it's unlikely that Linux's chaotic development into all directions without a clear vision for certain markets will cause it to become a Windows-killer, but that leaves opportunity for Haiku to find a clear niche. Only time will tell to see if anyone learns from Vista and Microsoft.

Friday, April 18, 2008

Why Not Help Linux?

I just finished reading the news about Haiku's event at LUGRadio last weekend and the question asked of Koki got me to thinking. Some Linux fans out there may be wondering, "Yeah, why not?" I can think of quite a few reasons why not. Be warned, my skin has been infused with asbestos. Not as good as adamantium, but I don't have problems at airports. ;)

Linux is Intended for Servers

To use a quote from Michael Phipps at the first WalterCon, "You can put a pig in a dress, but it's still a server." Linux's kernel is primarily intended as a server operating system. Yeah, yeah, there are tweaks that have been made to the sources to help with responsiveness on the desktop, but they have not been made official part of the kernel. X Windows is not going away any time soon, and despite the efforts of the XOrg team, it's still got problems, primarily the complexity of configuration but also other things like multiple monitor support. Yes, most configuration is hidden away from the user, but it still manages to rear its ugly, textfile-based head now and then. Xinerama helps, too, but it's too difficult to setup and has limitations in its flexibility. This one area that Windows beats Linux on, hands down. These issues stem from the UNIX origins that Linux is based on.

Linux is not Commercial-Friendly

Have you noticed that while there are a few companies out there that are gung-ho about Linux development and open source software in general, most won't touch it? A lot of corporations are not about to develop for an operating system that forces them to give away the family jewels, free or not. nVidia has a bad reputation among the GPL zealots because it won't do this. Making wireless networking under Linux is a crapshoot with the odds stacked against you, for example. Most of it is because of the GPL.

Linux Desktop Usability has a Long Way to Go

I am writing this from within Firefox 3.0 Beta 5 on a laptop that only runs Xubuntu Hardy Heron. I am not afraid to use Linux and am relatively comfortable using it on the desktop. Simply put, desktop Linux is too much work. I use it because I don't have to reinstall it every 6 months to a year to keep it from bogging down, unlike Windows, and because I am more productive using it for day-to-day tasks and office work. It takes a lot of tweaking -- regardless of the desktop environment -- to get productive. I would not dare ask my wife to try to install any Linux distro, nor would I try to get her to learn all the things I've had to learn about Linux.

Need some examples of places where Linux usability is ridiculously bad? Here are a few: a user should never have to edit config files. Ever. Regular users do not care about the GPL. At all. Not in a million years. A user should not have to ever compile a kernel (or anything else) for any reason. Go beyond the basics and nice, sweet, Ubuntuland becomes a wilderness of BASH, text files, tweaking, and forum searching. I could go on and on here.

Linux has no Cohesiveness

I've said this before: if I sit down at a Windows desktop, I have a reasonable expectation of the experience to come, for bad or worse. If I sit down at a Linux (or UNIX, for that matter) desktop, I have no idea what to expect: Xfce, GNOME, KDE, GNUStep, WindowMaker, or something else, particularly if the maintainer of the machine is a bigger geek than I am. The parts don't all work together, visually, functionally, or otherwise. Try copying some text to the clipboard, closing the app, and then pasting the text into another app. It doesn't work. Motif doesn't look like GNOME or KDE. Same with Java. The lack of a unifying vision and direction for the OS results in chaos in general, and this shows in using Linux.

Haiku is Easier for Developers

While it has been a while since I did any development for BeOS, I have been experimenting with APIs from other toolkits and OSes. BeOS is still easier than any other I've seen. The only one that comes reasonably close is Qt, and even it has its difficulties. It is easier for a developer to write a responsive, multithreaded (and, thus, multicore-friendly) application under BeOS than any other toolkit. SMP support doesn't have to be compiled into the kernel because it's already there. The filesystem automatically has support for extended attributes.

Linux is Slow on the Desktop

There are so many reasons why Linux is slow for the desktop. The network transparency that X has doesn't have much use in one- or even two-computer homes. The Linux kernel, by default, does not include low-latency code, so home audio work takes more work than it needs to. Programs are single-threaded, so there are countless instances of waiting for a window to redraw itself because it's off doing something else. Boot time is on par with Windows XP or Vista and shutdown time isn't much different. I have not seen any mainstream OS -- or any seriously developed hobby OS -- that shuts down faster than Haiku does, bar none.

Final Thoughts

This may sound like I'm bashing Linux. In some places, yes I am, but not because I hate it or anything. Many of the problems that go with Linux have to do with either using a tool for a purpose other than what it was intended (server on the desktop), development decisions that have an impact on relations with corporations, or because of the geek culture that Linux is best suited to. The desktop market is primarily regular, non-technical people. Linux is a culture of geeks. The two don't really mix very well. Red Hat was smart in saying that a desktop distro is hard, because it is. Why not help Linux, because Joe User is a person, too.

Wednesday, April 9, 2008

More Book Details

I'm still hacking away at the book, but with less time to work on it than during Spring Break, which was when I started it. I still get time each day to write, however, so progress is similar to Haiku's -- slow and steady. After doing some research, I discovered that if I want to make any decent money and do something beyond publish a book to see my name in print, using a Print-on-Demand service like is a Bad Idea(TM). I'll be at least giving a go at a traditional publisher. Considering the drivel that I've seen in bookstores, I think my writing skills are sufficient that I should be able to find someone to publish the book. Tentative title: Getting Stuff Done with Writer. We'll see what happens, anyway. :-)

Thursday, March 27, 2008

Developer, Teacher, Musician.... Author?!

It looks like I'm going to be adding another title to my list of accomplishments in the not-so-far-flung future. I'm working on a book, of all things, on It's not the first time I've worked on documentation, but it is the first time I've tackled something this big. If you recall, I wrote the first draft of Haiku's User Interface Guidelines. I started hacking away at the initial manuscript last Friday and I'm just about finished with Chapter 4 of the part on Writer. I don't know how long it will be, but I highly doubt it will end up being one of those 500-page coffee table books like the "Learn Something in 21 Days" books that Sams Publishing does. I haven't come up with a title yet, but that's OK -- it's not like I'm on short notice or anything. It'll be published through for the print version and released online as a PDF with a Creative Commons license.

I thought I knew a lot about Writer, but I've learned so much in just the 6 days that I've been working on it. I never thought it would be as much fun as it has been. The upshot of the whole thing is that it requires *so* much less mental energy than writing code. I've put code on the back burner for now -- this is just as fun and has the potential to make me some money. With me moving late this year (tentatively), it's not like I don't have need for it.

Sunday, March 16, 2008

wxWidgets Ain't So Bad, or How to Eat Crow

Well, after fighting with it for a while, I ultimately gave up on writing code with Ultimate++. The learning curve is too steep and the support is bad enough to not be worth the time. Don't get me wrong, it's probably a good toolkit overall, but it parts of it which seem like basic system services are nonexistent or require work to get right. If it had a bunch of people behind it working on patching the missing bits and/or had more complete documentation, it could be really nice. When I was contemplating ditching the toolkit, I gave wxWidgets another go, and, to my surprise, it installed and worked right out of the gate. I'm not sure what gave me such a hard time getting things to build last time around. *shrug*

Anyway, I started work on what I consider my first app when learning a new toolkit: a program to randomly generate bingo cards from a word list. It's a helper app for some teachers that I work with, and it's a good first project because it familiarizes me with basic UI programming, file I/O, and printing. After a few hours, I've got everything working except the actual printing implementation, which should come soon enough. As soon as I have something worth downloading, I'll probably post it on my website. Not BeOS, but if the port of wxWidgets to Haiku takes off in a reasonable amount of time, it will be also for BeOS.

Saturday, March 8, 2008

Code + Blizzard

And I'm not talking World of Warcraft, either. Central Ohio was hit with the worst snowstorm since 1978. We received a foot and a half of snow in 36 hours time. While mine was not one of them, there were counties around where you could be arrested for driving on the road at all. I made the best of it and spent a number of hours working on some around-the-house projects that I've been neglecting and hacking a project based on the Ultimate++ toolkit.

Ultimate++ is quite an interesting toolkit. The driving goal behind it is increased developer productivity. The method? To quote the project's pages, "aggressive use of C++ features." It's quite an intriguing API, too, and definitely utilizes concepts foreign to the BeOS way of thinking. I'll probably post more in-depth on it later. It makes cross-platform programming easy to set up, unlike wxWidgets, but it does have its warts. For example, it lacks its own calls to show the Windows common Page Setup dialog and there isn't an included sound or movie API. Documentation is spotty -- some sections are very good, some are incomplete, and some are completely missing. Anyway, I'm working on a couple of projects. We'll see how far they get, but I'm learning.... slowly.

Sunday, March 2, 2008

Well, here goes nothing

I've been off the BeOS / Haiku radar for some months now. I still am not officially active in it anymore, but that doesn't mean that I don't keep thinking about Haiku or coming up with ideas that could make it better. Computers are still quite an active part of my life, but finding time to do anything that I used to classify as "productive" is a difficult proposition right now -- mostly limited to the weekends. I've decided to start a blog which is still Haiku-oriented, but not limited to Haiku or even necessarily computers in general. Yep, this is my own little, relatively-insignificant corner of the Web.

To start things off with some actually useful content, I'll start with a project I've been twiddling with for the last couple of weeks that has actually increased my productivity under Linux somewhat. You might have heard of a person who made Xubuntu look like Windows Vista and then later, OS X Leopard. Well, that got me to thinking about how it could possibly help something that I'd done: work on designing the 3D-accelerated desktop experience for Haiku R2. The experimenting led somewhere, and I can't say that I didn't learn anything, either.

Xfce 4 is Really Tweakable

I've heard it mentioned that the Xfce desktop environment that Xubuntu is based on is quite configurable. I'll agree with that. I could have done most of this stuff in GNOME, but if you asked me, Xfce is like a good compromise between GNOME and KDE after going on a diet. The big thing was the panel. Originally, I thought that completely getting rid of the Deskbar was the way to go. I was wrong. Instead, what really needs to happen is expand its capabilities to enhance the desktop's needs. The panel concept common to Xfce, GNOME, and KDE fits the bill: small, useful widgets which are useful, but not visually distracting.

Believe it or not, the panel was quite carefully thought-out. First of all, it is in the bottom left corner to allow people to keep a habit from Windows: throw the mouse to the bottom left corner and click to open the main menu. It also allows the user to develop habits for other items in the panel because it only grows in one direction.

Beside the main menu is a visual separation between it and the next section... Places. One thing that this feature is missing is Tracker's filesystem menu. A proper Places item for Haiku would utilize Tracker's filesystem navigation menus or an appropriate replacement. It should be divided into two sections and the bottom section is dedicated to the Recent [Documents / Applications / Folders] menus, user bookmarks, and for a menu item to allow the user to edit the bookmarks.

The fast launcher sits beside Places. In the screenshot, there is just FireFox, but obviously, there could easily be others. The weather applet is just there for fun, and the timer is for helping me maintain good computing habits and stave off RSI issues. The CPU graph is good feedback for the user in knowing how hard the computer is working, and the clock.... well, no one likes to have to look down at their watch. ;-)

One other tweak that only the more perceptive readers would notice is the bigger icon sizes. By default, Xfce uses some tiny icon size for its menus. I think it's 16 pixels, but it might be 20. My computer is runs at a resolution of 1280 x 1024. At that resolution, it's hard to navigate the menu because of the small size. While I have experimented with as large as 32 pixels, 24 seems to be much easier for higher resolutions. Even the largest menu (Settings) doesn't take up more than about 75% of the vertical screen size. Perhaps there should be something about a possible method for computing menu item size based on screen resolution, so that people with smaller screens don't have massive menu items, but better equipped computers don't require users to have the coordination of a 3D-shooter tournament champion in order to run a program.

Compiz Fusion...Meh

The main driving force behind the 3D desktop on Linux is the whole Compiz / Beryl thing. I have a hard time following the different soap opera that go on, but Fusion is the result of the reuniting of the efforts of the Beryl and Compiz teams. Their efforts are promising, but at the moment, buggy enough to not be useful on the desktop at the moment.

Some of the desktop effects, such as painting on the screen with fire, are just novelties, but some have the capacity to be really helpful. They're not overly complicated, either. Here's a list of the desktop effects that I put into place:

Desktop Wall: This adds a slide transition when switching workspaces and additionally shows the location in the workspace grid along with the direction travelled. This is really helpful for keeping context for power users.

Expo: A keypress zooms out to see a live overview of all workspaces. If a movie is playing -- you guessed it -- you could theoretically watch it from this overview. You can select a new workspace just by clicking on one or using the arrow keys and Enter. This would make a good workspace switcher for more novice users.

Show Desktop: This plugin is a direct copy of the same feature in OS X. Quite helpful, especially when you have applications minimized to the desktop.

Animations: A multi-effect plugin. Even though there are some neat ones, most of them are more distracting than helpful. A few were nice to have to provide additional feedback on the actions of a particular window -- a curved fold on close (window folds in on itself and disappears), a fade effect when a window is brought to the front of the stack, and some zooming effects for minimizing and opening windows.

Window Snapping: This is also called Edge Resistance, originally named "Snap and Go" and mentioned in my 3D Desktop RFC.

Application Switcher / Ring Switcher / Shift Switcher: These were plugins for different methods of changing between open applications. Application Switcher was the easiest for me to use, but the others could be valid alternatives.

The only feature that I couldn't properly test was Minimize in Place because the Shelf plugin is not currently stable. However, Xfce's window manager has a mode where all minimized apps show up as icons on the desktop. Almost as good.

Just for fun I changed the background, icons, main menu icon, and splash to be Haiku-themed. I only wish that I could've had all the 3D-Accelerated goodness with a BeOS-related window decorator. KDE does have a BeOS-like one, but it's ugly and no amount of tweaking that I did made it look decent... only less ugly. Xfce has a very good one, but, sadly, it can't be converted to a metacity theme and there isn't a decorator plugin for compiz that works with xfwm's themes, though I wish there were.

Was it Worth It?

I'd say yes. While Windows XP is my primary OS out of necessity and being the path of least resistance, after all that tweaking, I found that I preferred to work in Linux because of all the extra niceness. It's difficult to describe in words, but the extra effects impart a feel-good kind of quality that makes working somewhat more enjoyable -- kind of like the difference between a regular just-for-going-to-work beater of a car and the same car with a Bose sound system and leather seats: not absolutely necessary, but it makes the experience nicer. If anyone would be interested in trying this out, too, I probably could post the config files or at least the "recipe" for proper tweaking and the media files.