Sinzui

No matter where you go, there you are.

Curtis C. HoveyWelcome to my homepage. Other than a brief profile, there’s nothing here to see. Sinzui is a collection of pages dedicated to my interested in hacking, and deliberations upon the world in general. Read my journal to keep up with my activities. I spend a lot of my hacking time working with the GNOME desktop, or thinking about how to make it better.

Hacking

I haven’t been hacking on much for the past year. My life at Hanley-Wood creating ebuild and eplans stole most of my life. I have more opportunities to hack now in my new job. I’m looking for the next project to contribute to. It’ll be GNOME related for sure. I’m using Gedit a lot in my job and adding tools to it to do my work. I could do a better job integrating Bazaar and debugging into it.

Employment

I work at Canonical on the Launchpad project. Rock! I build Web applications with a team of smart people. I work from my home office, on the machines I trust (my own). I can hack on a problem at any hour if the idea and need suites me because I’ve got 24 hour support from my co-workers.

If your an employer looking for some talent, you may review my resume. I am pretty happy working on Launchpad. Honestly, Canonical offers so much to meet by personal and professional goals that I don’t think I will be considering any offers.

My ideal job is designing and building networked applications with a team. Creating sites and tools that help users and businesses to accomplish their goals quickly and easily. Applying agile methodologies and using UML, XML, Python, Ruby, C, C# (mono) technologies in everyday tasks is a must. Giving back to the Free Software community is really important to me. I prefer to be using and extending open source software (GNOME) in my tasks. Working from a Linux workstation is a requirement.

My ideal company sets realistic goals after listening to its employees and customers. Forty-hour weeks are the norm; tasks and priorities are adjusted so that milestones are met in a timely fashion. Deadlines are set using measurable targets. The company has an open office plan so staff can quickly meet, discuss, and collaborate. Open source software will be considered when technologies are selected for solutions.

There has been a interesting discussion about localizing standard directory names for applications on GNOME’s desktop-devel-list. The discussion is under the ‘Call for a Gnome Media Center‘ thread. There is a lot of well meant suggestions about mapping a Music folder to another name.

I don’t think this is a GNOME problem though. This is a desktop problem, a distro problem. Users want their apps and data to work in their language, and those apps come from a lot of projects. No one is happy when a lone app like Firefox, OpenOffice, or Quanta insists that a specific directory name exist. I think we need a concerted effort at freedesktop.org to define how apps locate a standard directory where data is stored. By concerted, I mean settle on a simple standard that can be implement in less than 100 lines of code by the major desktop projects/apps. Distros might want to put some labor behind the effort to see that key apps are updated in time for distro’s next upgrade.

Localization of diretories, is more that just language, it’s the user’s perception of the data. Ubuntu Edgy 6.10 switched to F-Spot for photo management. F-Spot is a great application! I’ve been building it for years now, so I wasn’t put out by making a few changes to it so that it uses my ‘Camera’ directory. My wife Anne was not pleased though. She refused to use it because it wanted her ‘Pictures’ folder renamed to ‘photos’. I think she was taking a pretty draconian position considering the benefits she got by switching to F-Spot. I found a compromise by using a poorly documented feature of nautilus. If you have ever read the source for nautilus (because I’ve never seen a document or announcement about this), you may have come across the ‘.hidden’ file. Nautilus will not display any files or directories listed in a directory’s ‘.hidden’ file. I believe this feature was created in response to a few apps like Java that were littering $HOME with files needed only by developers. Apple’s finder has a similar feature, though I don’t believe it is configurable like Nautilus’. To fix my wife’s desktop I opened the terminal and

ln -s Pictures photos
echo "photos" >> .hidden

F-Spot uses the photos symlink, Anne sees her Pictures. Anne is not a command line user; it might be years for her workout what I’ve done.

This solution could go a long way for GNOME GUI users. It is not good for command line users, and it does require some admin experience to setup and maintain. I suspect a simpler and robust solution would require the app (or platform lib) to check a dot-hidden file that maps standard to locale names. Regardless of how the platform stores is configuration information, the publication of that information must be backward compatible, and easy to implement for older or non-platform apps–hence a dot-hidden file in the $HOME directory. I’m sure the solution is not that simple; some apps cannot handle unicode still.

Firstly, let me apologize to everyone who has heard of the birth from others instead of Anne or myself. We have had a very hectic two weeks, and have had little time for anyone but our children.

Tristan Alexander Lawrence-Hovey was born on January 9, 2007 at 5:58 EST. He weighed 7lb 13.8oz in anachronistic measuring units. He measured 19.25in in length (also in old units). He inherited my hair, nose, ears, and toes. From Anne, he got his eyes and mouth. He appears to have a calm disposition like Caroline (another trait that must come from Anne). I added a gallery of photos from Tristan’s birth, and made a short slideshow of the birth (you can save any high-res photo or the QuickTime movie by choosing ‘Save As’ from your browser’s ‘File’ menu).

Tristan was taken to the Neonatal Intensive Care Unit a few hours after birth because he was having difficulty breathing. Nothing conclusive was found to be the cause, and he was breathing fine a few hours later. The doctors decided to begin a seven-day course of antibiotics while they continued to test. He was moved to the half-way room two days later, where we were permitted to hold him. We visit him for most the day. Anne is nursing/feeding him as best she can given the awkwardness of the situation. I spend a lot of time moving Anne and the children to and from the hospital and schools. The hospital will release Tristan Tuesday evening, pending the completion of his medications and his hearing test. I prepared some photos from Tristans stay in the NICU and a QuickTime slideshow of the past week.

PS. My only disappointment was Anne rejected Euphrates for a middle name. I have some solace in the knowledge that his full name in iambic pentameter.

My group is rebuilding one of our websites, and the UI is getting some serious attention. The business and technical groups came to an early decision that we would not be using multi-select listboxes. They alway require special instruction to use, and they are difficult to use for many users. I don’t know how long that MacOS has supported this feature. Windows has had the feature for more than 15 years. GTK has a similar behavior in the treeview. But Why, oh why, are we perpetuating such a bad solution.

We use radio button for mutually exclusive options, and checkboxes for inclusive options. I have no issue with the listbox to restrict the view of a large list, but why change the rules of the exclusive/inclusive operation? The problem is the size of the list, not how the user interacts with it. The listbox could, maybe should, display exclusive items as radio buttons, and inclusive items as checkboxes. The user should know by the presentation of the items in the list how the listbox will behave.

Using GTK’s treeview to implement the behavior doesn’t take a lot of work–just add use a radio button or a checkbox instead of text, and ignore the SELECTION_MULTIPLE property. Putting the checkboxes/radio buttons in a scrollpane is even easier to implement. regardless of the implementation, all listboxes in my GNOME/GTK desktop should behave consistently.

GTK  exclusive and inclusive listbox examples

Until I thought about this matter I had not noticed that Gecko/gtkmozembed is forging a listbox control for GTK. Since the listbox was removed from GTK few years ago, Gecko must be using a its own widget to imitate the missing behavior. Still, this behavior, while consistent with other OSes, it is not consistent within each OS. I’m considering using a div with fixed dimensions and overflow to fix the behavior. I’m somewhat uncomfortable introducing non-standard UI behavior, particularly to a Web browser. But I feel that things are so broken, that it would be negligent of myself and my group not to take some action.

To anyone who has any influence of the Mac/Windows interface, please help end the control-click to select madness.

I changed ISPs recently, from Cox cable to Verizon. I don't want to dwell on the issue, but let me just say I can think of a homonym for Cox that sums up my opinions of them very well.

With the ISP change comes some email address, website, and blog changes. I've decided to use my .name address for personal mail, and my sinzui.is at verizon for my hacking traffic. My vanity website is now located at annrky+sinzui. My online journal is officially at Sinzui (Essence), and the RSS format is available too at Sinzui (Essence) [RSS]

The hosting service provides a nice Linux/Apache/Python setup that lets me transfer my local pages to the host without the need to pre-render them. It is so nice not having to screen-scrap my localhost, rewrite the files for HTML server, and generate a delta between the new tree and the last push to create a deployment script that ncftp can run.

PS. I have something to say regarding GTK and Web UIs and I hope my next entry is not missed.

NP: Himar Orn Hilmarsson — Children of Nature

I'm looking for two webhackers keen on .NET, one with C++ knowledge and one with XSL knowledge. Hanley-Wood is migrating its business and Web applications to .NET. I think the team needs an infusion of OSS methods and tools. The team is smart, but lacks experience with common team tools like version control, issue trackers, testing, and build systems. The company is open to OSS that solves its problems. The positions are located in Washington DC. If you are interested, please contact me at chovey _AT_ hanleywood.com.

I'm having a lot of fun in my new job. I have an office too. It over-looks Thomas Circle. Though as the picture shows, it is an ex-cicle;
New Hampshire Avenue has bi-sected it (twice).

Thomas (semi) Circle

It is nice to work with smart people again, but I need more. I'm looking for one or two Web/App developers who know .NET, C++, XML, and ASP. We have a lot of code that is written in undocumented C++ that use the creator's own libs. I want to move that code to .NET (C#). Hanely-Wood wants me to build a developer team that will modernize and sanitize the websites. Most the team development issues can be solved with open source tools and habits–the developers don't know how to contribute to each other's projects. I think the tasks requires hackers with Mono experience. I'm going to rewrite the job description for the Web/app developer
to reflect my changes to the job requirements. The MS dominance in the job description may in part be an indication of why I was asked to build a new team–its hard to collaborate if your dependant upon Microsoft.

Friday was my last day working for Direct Holdings, the company that acquired Time-Life at the start of this year. My friend Jeff described the company's plans to continue without me as a traveshamockery. He uses that word often, though I wasn't sure if he means “travesty, sham, mockery”. A quick consultation with Google confirmed this. But take a look at Google's traveshamockery top matches. Wikipedia's entry about Bush Doctrine is the most relevant page!

I rediscovered Submarine Bells by the NZ band, the Chills It's a cleaver pop album. The title track is quite exquisite. I must check out their later albums.

Living behind a firewall can be a lonely and disparaging place to be. Using ssh's port forwarding capabilities has become an essential task to get through the day. Every few months something is closed off, and I add one more item to my morning startup routine. Opening ports to IRC, streaming music, and most recently mail are the first order of business at my business.

I have a machine in my home's DMZ, and my router will let all ssh traffic go to that machine. There is not a lot on that machine, it just provides extra help to my home machines, and lets my play with Ubuntu Linux.

To connect to IRC, I set host as locahost instead of irc.gnome.org host in Gaim. Every morning I issue the command:
ssh -C -N -f -L 6667:irc.gnome.org:6667 user@my.home.ip

I just login to my IRC account, and ssh sends all my irc traffic over ssh to my computer that can talk over port 6667.

I can connect to irc.freenode.net at the same time. I use 6668:irc.freenode.net:6667 and get the port to 6668 and host to locahost in Gaim.

To listen to Indy Pop Rocks
on SomaFM, I set its address as http://localhost:8076 in Totem. I use:
ssh -C -N -f -L 8076:server1.somafm.com:8076 user@my.home.ip

to do the routing. I could also be streaming from one of my home computers using icecast. I would use something like 8080:transmitter.local:8080 to see it.

I resigned yesterday. I accepted a job to move a company to .NET. Shortly afterwords Monster Government Services called me and asked me to delay my decision until Nov 2. Oh well. I haven't signed anything yet so I may have an awkward moment on Tuesday. Monster uses Linux and wants to move some of their tools to better scaling solutions. It is Java work, but It is also not Windows work.

I took home my Nightmare before Christmas, Sandman, and Tick toys.

I expect to get back the time I've been missing since the start of the year. I've got two things I want to do: put search into Nautilus and Yelp, and move developers.gnome.org to wiki.

I'm at the point where I must make a decision about a job. If it weren't for the fact I must work on Windows, I would say yes immediately. I have had a few job offers in the past month and I have turned them down because they offered me the same RUP-dominated J2EE work that I have grown to dislike. This job offers me a chance to work with .Net, and build a team of agile developers. There is even some small hope of putting Mono into a commercial site.

I spent two hours removing a tag-team of IE spyware apps from my wife's computer last night. I truly do not like working on Windows. With the exception of 6 months, I've developed on Linux and Mac for the past decade. But this job is good offer, and an opportunity that will make it easier to make some Mono contributions.

I had 20 interviews in the past five weeks. One company was very interested in developing metadata collection and search tools, but I did not want to take a massive pay cut to make them. Another company offered me a ridiculously large sum of money; a clue that some was very wrong with the project. How sweet it could have been if I could have gotten the task of the first job and the pay of the second.

Next Page »