Computers
Experimenting with computers has been a large part of my life - pretty much since doing so became economically viable and I figured out how to use them in the early-1990s.I started out computing on an ancient (even for the day) second-hand IBM 5155 Portable Computer: 4.77MHz 8088 processor with a whopping 640k of RAM, 2 5.25" disk drives, and a massive 8", 10Mb MFM hard drive. It still works (or did the last time I booted it up): it's sitting in the garage right now. The only thing 'wrong' with it is that it weighs as much as modern cars, and the floppy drives have ceased to work (or maybe it was the disks: they've not been commercially available for a while).
Today, I have a home network: my primary machine (an IBM laptop running Linux), a Windows machine, and a newer machine which runs Linux and serves as the network file server. There are several more systems "sitting about", and they'll get powered up for various uses as-needed. You can have my .bashrc or .zshrc, if you wish. Here is a little write-up on flash memory volatility and general utility I did after doing some research into failure rates. These days, I'm largely interested in embedded systems - small, low-power non-x86 based systems - which run Linux, BSD, and various other OSes. The diversity of application for such systems is what fascinates me about them. I suspect that, before long, the common desktop and laptop computers of today will be supplanted largely by ARM (and maybe MIPS) based systems running with instant-on, low-power profiles, and just as much utility to the common user as x86 provides - through Linux.People will have one in their kitchen to look up recipes, check the weather, and start their coffee maker; they'll have one in their bedroom to wake them 15 minutes early when road conditions look like they might be bad, and so on and so forth. The price of mass-produced SoC are finally getting low enough to make this possible - and products like the Asus Eee go a long way to demonstrating the possibilities.
If we were to combine such easily accessible, portable devices with "cloud" computing and what I would call "awareness" software (to, say, aggregate personalized weather, traffic, etc. data from various sources), we'd be a large step closer to the "Jetsons" distopia of the future.
Cool Projects Other People Made
Here are a couple applications I've found useful which aren't in the "common knowledge" domain amongst (most) Linux types. Or, at least, they're interesting things I was not familiar with until recently, and I think they're half decent projects worth a look. :)- Cluster SSH, a nice tool for running commands on multiple ssh-compatible systems at the same time.
- wxWidgets, a cross-platform C++ (with many other bindings) toolkit for developing applications with a native look and feel (L-GPL -like license). Win32, GTK+, Cocoa (and sorta kinda others).
- The awesome window manager, poorly named but wonderfully implemented. awesome addresses many of the issues I face with trying to 'manage' application windows - arrange them, organize them by task, not get lost in a pile, and navigation. It's a 'tiling' window manager with a keyboard-driven focus, so it helps eliminate the whole "carpel tunnel from abusive mousing" which can occur with today's large displays. Unlike the Ion3 window manager, it plays nicely with applications which don't want to be forced into a 'tile'. It's also highly customizable - which, of course, means you can't just "use it out of the box". But it's well worth the learning curve.
- umit, an awesome graphical/visualization frontend for nmap
- dnsmasq, a minimalist local DDNS/DHCP (dynamic dns) and tftp server. On Debian, it's a breeze to configure - just go through the configuration file, modify IP ranges, and uncomment the appropriate lines.
- rackmonkey, a nice rack/service/device/inventory management tool.
- KolibriOS is an graphical operating system written entirely in assembler and fits on a single 1.44Mb floppy that runs on x86 hardware with 8Mb of RAM. Very impressive for what it is.
- The Wayland Display Server, commonly misreferred to as "new X server", is a "nano display server, relying on drm modesetting, gem batchbuffer submission and hardware initialization - generally in the kernel. Wayland puts the compositing manager and display server in the same process. Window management is largely pushed to the clients. They draw their own decorations and move and resize themselves, typically implemented in a toolkit library." In other words, it's a modern windowing system (in very early development) which might one day evolve to replace the dated X server. This project promises a lot; I hope it can deliver. (I should note that this project would seem to make my "universal file dialog" idea a much more realistic possibility, amongst other desktop homogenization features.)
- unattended, a framework for installing Windows systems cleanly without too much network infrastructure intrusion. (The proper installation method is poorly described; the project looks dead, but it is still maintained to the point of usefulness, and the repositories are active.)
- Open-AudIT and OCS Inventory NG are two very interesting network/host inventory tools with software deployment which look interesting, but I haven't had a chance to look into yet.
- Chandler "is an open source Note-to-Self Organizer designed for personal use and small-group collaboration. Chandler consists of a cross-platform, desktop application, sharing service and web application." It works pretty well as "project development" tool, in the sense that it's easy to take the project from "crude illiterate notes" to "almost done". It's a great tool for the small-medium shop sysadmin and "knowledge workers" in general.
Computer Projects
Firefox 3.2 apha with PGO optimization (Outdated - do not use)
This package is outdated - from February 2009. I'd recommend against using it; prebuilt binaries are made available elsewhere.This is Firefox build with Profile Guided Optimization. It is much, much faster than the Firefox bundled with current distros due to the compilation optimizing for profile-specific tasks. This build was done using the Python use profile provided from the Mozilla nightlies. I didn't select any other build optimizations. The tree was checked out from cvs on 02/14/2009 from Mozilla Central.
I built this on Ubuntu 8.10, but I believe it should run on other distributions of a similar vintage and library versions. Just untar the file to (say) /opt and run the program from that path.
NetBSD 4.0 packages for mipsel
I built these from the 'current' pkgsrc tree at the end of 10/08 for my NEC MobilePro 780 to try and give the old little device a second chance at life. I was able to (partially) reach my goal, but ran into issues with pkgsrc. These packages were built on the MobilePro itself, with an NFS mounted root.Here's a partial list of what the tarball contains (in addition to the requisite libraries):
The tarball is just the 'packages' dir from the pkgsrc tree. It should be able to be extracted and the packages installed manually, as needed. For those who are wondering: yes, matchbox works on the MobilePro - but Ion is so much more appropriate for the small touchscreen.
This was an interesting look at both a different architecture as well as NetBSD running on said architecture. If the system had a little more RAM (32Mb is too tight for X), it'd probably have been usable for every-day tasks - even with only a 168MHz MIPSIII processor.
...
Other notable (non-resume-able) stuff I've done: made an OpenMosix build cluster for the Linux kernel (around 2004), written a build automation bash script (kernel retrieval, compile, and packaging), Linux From Scratch with the necessary iptables scripting for a minimalist router, and odds and sods.