Running newer versions of autoconf tools on CentOS 5

Today I had to compile a program that needed a newer version of the Autoconf suite than is available on CentOS 5. I got around this like so:

  • Downloaded and rebuilt the SRPM for autoconf2.6 from the good folks at pkgs.org

  • Installed it on the build machine (dang! shoulda been using Vagrant for that! Or least Mock...)

  • This gives you /usr/bin/auto[whatever]2.6x -- which is good! don't overwrite stuff! But you'll still get complaints about not new enough versions.

  • Symlink all the 2.6 binaries to ~/bin/:

for i in /usr/bin/auto*2.6x ; do
    ln -s $i ~/$(basename $i | sed -e's/2.6x//g')
done

  • Modify PATH to have ~/bin first.

Walla.

Tags: toptip centos

Weird bright satellite on Monday

Last night was a rare semi-clear night (this month has been awful, grumble), so I was excited to see the Moon, Jupiter and Venus on my walk home from the bus stop after $WORK; it was kinda cloudy, but not completely, and anyhow the crecent moon was awful pretty through the haze. When I got home I asked my oldest son if he wanted to go out w/the telescope after supper. He was enthusiastic, so I put the 4.5" reflector outside to cool while we ate.

Forty minutes was enough to bring in more threatening clouds, but we could still see the three of them. I set up the scope and had a look at Theopilus. A couple years ago my son noticed its distinct appearance, and asked what its name was. I looked it up, and have been fond of it ever since. This time, though, he couldn't pick it out...but he was still interested, so that was good.

I'd looked on Heavens-Above to see if the ISS was due to fly overhead tonight, and it was -- just before 7pm, right when we were outside. Sweet! Sure enough, we watched closely and there it was, bright as anything and moving just past the moon. But wait, wasn't it supposed to go across the moon? What the...

...and then one minute later, there was the real ISS, and it was going across the Moon (very cool!). And there was the other satellite, almost as bright, moving on a different track. As far as I could tell, both stayed the same steady brightness -- so no tumbling for our mystery satellite. We watched both 'til they passed into the Earth's shadow, then headed inside for the night.

First thing I did, of course, was pull up Heavens-Above again to see what this other satellite was. And I couldn't find anything! There was simply nothing listed anywhere near the time the ISS flew over, let alone something that was supposed to be that bright. No Iridium flares either. Stumped, I reported to my son that I had no idea what it was.

But then I realized that I'd been looking at the listings that were supposed to be brighter than 3rd magnitude, rather than the fuller list that went down to 4.5. It was possible this thing was in the fuller list, but was brighter than predicted (because the predicted angle of reflection was wrong, say). So I pulled up the full list and started looking at tracks.

Sure enough, there were a bunch that were overhead at that time. The ISS was the most obvious one, but looking at the map tracks this Delta II rocket was the one we saw, which had launched the Globalstar 26. Here's the ISS pass:

ISS pass

And here's the Delta pass:

Delta pass

The times don't match up perfectly. The Delta was predicted to reach max altitude at 18:44 and enter shadow at 18:50; the ISS was predicted to reach 10 degrees altitude at 18:51, max at 18:54 and shadow at 18:57. I didn't note the time we saw the first one, since it was right around 18:50 and I thought it was the ISS.

I told my son about all this and -- being the son of a geek -- he thought it was pretty cool. :-)

Also -- and this is completely unrelated -- how did I not know about M-a in Emacs? Ordinarily it's "backward-sentence", but in programming modes, it moves to the beginning of non-whitespace on a line. ZOMG.

Tags: astronomy geekdad emacs

Kaboing problems

I've run into problems with Kaboing, the Pogoplug I picked up and have been slowly prepping for use as my home web/email/SSH server. First, it stopped recognizing the USB stick that had the root filesystem, and would boot into the stock Pogoplug environment instead...which is still Linux, but not my Linux.

I tried installing the root on another USB stick, thinking that the old one was, well, old (it was one of n I have lying around the house). But that didn't work either: I still kept getting the Pogoplug environment instead. I tried removing extra sticks (I had three attached), leaving me with just one (new) stick and an external USB hard drive; still didn't work.

After much futzing about, I got it down to this behaviour: every other warm reboot works, mostly. By that I mean that every second warm reboot seems to detect at least the USB stick with the root FS, and sometimes the external hard drive, and boots up into my Linux (running Debian, natch); the other times, the stick(s) aren't detected and the plug decides to boot into the Pogoplug Linux instead.

I'm not the only one who's tripped over this. I've tried various things and haven't come up with a solution yet. I think an awful hack will be to put some kind of timed reboot into the Pogoplug environment. But I don't like that idea very much, and I wish I knew what was going on.

Tags: pogoplug

Shutdown postmortem, wikilove

Last night's shutdown went...okay. The turning-off-servers part went well, and I was able to do it all in less than half an hour -- not bad for an orderly shutdown. Turning things on went less well. Partly it's because I should be using IPMI commands instead of trying to SSH to the various ILOMs/DRACs and running commands; I kept getting error messages from Fab even though I could run the commands by hand just fine.

Partly, though, it's because about 80% of the Sun ILOMs needed to be rebooted in order to control the machines, report power status correctly, get a console, etc. That's annoying. In all other respects they're the most consistently good of their sort -- they work right off the bat, they don't crap out and drop off the network (hell, Dell) and they're simple. But they seem to get wedged, and I have to SSH in as "sunservice" (it's actually Linux under the hood -- shhhh) and forcibly reboot them.

And there's the usual assortment of hardware problems/irritations that the first reboot in a few months brings to light, like the second machine in a week with a possibly failing hard drive -- complicated, of course, by not having the tool around to actually query the RAID card to see how things are going. Worryingly, a reboot made (reporting of) the problem disappear. Good, I need another project.

In other news: I've had to abandon my brief infatuation with gitit, a git-based wiki written in Haskell. It is nearly perfect, but its syntax for tables -- based on Pandoc's extension of Markdown -- is bad, non-Orgmode compatible (Orgmode tables are SO AWESOME), and best ignored in favour of direct HTML. And when editing HTML for tables becomes your best option, I'm (sadly, regretfully, heartbreakingly) outta here. So for now, for $WORK, I'm sticking with Foswiki and my awful hack of a Bash function for editing it with Emacs:

wen () {
WIKIPAGE=${@};
sudo chown apache:wheel $WIKIPAGE ${WIKIPAGE},v;
sudo chmod 775 $WIKIPAGE ${WIKIPAGE},v;
rcs -l $WIKIPAGE;
$EDITOR $WIKIPAGE;
ci -mnone -t-none -u $WIKIPAGE;
sudo chown apache:wheel $WIKIPAGE ${WIKIPAGE},v;
sudo chmod 775 $WIKIPAGE ${WIKIPAGE},v
}

The chown/chmod (and thus the sudo) are needed to maintain web-editability for the pages...not that I use them very often, but for an eventual successor/coworker. I really miss Confluence-mode.

Tags: sysadmin

shutdown -h now HOSTALL

There's a power outage scheduled for our server room tomorrow night (which means I'm gonna miss the VanBrewers meeting, BOO HISS). I've been looking for a way to script the shutdown and startup of 50-odd servers, and here's what I've come up with.

Previously I've been using cssh, which works well enough for shutdown but not so well for startup (long story). Still, SSH is the way I want to go, so I looked at pssh and sshpt, but was unable to get both to work with a pseudo-tty to allow sudo. Then I came across Fab, and with a little bit of reading and a little bit of code I came up with something that should work.

Of course, the real problem is that I'm hand-coding so much of it: this server is HP and should be shut down like this, that server is Sun and should be shut down like so...really, I should be using ipmitool to do all this. But the mgt network is on a private subnet, I'm somewhere else, and this is the simplest quick thing I could do. We'll see how it goes.

(This half-assed blog entry brought to you by cold medication and a sinus infection. Whee!)

Tags: sysadmin

I'm gonna build me a cloud chamber

Sunday we all(1) went to the AAAS Family Science Day and ho boy, it was fun. The kids had fun, of course; the demos were aimed pretty much right at them, and there were stickers and lasers and more stickers and popcorn. Friends of ours showed up with their two kids in tow, and all the boys got to run around and shine lasers at each other's heads. My wife had fun cos hey! SkyTrain! that's fun. But also? I had fun. And by fun I mean ZOMG. Because among other things, the Physics Department(2) from UBC had a real, working cloud chamber. A CLOUD CHAMBER.

When I was a kid, I bought this book at a library book sale: a collection of Scientific American "Amateur Scientist" columns. There was all kinds of stuff in there, from how to build your own solid rocket motors to measuring the metabolism of rats (I think part of it was TAKING SAMPLES OF THEIR BLOOOOOOOD) to grinding your own telescope mirror. For a budding geek, this was simply endless entertainment.

But -- BUT -- there was also a column explaining how to build your own cloud chamber and watch cosmic rays decay before your eyes. There was also an offer to mail you a radioactive speck so that you'd see more exciting stuff, which I thought was possibly the coolest thing ever.

This may have been the beginning of my interest in particle physics, expressed in later years when I:

a) got a local welder to weld some copper pipe in a loop, in preparation for a sadly-never-completed circular particle accelerator (linear accelerators are for suckers and chumps);

b) sent a fan letter to Carlo Rubbia and was thrilled to get a personally-signed letter back;

c) went to university to take physics in preparation for a career at CERN (only to get distracted by the Internet and libraries that were open 'til midnight, and fail out two years later); and

d) was amazed that a coworker at my first sysadmin job was the son of the director of IT for CERN; I tried to get him to get me a job, and he said no, but he gave me a cool CERN swatch instead.

And in all that time, do you think I'd ever seen a real, live cloud chamber? Had I bollocks. I'd printed out pictures of bubble chamber tracks, read up on spark chambers, learned about emulsion tracks, but never actually seen a working cloud chamber.

This thing was cool. I had not realized how dynamic they were. They'd put in a radioactive source, of course -- maybe they had sent off for a radioactive speck back in the day -- but there were also cosmic rays and other natural sources of radiation leaving their marks. There were tracks appearing constantly, and then fading away; it was hypnotic to watch. This video shows exactly what I mean:

The woman giving the demo said that some of the tracks were muons. Dude! MUONS! I was seeing MUON TRACKS! And then I got embarassed 'cos I couldn't remember whether beta radiation was photons or helium nuclei (neither: they're electrons or positrons; gamma radiation is made of high-energy photons) and felt insecure about the whole prospect of being in the same room as all these scientists since I obviously needed a remedial course in shoelace tying if I couldn't remember what beta radiation was.

(My brain, it does not always make sense.)

And so but it turns out you can find a lot of instructions on how to build a cloud chamber (the Starbucks chamber gets big props for being a cool hack), forums, and even a company that will build one for you (starting price for museum-grade model: $48,000). Now I just gotta track down some dry ice.


(1) "my family"? "my wife and I and kids"? I think (by which I mean "worry", by which I mean "obsess") about these things.

(2) You damn betcha it's capitalized.

Tags: geekdad

That was the week that was

This week has been a writeoff. I took 2.5 days off sick (shoulda been 3), I slept for maybe four hours last night, and I've stared blearily at my work monitor more than I care to admit.

I did get some stuff done: updated one of my wireless routers to the latest version of OpenWRT (and promptly found problems), got njam working on the new incarnation of the MythTV box (the kids are thrilled), and listened, rapt, to my youngest son proudly show his friend around the house while I hid upstairs in bed, snuffling quietly. So there's that.

I've been reading "A History of Christianity". I long for footnotes, but more for comfort than anything else; other than that, it's pretty damn good. I've also got "Why Evolution Is True", and that's good too. I picked up Sue French's "Deep Sky Wonders", thanks to my ever-generous in-laws, and if the verdammt clouds ever clear up I hope to put it to good use. (Though I was proud, the last time the sky was clear, to have found NGC 1662 by Orion, which is mentioned in this book...I was surprised at how easy it was to find.)

Optional reading for the week: "Sun's Unified Storage 7210 -- designed to disappoint?". Bryan Cantrill is a class act.

Mandatory reading for the week: Terry Milewski's article on Section 34 of Bill C-30, which outlines the duties of inspectors, appointed by the minister under the act. Quote:

The inspectors may "enter any place owned by, or under the control of, any telecommunications service provider in which the inspector has reasonable grounds to believe there is any document, information, transmission apparatus, telecommunications facility or any other thing to which this Act applies."

...The inspector, says the bill, may "examine any document, information or thing found in the place and open or cause to be opened any container or other thing." He or she may also "use, or cause to be used, any computer system in the place to search and examine any information contained in or available to the system."

...The inspector -- remember, this is anyone the minister chooses -- is also empowered to copy anything that strikes his or her fancy. The inspector may "reproduce, or cause to be reproduced, any information in the form of a printout, or other intelligible output, and remove the printout, or other output, for examination or copying."

...Finally, note that such all-encompassing searches require no warrant, and don't even have to be in the context of a criminal investigation. Ostensibly, the purpose is to ensure that the ISP is complying with the requirements of act the but nothing in the section restricts the inspector to examining or seizing only information bearing upon that issue. It's still "any" information whatsoever.

Horrible. Email your MP today.

Tags: politics geekdad books

Submission to the Trans-Pacific Partnership Consultation

(Many thanks to Michael Geist and Russel McCormand for the kick in the ass to email this. Today's the last day -- all it takes is an email.)

Like many Canadians, I am concerned about the secrecy surrounding TPP negotiations -- and even more concerned about the details that have emerged. Canada should not be participating secret negotiations that will affect:

  • Copyright term extension
  • Digital locks
  • ISP liability

The importance of each of these areas on their own, let alone together, should convince anyone that the treaties affecting them must be negotiated openly, transparently and (with all due respect) with much, much more public consultation than has occurred so far.

I can think of no better person to invite into this process than Professor Michael Geist of the University of Ottawa, whose own submission to this consultation I endorse whole-heartedly. I strongly urge this government to involve him at the earliest possibility; you will serve the interests of Canadian citizens well by doing so.

Thank you for your time.

Sincerely, Hugh Brown

Tags: politics

Emacs workgroups, birthday beer, smart people

Random notes:

  • I recently came across Emacs Workgroups, and holy crap is it amazing. From the description:

It's tedious setting Emacs' window layout just the way you like it -- splitting windows, adjusting their size, switching to the right buffers, etc. And even when it is set, it won't stay that way for long. On top of that, you can't save your window-configurations to disk, so you have to start over from scratch every time you restart Emacs.

There are solutions out there to parts of the problem -- elscreen, revive.el, window-configuration-to-register, etc. -- but none provide a complete solution. Workgroups does.

It is so choice. If you have the means, I highly recommend picking one up.

  • Samantha Wright is answering biology questions again on her Slashdot journal. She's smart, well-spoken (-written) and generous with her knowledge; it's well worth taking a look at all her entries.

  • A while back I brewed a double IPA that came in around 9% ABV. I used almost a pound (!) of hops, most of them Falconer's Flight. It turned out pretty well...but I made the mistake of bottling some of the sludge at the bottom with all the hop gunk. I thought it would settle out, but hop bits are surprisingly floaty, and I think I'm going to end up pouring it through a sieve of some kind. (Incidentally, I have not brewed at all this year. Yes, it's only 6 weeks in, but still.)

  • I am turning 40 tomorrow. (!!) I've taken the day off work, my wife and I are dropping off the kids at my in-laws' 'til tomorrow, and we're heading out for...well, an afternoon on the town :-), heading to Saint Augustine's to see what they've got on tap.

Tags: emacs beer

Cfengine 3 Syntax Part III (or, How to debate smart people in 140 character snippets)

More conversations with Mark Burgess via Twitter (a continuation from here. I should note that this was all a week or so ago now; I've been meaning to put this up here.

markburgess_osl: @saintaardvark Doc is "what" code is "how". I believe the lasting intention comes before a specific implementation. #devops #sysadmin

saintaardvark: .@markburgess_osl Hm. So let's see if I've got this right: the programmer in me notices lots of overlap in my Cf3 config...

saintaardvark: .@markburgess_osl ...and wants to consolidate. Cf3 syntax makes this a hairy proposition at best. But this is not really a problem...

saintaardvark: .@markburgess_osl ...because I should be thinking about this as documentation (which can be long) of the desired system state...

saintaardvark: .@markburgess_osl ...rather than code (where the drive is for efficiency and lack of duplication). Have I got that right? #sysadmin

markburgess_osl: @saintaardvark Documentation => focus on end state (like GPS), Code => focus on start state + directions. The journey is irrelevant.

markburgess_osl @saintaardvark Docs also improved by seeing themes and patterns. That is still WHAT not HOW. So no contradiction.

So putting this in practical (can't resist the temptation to say "less Yoda-like") terms: what I think he's saying is, don't worry about code duplication or getting clever; you're documenting desired system state, and it's okay to be verbose.

Using the example I started with, it's okay to have NTP settings in multiple places (because SuSE needs two files, Solaris 1, etc). The coder in me wants to clean those up because it's all NTP, but the documentationist ("writers", I think they're called) relaxes and says "Can't have too much documentation." Which is fair.

But then I worry about having Multiple Sources of Truth(tm). The advantage of the first setup is that when I change the NTP server, it's ALL in one place; in the second setup, I have to remember: did I change it for SuSE? Solaris? CentOS? I've learned the hard way to be wary of such setups. I nearly always miss something; that's why I'm aggressive about consolidating.

I'm still mulling all this over.

Tags: cfengine

Mac address suddenly aa:00:04:00:0a:04?

This bit me in the ass today: my workstation's MAC address was suddenly changing to aa:00:04:00:0a:04. The problem turns out to be Decnet, which got added when I installed cmus. RAWR.

Tags: ubuntu networking

New project layout in git

I'm starting to switch to git at work, and I'm rethinking my usual new project workflow layout synergy hashtag a bit.

(Gah.)

What I'm thinking about is something like this:

  1. Decide I need to work on a new project that should be in revision control. (Question: when should you not put a project in revision control? Answer: when you're dead; it will fuck with the commit logs.)
  2. Run a script.

The script will:

  • Prompt for a project name and a one-line description
  • Check out git://git.example.com/newproject, which will contain:

  • notes.org

  • tests directory

  • perl, python and shell templates (just in case)

  • a README which contains the description

  • Set up a branch called "work" and a branch called "public"

  • Add the central repo as a remote and clone/push it there

It's possible I'm overthinking this. But I seem to be doing this a lot. I should check to see if there's something like this out there already.

Tags: revisioncontrol

Example content

Howdy! This is an example blog post that shows several types of HTML content supported in this theme.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.

Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.

Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.

Inline HTML elements

HTML defines a long list of available inline tags, a complete list of which can be found on the Mozilla Developer Network.

  • To bold text, use <strong>.
  • To italicize text, use <em>.
  • Abbreviations, like HTML should use <abbr>, with an optional title attribute for the full phrase.
  • Citations, like — Mark otto, should use <cite>.
  • Deleted text should use <del> and inserted text should use <ins>.
  • Superscript text uses <sup> and subscript text uses <sub>.

Most of these elements are styled by browsers with few modifications on our part.

Heading

Vivamus sagittis lacus vel augue rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Code

Cum sociis natoque penatibus et magnis dis code element montes, nascetur ridiculus mus.

// Example can be run directly in your JavaScript console


// Create a function that takes two arguments and returns the sum of those arguments

var adder = new Function("a", "b", "return a + b");

// Call the function

adder(2, 6);
// > 8

Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.

Gists via GitHub Pages

Vestibulum id ligula porta felis euismod semper. Nullam quis risus eget urna mollis ornare vel eu leo. Donec sed odio dui.

400: Invalid request

Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec sed odio dui. Vestibulum id ligula porta felis euismod semper.

Lists

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

  • Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
  • Donec id elit non mi porta gravida at eget metus.
  • Nulla vitae elit libero, a pharetra augue.

Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.

  1. Vestibulum id ligula porta felis euismod semper.
  2. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
  3. Maecenas sed diam eget risus varius blandit sit amet non magna.

Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.

HyperText Markup Language (HTML)
The language used to describe and define the content of a Web page
Cascading Style Sheets (CSS)
Used to describe the appearance of Web content
JavaScript (JS)
The programming language used to build advanced Web sites and applications

Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam quis risus eget urna mollis ornare vel eu leo.

Images

Quisque consequat sapien eget quam rhoncus, sit amet laoreet diam tempus. Aliquam aliquam metus erat, a pulvinar turpis suscipit at.

placeholder placeholder placeholder

Tables

Aenean lacinia bibendum nulla sed consectetur. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Name Upvotes Downvotes
Totals 21 23
Alice 10 11
Bob 4 3
Charlie 7 9

Nullam id dolor id nibh ultricies vehicula ut id elit. Sed posuere consectetur est at lobortis. Nullam quis risus eget urna mollis ornare vel eu leo.


Want to see something else added? Open an issue.

Tags:

Plans for the PogoPlug

So a while back I bought a PogoPlug that was on sale: $40 for a little 1.2GHz server w/256MB RAM, 512MB flash and 4 USB ports. Such a deal! These instructions got me Debian, and I named the thing Kaboing. I thought I'd set up our websites on it, get rid of the noisy old P4 I had. Then it sort of fell by the wayside...

...until the Great Electrical Anomoly/Hardware Harvest of 2012 (the Mayans tried to warn us!). Now I'm hosting stuff at Linode, and it's time to get working on this.

Right now I've got three USB flash drives attached to the thing: 1GB for swap and root, 512MB for /var/lib/mysql, and 2GB for home. This is a tight fit, especially the root; I've got about 100MB free there after excluding man pages, documentation and the like. Mind you, this does give me the usual stuff I'd put on a server: Emacs, LAMP, dstat, yadda yadda. (Man, remember when...)

I've also got an external 500GB hard drive that I've been using for backup (and which saved my ass when the P4 broke), and I plan on using that more. Home directories, definitely; MySQL possibly too. I'm worried about wearing out the random USB drives I've thrown into this thing, or silent corruption of the files stored on it. (That might be silly.)

The load on the machine is something I'll have to think about. I've decided on Nginx for the server -- good chance to get familiar w/it -- but I think I might stick Squid or some such in front of it. My site is static, but my wife's and my sister-in-law's are Wordpress sites, and I think I'll notice a real slowdown there if I'm not careful. (Though my wife just announced that she's quitting her blog, at least for now...sniff...double shame, 'cos her site easily got 10x the traffic mine ever did. :-))

Anyhow...I keep reminding myself I can take my time with this.

Tags: pogoplug

What's Jekyll?

Jekyll is a static site generator, an open-source tool for creating simple yet powerful websites of all shapes and sizes. From the project's readme:

Jekyll is a simple, blog aware, static site generator. It takes a template directory [...] and spits out a complete, static website suitable for serving with Apache or your favorite web server. This is also the engine behind GitHub Pages, which you can use to host your project’s page or blog right here from GitHub.

Find out more by visiting the project on GitHub.

Tags:

Testing a new web server w/o fiddling w/DNS

At $WORK I'm slowly migrating our website to a new server. I came up with a Small but Useful(tm) program called Thornhill to help; it looks at Apache Alias directives, then queries both the old and the new server to make sure the results are the same. Since the new server doesn't have DNS pointed at it yet, this requires some trickery.

I'm using Perl's WWW::Mechanize module to do this, and after some thought I figured I could just add a new Host: oldhost.example.org header to the request. And that works; even though the request is going to the new host, it's still asking for the URL of the website. IOW, it's querying it as though it were live. And lo, my tests came back mostly passing, and there was much rejoicing.

Except that I noticed I was getting redirects for some things. Which makes sense -- /java_app should probably go to /java_app/, and then to /java_app/home.html?jsessionid=666. But those go to the current, live site:

  • Request goes to test site: http://newhost.example.org/java_app, but with Host: oldhost.example.org
  • New site redirects to http://oldhost.example.org/java_app/
  • Script follows the redirect and sends the request directly to oldhost...the production one that I already know is working.

So basically Thornhill works up until the point where it gets redirected. ARGHH.

In theory I can override this in the module, but this turns out to be surprisingly difficult. And WWW::Mechanize has a TODO list a mile long, including an option to not follow redirects. And I ran into the same dang bug I ran into five years ago.

I'm trying Python now. But I'm starting to wonder if I should just abandon this approach and fiddle with the /etc/hosts file or something. This is getting...tedious? finicky? ridiculous? Something.

UPDATE: Python Requests is the bomb.

Tags:

The week of dying hardware

Last night I noticed that my MythTV box wasn't up, so I turned it on. I decided it would be a good time to do some work on it that I've been putting off for a while. Ten minutes later, I rebooted to test it...and spent the next ten minutes listening to whiiiir whiiiir beep click click click, over and over again.

Digging through this blog, turns out I actually bought this thing in April 2005...so it has lasted a good long time. (Cue guilt about burning through natural resources and other people's pain.) I'll have to see if I can get it going again.

Tags: hardware mythtv

Linode saves my ass again

Last Wednesday we had a power outage at home; it managed to take out the aging P4 I used to host this site (and be my firewall; bad sysadmin! no donut!). The only monitor I had in the house had given up the ghost some time ago, so I was left unable to figure out why the damn thing wouldn't boot.

Fortunately I'd been backing up to an external hard drive, so the recovery plan went like this:

  1. Drive to London Drugs, buy random cheap wireless router, drive home
  2. Connect router to wall
  3. Sign up for VM with Linode

They've saved my butt before, and as before I couldn't be happier with them. God's own bandwidth to Debian mirrors, and the machine feels fast as anything. 512 MB RAM and 20 GB disk space for $20/month. I really, really wish they were hosting in Canada; I'd be seriously tempted to stay w/'em for the long run. But as it is, I think I'm going to get working on getting that PogoPlug running my sites.

Shame about the timing of the outage, since I was building some serious momentum in writing here. But I'll keep plugging away.

Tags:

Cfengine 3 Syntax Part II

Mark Burgess was kind enough to respond to my earlier post about Cfengine syntax:

markburgess_osl: @saintaardvark (soothing) Syntax is definitely an acquired taste (re perl ;)). The list-ref prob can go away soon. Think doc not code 4 cf3

And then, via tweetsification, we were all like:

saintaardvark: .@markburgess_osl Heh, thanks for the reply -- I was going to ask you about this. Fair pt re: syntax being an acquired taste...[1/2]

saintaardvark: .@markburgess_osl ...but any chance the mess of brackets will be reduced? [2/2]

markburgess_osl: @saintaardvark trade one set of () for -> Don't see much point in that. $() has long precedence in sh / make etc. It delimits clearly in txt

saintaardvark: .@markburgessosl Fair enough, but I'm also thinking of eg "$(services.cfgfile[$(service)])": dollar bracket scopedot square dollar bracket

markburgess_osl: @saintaardvark I agree it's clumsy, but it's also an edge case. You rarely write this if you make good use of patterns. Perl also ugly here.

But this layout came from their own dang documentation! I feel like I'm stuck here:

  • This config works fine for single-file config
  • But there's lots of stuff that's not single-file
  • Can't yet iterate over remote lists (though prob going away soon)
  • So for now that leaves iterating over local lists
  • Which seems to mean lots of duplication

[old entry recovered from backup!]

That last point: what I mean is that the whole appeal of that layout (pattern/whatever) was that you could just say fix_service('foo'), and The Right Thing(tm) would happen. Now I have to rethink this; it seems to mean either having lots of bundles like "fixntp", "fixautofs", etc -- with lots of sections like:

vars:
  SuSE::
    "files" slist => {"this", "that"};
  Centos::
    "files" string => "just_this";

...or else having separate "fix_service" bundles for each class. (Forgive me, I'm thinking about all this w/o having a Cf3 instance to play with in front of me.)

I'm trying not to sound whiny here; I'm grateful for Cf3, for the documentation (which is pretty extensive), and that Mark took the time to respond. But this is frustrating.

Tags: cfengine

Pointing LWP::UserAgent (and WWW::Mechanize) at a self-signed certificate

If you're using LWP::UserAgent -- and if you're using WWW::Mechanize, you're using it -- you can point it at a self-signed SSL certificate like so:

HTTPS_CA_FILE=/path/to/cacert.pem <script file>

Tags: perl toptip