Friday, April 30, 2010

My quest for a window manager (part 2)

In yesterday’s blog entry, I described some of the Window managers I was not happy with. Thankfully, I found a modern window manager that works for me.

The window manager I settled on was a recent release of XFCE, XFCE 4.4 to be exact.

XFCE 4.4 may not be the latest and greatest release of XFCE, but it is the release I can install with a simple “yum --enablerepo=extras groupinstall XFCE” in CentOS 5. Right now this looks to be the best FVWM1 replacement candidate for me. While more heavy than I would like — it takes about 20 or 30 seconds for the desktop to come up once I start X, compared to FVWM which comes up in only a couple of seconds — it is really lightweight for a full-featured desktop environment. Unlike Afterstep or any of the tiling window managers, I don’t need to learn yet another (often times poorly documented) arcane text configuration file format to configure the window manager; everything can be configured from the GUI.

It didn’t take me too long for me to figure out how to use hotkeys to change the virtual desktop I am on. Unlike FVWM, I can not move an application from one desktop to another by dragging the window; however, I can move an application from desktop to desktop by clicking and dragging its miniature image in the pager. I also was able to configure all of the panel elements to be vertical elements on the side of the screen to allow there to be as much vertical space for the xterms as possible. One advantage of xfce4 over FVWM is that the xterm windows “snap” to the elements on the side, making horizontal alignment of the windows easier than it is in FVWM1; there may be an option to configure things so that the windows “click in place” next to each other, something I wish FVWM1 had.

XFCE 4.4 has an extensive number of themes for the window decorations, a great improvement over FVWM1 which only has two minor variants on a Motif theme (an appearance used by a windowing system for UNIX called Motif which existed in the early 1990s), both of which looked sexy in the mid-1990s, dated by the early 2000s, and downright ugly in 2010. Indeed, a lot of FVWM1 derivatives (Bowman, FVWM95, MLVWM, etc) are simply FVWM1 with different looking window decorations.

The theme I opted to used is called “smallscreen”, which allows me to have xterm windows one row taller than I could in FVWM1.

I’ve been using XFCE 4.4 (not the current 4.6) for about two months now and have been happy with it; while it is a bit disconcerting having my four virtual desktops in a single vertical bar instead of a 2x2 virtual desktop, it otherwise has everything I like about FVWM1, as well as being lightweight in a virtual machine on a Dell I bought in 2007.

Thursday, April 29, 2010

My quest for a window manager

A quick glance at my screenshots page shows that I have been using FVWM1 for a very long time now. FVWM1 is definitely showing its age; newer applications (such as VMware player) don’t work very well with FVWM1.

So, I spent some time trying to find something more recent that works for me. I have tried out a few different window managers:
  • Afterstep. While the most recent release was only a year ago, the program feels incomplete and abandoned. The documentation on the website is incomplete; the Afterstep Wiki has not been updated for over 90 days; and the website has dead links like as.themes.org. The project does not appear to have an active community. In addition, the program takes 20 to 30 seconds to start up, which seems excessive for what should be a simple window manager.
  • HaZe. This was abadoned in 2002, but I tried it anyway. It took me about 30 minutes to get it to compile; after getting it to compile, it ended with a segfault. This is obviously, at best, a half-finished window manager.
  • I didn’t try any of the tiling window mangers. I have been very productive for nearly two decades with virtual desktop window managers; a new paradigm of window management is not what I need.
  • XFCE 3.2. Ancient release of XFCE; took me about two hours to get this critter to compile and run in CentOS 5 (and, for anyone that’s interested, I have a RPM here). It starts up quickly but I couldn’t find a way to assign keyboard shortcuts to change the virtual desktop I am on.
In my next blog entry, I will describe the Window manager I have been using for about two months and that I’m happy with.

Wednesday, April 28, 2010

Deadwood: I will no longer announce snapshots here

Just letting people know that I will no longer announce new snapshots of Deadwood here, only full releases. People who want to look at Deadwood snapshots can go here:

http://maradns.org/deadwood/snap/

I usually describe what has changed in a given snapshot here:

http://maradns.org/deadwood/CHANGELOG

Deadwood: Revising the hash structure

Currently, the upstream DNS servers are stored in their own special hash. However, in order to implement full recursion, the upstream/root DNS servers need to be stored in the same hash cached entries are stored in.

However, there are some things different about upstream/root NS referrals in the hash:
  • They will not be part of the file we store the offline cache in
  • The entries will not be part of the queue we use to delete unused entries (and put stuff in the cache diskfile)
  • It will not be possible to delete the entries once they are in the hash
My next task for Deadwood is to modify the hash structure to accommodate these “immutable” elements; after that, have upstream_servers and root_servers stored in the hash.

Tuesday, April 27, 2010

Setting up a Postgres server on RHEL/CentOS 5

The procedure for installing and setting up an account in MySQL is widely documented in various places (such as the document for setting up a MySQL account for Wordpress); however, I haven’t found an online guide for installing and configuring Postgres for RHEL/CentOS Linux.

That in mind, here is my guide
  • Install Postgres:
    yum install postgresql-server
  • Choose language of Postgres UI:
    cd /var/lib/pgsql ; vi data/postgresql.conf
  • Set up a "www" account and make a database for said account:
    su postgres
    # Answer No for all three questions when doing:
    createuser www
    createdb -O www www
    # No, no, and no (no special privileges)
  • Make the database password protected:
    vi /var/lib/pgsql/data/pg_hba.conf
    Make all authentication over the network 'password' instead of 'ident'

  • Apply the changes:
    /etc/init.d/postgresql restart
  • Let’s give the “www” user a password:
    su postgres
    psql
    And at the prompt...
    ALTER ROLE www WITH LOGIN;
    ALTER ROLE www WITH PASSWORD 'foo';
    \q
    The semicolon is important.

Monday, April 26, 2010

I have a new gig

Well, that didn’t take long. Just a couple days after ending my last gig making a complete webpage and CMS (web content management system—a webpage you can edit in a browser) in a month, an old buddy of mine wants me to convert a blog from one format to another.

I’m already researching things so I can make a proposal later on this afternoon.

Looks like I won’t be able to finish up Deadwood quite yet.

Friday, April 23, 2010

Next in Deadwood: Glued NS referrals

The next thing in Deadwood I will implement are glued NS referrals. Here is the general plan:
  • If we get a NS referral upstream, make sure it is in bailiwick (actually, this bit of code has already been written).
  • Store the NS referral in the cache.
  • Then, make a new query to one of the NS servers, using the part of DNS space this NS record refers to as our new bailiwick.

Thursday, April 22, 2010

Deadwood is alive again

Well, my project to where I built a full web content management system in two weeks has finished, so I have some free time to work on Deadwood again.

That in mind, I have just released a new snapshot of Deadwood; this has a one-line change compared to the snapshot from over a month ago, but shows that Deadwood is alive (for the time being):

http://maradns.org/deadwood/snap/

Monday, April 12, 2010

MaraDNS update: List scubscription HOWTO

I have updated the MaraDNS FAQ with detailed information on how to subscribe to the list which should help people who are having problems subscribing to the list so they can get unpaid MaraDNS support.

For people who are still unable to subscribe to the list after getting this information, I will happily subscribe you to the mailing list for a nominal fee.

Monday, April 5, 2010

New MaraDNS snapshot

I have updated the FAQ to link to some blog entries to clarify I will not implement for free whatever pet feature some luser wants me to implement without them paying me for my time.

Just in case some luser gets some clue and learns how to RTFM, this FAQ entry will stop them from wasting my time and their time.

As always:

http://maradns.org/download/1.4/snap/

Sunday, April 4, 2010

What’s it like to work in the tech industry

Now that I’m in the tech industry again, adding HTML/CSS/PHP/Javascript/Postgres (My boss feels this is a better database than MySQL)/CMS design experience to my résumé, some thoughts on how the tech industry works.

The technology sector is extremely fickle. It’s feast-or-famine; some new technology comes along that everyone wants to have (Aerospace in the 1960s; video games in the early 1980s; the internet in the mid-to-late 1990s) and people are hiring like crazy and fortunes are to be made. If you’re at the right place at the right time, you can even make millions and retire young.

But then, all of a sudden, no one is hiring any more and all you get at Monster and what not are idiots who want you to have ten years of experience in whatever technology is the hot new buzzword, regardless of whether the actual technology has even existed for ten years.

The things that appear most stable in the tech industry, based on the people I knew in the 1990s and where they are today, are technical writing and middle management. Tech support is underappreciated and underpaid; programming and system development is very fickle — when there are layoffs nearly everyone becomes jobless; after the dust has cleared and they start hiring again, the listings on Dice and Monster generally only hire people with proven experience in technologies that didn’t exist or matter before, and it’s very hard to break in again.

I remember, when I was working in San Jose, an older gentleman telling me the story of what happened when Nixon cut off the funding for an orbiting space station that NASA was supposed to build in the early 1970s. People would come to Silicon Valley to work, buying a house, and start moving in. They would show up for their first day of work, and be told that there was no longer a position for them and that they should pack up and move back. Indeed, this inspired the computer revolution because there were a lot of really intelligent people who found themselves suddenly jobless.

So, I’m finally getting paid to do tech again. With the exception of a short-term contracting gig in the mid-2000s making a Linux/Apache/MySQL/PHP website, this is the first job I have had in tech since I was laid off during the dot-com implosion in 2001 (No, the job babysitting Windows machines and doing things like reinstalling Windows or copying Outlook files from one computer to another doesn’t count). I’m starting on the ground floor again; the pay is low but the experience is great to put on my résumé.

The one thing I don’t like is the lack of time to finish up MaraDNS. My boss wants an entire CMS ready in two weeks and I just don’t have time, between that and my wife, for MaraDNS right now.

Thursday, April 1, 2010

New revised MaraDNS roadmap

Today I have decided to revise my MaraDNS roadmap. I have realized that I have an intrinsic need to develop open-source software, and that this need is so strong it doesn’t matter if I get paid for my work.

That in mind, I will quit my job and have time to develop all of the features people wish. In particular:
  • I will fast-track finishing up recursion in Deadwood and release MaraDNS 2.0 in a month or two.
  • I will then integrate Deadwood and MaraDNS’ current authoritative code in to a single binary, releasing this as MaraDNS 3.0
  • I will then implement DNSSEC and DNScurve for MaraDNS, releasing this as MaraDNS 4.0
  • At this point, I will replace the authoritative core with a fast dynamic cache that will allow a multi-dimensional associative array to be read to and written from disk. This will allow live zone transfers, and instant startup, no matter how many DNS entries one has
  • I will implement a method where one’s originating IP can change the reply MaraDNS gives; this will allow MaraDNS to support multiple DNS “views”, as well as changing DNS responses based on the client’s geographic location (Geo-IP)
  • I should be able to implement any and all features users ask for.
In order to implement all of these features in a timely manner, I will quit my day job and devote all of my time to developing MaraDNS. I will, of course, not charge for MaraDNS and keep it available under an open-source license because, well, information wants to be free. My inherit need to create code is more important than my need to pay the rent and for food.

I should have MaraDNS 2.0 released in a month or two, MaraDNS 3.0 released by the end of 2010, and I will release MaraDNS 4.0 one year from today, on April 1, 2011.