::::: : the wood : davidrobins.net

My name is David Robins: Christian, lead developer (resume), writer, photographer, runner, libertarian (voluntaryist), and student.

This is also my son David Geoffrey Robins' site.

Olive Garden with Chris and Janet

News ·Friday February 1, 2013 @ 22:49 EST (link)

Friday evening we went to Olive Garden in Pinellas Park with some friends from the area; Chris, who I had met before (first contact on Facebook, and then we went out shooting at Wyoming Antelope), and his, hm, permanent girlfriend? (not married but together seven years) Janet, whom I had not met before. We got there at 1900 and neither of us had thought to make reservations, so we had a 35-minute wait, but the time passed pretty quickly talking about guns and anarchy and life.

I'm not a huge fan of Italian food, but I had the "Mixed Grill" which was very good (perhaps because it didn't have any cheese in it): chicken and steak skewers with potatoes and vegetables. We were there until around 2130, just having a leisurely good time, and will try to do it again in not too long.

Books finished: Stop Stealing Dreams, Chaos Theory, Foundation's Edge, The Corridors of Time, Clean Code, Children of Morrow, Getting Things Done, Every Day Is an Atheist Holiday!, The Bootstrapper's Bible.

Christmas in Canada

News ·Monday December 31, 2012 @ 13:53 EST (link)

And this is the way of it (dates in December, of course).

14: Struck out for WV after work—on the road by ~1800 (I went in to work early).

15: Stopped in WV for the day and for Honey's birthday.

16: Arrived in Canada in time for Brockview's Christmas program.

19: Went to the Yades at 6pm; had Chinese food, played some board games; Bethany Trotter was there a bit later and so Jon brought out some of his firearms, including a pellet gun we shot from the porch. Had a great visit.

21: Scott's party! Honey couldn't come because she (thought she) was getting together with Bethany. Good time, played a fun (yet awful!) game called Cards Against Humanity. Quite a snowy night, low visibility, high slipperiness, so I had trouble finding the place especially as Google Maps took me down a road that didn't exist so I ended up driving up and down a stretch of Highway 20 looking for a road that wasn't there until I called and got better directions. Met Patrick there briefly, and found he's a fellow voluntaryist and gun enthusiast (via Facebook, later).

22: Uncle Murray had us over in the afternoon (3-5pm) as well as various other cousins for food and drink and cheer.

23: Went to Thorold South for their talent show in the morning and food later; good show, little long, good food too though.

24-26: Family Christmas, details are secret.

27: Took the Trotters to Swiss Chalet, an then back to their place for coffee.

28: Took Emily and Julia to Fonthill's only hangout, the MyPlace Bar and Grill; got to talk a little, had some fun.

29: Left in the morning so we would get there for church Sunday. Very snowy roads, especially US-19.

January 1: Left for home to be back at work for the next day.

Books finished: All Marketers Are Liars (With a New Preface), Tribes, The Personal MBA, Jack: Straight from the Gut, Linchpin, The Dip.

Roundcube is in, Horde/IMP is out

News, Technical ·Thursday November 29, 2012 @ 21:16 EST (link)

Horde/IMP (webmail) is out; it didn't manage to come back after the crash and Roundcube is much nicer, easier to setup, etc. I'm even using it myself (I had installed Horde for Honey), rather than Mutt, although mass operations/moves are better done from the command prompt.

The only few issues with it are (1) not moving to the next message after deletion, (2) having to re-select a message to operate on it (e.g., delete) if the preview pane is up after it is selected, and (3) sometimes it sorts new messages last, even sorting by date; it seems to do that mainly with injected (programmatic) mail.

Books finished: Purple Cow, What the CEO Wants You To Know, Hogfather.

Thanksgiving in WV

News, Work, Guns ·Monday November 26, 2012 @ 22:00 EST (link)

Freedom Scientific had a company picnic Wednesday the 21st (1pm at Lake Seminole park); I was going to work offsite then, but switched to Monday to make the picnic and so we had the same amount of time for Thanksgiving. There was a good showing—not too many had left for vacation early—and they grilled some pretty good burgers. I brought a past Office ship gift, an HD video camera, and tried it out for the first time taking some videos (still haven't edited them yet…). We left after we ate, and didn't stay for games; we had a lot of driving (13-14 hours).

We didn't leave the apartment until 1845; we drove straight through and arrived in the morning around 0830, and slept some. Went to papa (Honey's grandfather)'s for Thanksgiving later on. Got some work done Friday and Saturday. Friday afternoon I went shooting "up the mountain" with Ray and my father in law; we shot paper targets and glass coke bottles. The distance (about 50 feet) was a little long for pistols, but doable, and really too close for the Ruger 10/22.

Friday evening went to see Breaking Dawn Part 2 with Honey, Emily, and Honey's mom—ate at Chick-fil-A first (which worked out well because I wasn't tempted to buy any overpriced movie food/drink). Honey's papa asked me to speak Sunday evening, so I spoke from Nehemiah 8 about the reading of the book of the law. We left Monday morning, rolling out around 0645 and getting home around 2130 (stopped at a gun store on the way in Georgia; bought a pistol rug for the new gun).

New Sig P226 Elite Dark

News, Guns ·Wednesday November 21, 2012 @ 18:38 EST (link)

I finally "pulled the trigger" on a new handgun: a SIG P226 Elite Dark in 9mm that I'd been looking at for a long time. 15 round magazine (illegal in Canada, Commiefornia, and much of the Nazi Northeast; my one handgun that takes a magazine with ≤ 10 rounds, my Springfield 1911 EMP, is still illegal at least in Canada for having "too short" a barrel).

I bought it on Wednesday the 14th (GunBroker auction, from Osage County Guns in Missouri; there were no opposing bidders). I declined the insurance and used a credit card instead (which provides insurance of its own); I had it sent to a local FFL dealer, Wain Roberts Firearms, because they offered a $15 FFL transfer fee for members of Florida Shooters Network. I picked it up Monday the 19th. I was worried they'd give me grief about the three day waiting period since I don't have a Florida concealed carry permit, but apparently they knew the three days started from the purchase date, which would have been the 14th, as the invoice showed.

I took it to shoot at my club, Wyoming Antelope, on Wednesday morning; great gun, crisp trigger; I was shooting nearly as well with it as my Glock 34 almost immediately, keeping in the black center ring at 30 feet without difficulty.

Books finished: Execution.

Looking at cars

News ·Saturday November 17, 2012 @ 16:07 EST (link)

We hit a few car dealerships along US-19 today: I had thought about moving up from my 2000 Toyota Solara SLE to a Lexus or similar; so since a number of dealerships were nearby on that road, we hit Toyota (to look at Avalons mainly), Acura (TL), Lexus (ES350), Infiniti (G37) (and the Mercedes dealer next to it, E-class), and BMW (528i).

Avalon didn't compare well to Acura or Lexus, and cost about as much, so it got ruled out; I loved the Acura TL; the Lexus ES350 was nice but not as sporty as the TL and the interior looked a bit blocky; the Infiniti lacked interior features and had an annoying high "hump" at the back due to the RWD drive train; and BMW and Mercedes wanted too much for too little. We had to wait a very long time for an Infiniti salesman to talk to us; contrariwise we were likely positively influenced toward Acura by the friendly and genuine-seeming salesperson we talked with (Chris Duncanson). (Sure, they're all trying to make a sale, but some can fake sincerity better than others, er, I mean I'm too cynical and different salespeople give different impressions.) The Lexus salesperson seemed to be a good guy too. Lexus had a beautiful white/black leather IS 350C convertible on the floor.

But ultimately the TL is winning—specifically, the SH-AWD model with the Advanced package in either red/black (it might not come that way, so perhaps red/gray) or black/black; it's priced competitively, has a great reputation, is somewhat more sportier than the Lexus (in return for less of a smooth ride perhaps, but I'm not that old yet), and I like the interior design and features. Naturally I looked at reviews on sites like Edmunds.com and on AcuraZine's forums (even joined to get access to a file showing how to replace the internal HDD).

Books finished: Gödel, Escher, Bach.

The mail server is back

News, Technical ·Friday November 16, 2012 @ 17:02 EST (link)

Most of the rest of the mail files have been recovered and internal DNS and the mail system is mostly back—Courier-IMAP, Qmail, SpamAssassin—except for an internal webmail system (Horde/IMP), which is giving trouble and has always been a bletcherous piece of PHP crap anyway. It's nice to be receiving and sending mail locally again. Given that it was down for two weeks I may have missed some mail that hasn't been resent, or been bounced from some mailing lists; others are amazingly resilient (or perhaps, "stubborn") and have kept on sending to me. All configuration files were recovered, so it was just a matter of merging them with the reinstalled Gentoo packages, and tracking down a few unexpected errors via log files and adding the daemons to system startup. Now that it's stable it's been backed up (rsync) and will be periodically.

Recovery of some mail files was laborious; a group of inodes were destroyed covering some mail directories and files; the directories were recovered by a disk scan: first, the . entry points to its own inode, and second, by looking for blocks that look like directories containing distinctive maildir files (starting with the Unix time) and subtracting off known/reachable blocks to yield orphans (much like a mark and sweep garbage collector). Another similar scan was done for files that look like mail messages (with a Delivered-To: header in the first 256 bytes). I also recovered a few from Mutt's cache, removing dupes using a python program mapping file digests to filenames. All in all, I wrote about 1000 lines of C++ (saved some work by using libext2fs) and 500 lines of Python (to process block lists etc.).

DTI Data: case concludes on a high note

News, Technical ·Friday November 16, 2012 @ 13:24 EST (link)

I mentioned earlier some dissatisfaction with DTI Data, the company that I used to recover my lost disk. I went in today to return the last loaner USB drive they had given me, with the raw disk image on it rather than their rather poor attempt at recovering files. I called first, since they said they were trying another slower recovery method to recover more files, but that had not yielded any fruit (again, they had not called me, and I don't think they ever did, no matter what they promised). I talked to the technician and explained how I had used the second superblock to mount the drive (and was surprised their software had done so badly) and had been able to recover just about everything using that and various disk scanning to find orphaned files and directories.

Since, he said, I had to do most of the software recovery myself, he gave me the 1T Toshiba USB disk that I was returning. That was pretty good of him, and likely accounted for the cost of software recovery, with hardware recovery—that I couldn't do myself—being the bulk of the total cost and the value-add they provided me. That did make me feel better about the company; it was a nice gesture. I would recommend their services; just stay on top of them regarding communication, and realize their Linux (ext2/3) filesystem recovery at least is somewhat lacking (it'll strew files all over the place and miss a lot). (However, I know both filesystems even better than I did before, and in the past I have implemented drivers for them; if you have a Linux disk that needs recovery, if you throw enough money at me I might be able to help you out….)

Books finished: A Dance With Dragons.

Downtime due to disk failure

News, Technical ·Saturday November 10, 2012 @ 03:12 EST (link)

The server's primary disk, a 500GB Seagate SATA drive, crashed hard around October 24. The kernel image loaded but the main partition would not mount. Attempts to copy the disk to an image to work on it were continuing to time out. I searched around and found a local data recovery company, DTI Data Recovery that seemed to know what they were doing (I shopped around a little and another one I did talk to for a while gave me no confidence at all).

DTI Data occupies offices squeezed into a side tunnel in a strip mall in South Pasadena, about 20 minutes drive from home/work. It's convenient that they're that close, though; turnaround time by mail, which seems to be usual for many of their customers across the country, would be much worse. We brought the troubled drive in on October 26, and were quoted two prices: $495 if data could be retrieved without opening up the disk, and $895 if it had to be opened. The second one turned out to be necessary.

The first data I got back—on a 1TB Seagate drive I provided—was a real mess, and it only had /home on it. Directories and files were scattered all over the place; for example, photos were in my mail directory at random locations; at first I thought the drive was just that scrambled, and figured on reorganizing them back based on file timestamps and EXIF data. Much more data—they said all of it—was available, and apparently there had been an internal miscommunication. The paperwork required filling out vital directories, so I listed several, with /home first (and /var, /etc, and others, and then "everything you can find"), and someone apparently translated the list as "he only wants /home". DTI Data was also not very good about communicating with me; I generally had to call them to get any updates; once I was specifically promised a call later that day, but then the recovery ended up taking until Monday, and another time a call back in a half hour, but nothing for three hours until I called them.

They did recover some more data the next time, but there was still a lot scrambled and missing. Was the disk really that bad? I eventually asked for an image—a block-by-block copy of the disk, rather than recovered files, which they gave me, as with the recovered files, on a Toshiba 1TB USB drive. They warned me it wouldn't mount, but I had figured on that.

It turned out it did mount with the most basic data recovery due diligence: use the second superblock (short but key drive information, which is fortunately duplicated in every group, of which there are about 4000). First I had played around with it a little using libext2fs (from e2fsprogs) (old but relevant PDF documentation), skipping to the second superblock in the ext2fs_open call, reading the root inode, etc., and figuring the disk wasn't in completely terrible shape. I ran dumpe2fs to dump the superblock and group descriptors for reference, and played around a little with debugfs. I couldn't mount the image as ext3, which it was, because the journal was corrupt (even with noload), but mounting it as ext2 and skipping to the second superblock (read-only, of course) did the trick and I was able to access most of the files. (At this point I was working on a copy of the image on another 1TB Seagate SATA drive I had bought: copied using rsync, it took 4h21m to copy the 500GB image file from the USB drive.)

In particular, files that DTI had missed completely or scrambled into the strangest locations were plainly accessible; I worry about the recovery software they're using. I ran a find . -type d from / and got a basic idea of what inodes were bad (at this point after considerable investigation I believe damage is concentrated in a couple blocks worth of inodes (32 per 4K block). This is painful for the files that are lost, but then, recovering orphans is just mark-and-sweep (figuring out which goes where is tricker).

By this time I had set up a new Gentoo install on yet another 1TB drive and had it running well enough to provide NAT (local networking) services (and access it from my laptop wirelessly). But there was a long road to go to restoring web and mail even if most of the files were there.

For directories—most of which were either caches, which don't matter, or mail files, which do, since the . entry at the start points back to the directory's own inode, tracking down most was easy (although an entire scan of the disk, even just reading the first 24 bytes of each block, takes 43 minutes); I also logged children of the bad inodes (matching the .. inode). I ran another scan using a heuristic and then boost::regex (g++'s regex support is terrible) to find blocks that looked like Maildir directories (only a few of the missing directories were more than one block, and not all of their block entries were bad). From there it remains to determine the known good blocks, subtract them from those found, and figure out which directory the found blocks belong to (order doesn't really matter; filenames do not cross block boundaries—good design there, Rémy/Theodore).

Services are gradually coming back up: the Apache servers (dynamic and static) for davidrobins.net were first, with i4031.net, my resume, internal address list (needed some recovery), SSL (likewise), my Voluntaryist Wiki, and Code Visions. The next big one to tackle is mail, which involves several programs and their config files (which all need to be copied over or merged appropriately from the old mounted image): Qmail (and Fastforward), Courier-IMAP, Maildrop, Mutt, and Horde/IMP (for Honey). The work continues.

Books finished: Smart and Gets Things Done Joel Spolsky's Concise Guide To Finding the Best Technical Talent, Peopleware.

Kayaking

News ·Sunday September 30, 2012 @ 20:04 EDT (link)

I went back to Lettuce Lake regional park again—just me this time—to kayak for the first time. $2 entrance, $25 kayak rental. I had to let them hold on to my driver's license, and picked up a paddle, life jacket, and key at the entrance station. I put the paddle in the trunk but it stuck out so I used a tie-town. Walk down to the launch, unlock the kayak, put it in the water; about the same as a canoe, as was getting in: it's all about staying low and maintaining balance (after I cleared out or killed the large spiders in the back of the kayak). (This was a sit-on-top kayak.)

There really wasn't much to it: grasp the paddle with the concave edge of the blade toward you and alternate left/right strokes. Sometimes I'd double-paddle on one side to help turn, or back-paddle; but it later became easier to take a stronger stroke on one side to turn while maintaining rhythm. I was out for a couple hours; I went past most of the boardwalk, including the lookout. Saw several wading birds and ducks close-up; no gators; no other kayaks out, but a few canoes. Altogether a good experience.

<Previous 10 entries>