March 18

More Insights on the Hobbit Walk

This is sort of in line with my previous post, as I was a little frustrated (with myself) that I’d not had any progress on the Hobbit Walk (there’s another reason, too).

Anyway, on to what I’ve found.

First, it’s a little frustrating to name a race.  Naming is one of the hardest tasks there is… well, besides cache invalidation.  I should be able to dynamically set the name of the race, because I’ve already stored the list of participants.  I kept teetering between dynamic versus static naming.  Ultimately, though, it seems like static (or maybe “arbitrary” would be more apt) naming.

Second, it’s nice to know who created the race.  Right?  That allows explicit listing of the races I’ve created, allowing “creator” permissions (like deleting them).  Maybe I’m waiting on the other person to accept (which I may not have considered yet).  Or I want to see all of my races, including all the ended ones.

Third, sometimes I try to normalize the data too much.  This one’s another tough one.  When I started working on TTORP, I had very non-normalized data: I wanted to get something up and running fast, so I just threw a bunch of arbitrarily-named fields in a database, all of which were just text… I was bit by this laziness later, because I had to pay the technical debt.

I found all kinds of other little things in the process.  Countless little nuances that I could spend all night enumerating, finding even more in the process.

Anyway, the bottom line is that I’ve made progress.  I’ve got more information in my test database, which will help me to visualize things.  At this point, unless I find more problems, I should be able to start spitting out some progress information in the very near future.  Stay tuned!

Category: Code, Health, Hobbit Walk, Software Development | Comments Off on More Insights on the Hobbit Walk
March 18

Programming Isn’t Just Typing

There’s a lot more to programming than just typing.

Somebody once said, probably jokingly, that what I was doing amounted to nothing more than typing.  It might have been one of those things where they say, “I’m joking,” afterward to keep me from being offended.  The first time it was said, it was funny.  The next few times, it lost a bit of humor.  After more than a dozen times, I have a hard time faking a smile.

The point here is that programming follows the 80/20 rule: 80% thinking and/or planning, and about 20% actually programming.  The typing part is actually a really small part… of that 20% programming part, about 80% of it ends up being debugging and testing.

Category: Code, Rant, Software Development | Comments Off on Programming Isn’t Just Typing
March 9

Why I Just Can’t Get Stuff Done

It seems like I’m always chasing my tail.  I start doing one thing, and it spirals into all kinds of other things.

First, I start by working on a web application of mine.  I start up a browser, and I get notifications that I need to upgrade, that browser is no longer supported.

Fine.  I go to figure out how to get the newest version of that browser.

I could download the most current version, and install it into my home directory, or… of COURSE the other option is to install a newer version of Linux.  Because, why the hell would there be an easy way just to get a repository that lets me get updates for the most current version of Firefox (or Google Chrome, or whatever)?

Fine.  I go download the newest version of Linux.

Wait.  What do you mean, I’m running 32-bit?  I could be running 64-bit!  Things are so much better that way!

Uh-oh.  I can’t just do an upgrade from 32-bit to 64-bit.  That doesn’t work.  It might not work to upgrade from 32-bit to 32-bit… ugh.

Fine.  But I’m not going to use up another DVD just to get a newer version of Linux.  That’s annoying, it makes the upgrade slower, and… ugh.

Fine.  Spend a few hours figuring out how to create a bootable USB drive.

What do you mean, the newest version of UNetBootin doesn’t support my USB drive?  I HAVE TO FIND AN OLDER VERSION?!?!

Fine.  Get the older version.

Hours and hours and hours later, with a bunch of errors, a wiped USB disk that doesn’t seem to mount anymore at all…

FINE.  I’ll burn the damned DVD.

Wait… if I do this, I have to wipe out my home directory.  That means I lose everything, and I’ve gotta go through this painfully long process of backing up and restoring that data… why don’t I put my home directory (/home) onto a different partition?  I’ve got an SSD (Solid State Drive), it should be crazy fast.  Do it.

FINE.  Figure out how to re-partition my drive.  Burn ANOTHER disc, with Gparted on it.

Wait.  Why can’t I eject my DVD drive?  I press the button and… nothing.

FINE.  Turn off the laptop, take out the screw that holds it in, and… WHAT?!?!? IT DOESN’T COME OUT?!?!?!

Hours go by.  Then days.  Finally, for no good reason whatsoever, the damned thing starts working again.  WTF.

FINE.  Burn Gparted.  Boot off it.  Resize the partition, should be simple.

Resize the drive, so there’s room for the home partition… wait for HOURS until it’s done.  I have NO IDEA WHY.  It’s a Solid State Drive.  It’s like FIFTEEN THOUSAND TIMES FASTER than the original drive.  And it’s acting like it’s fifteen thousand times SLOWER.

HOURS LATER, resize.  HOURS LATER, move.  HOURS LATER, resize again.  HOURS LATER, move something again… not sure why, it’s taken so long, I’ve almost forgotten WTF I’ve been doing this for.  Fix the fstab (file system tab) so it boots.  Reboot.

Hooray!  Now I’ve got a separate /home partition!  WOOT!

Fine.  Time to reinstall, now it won’t be too difficult.  Boot off the new, shiney, 64-bit Linux Mint disc.  Choose “something different” so I can have a separate root (“/”) and home (“/home”) partition.  Even though it takes a while because the DVD drive is slow (compared to a thumb drive install), I reboot and it’s the shiney new Linux…

WAIT!!! WHERE’S MY DATA?!?!

Oh.  I told it to keep my /home partition, but I forgot to tell it to actually boot up with that partition mounted to /home… right.  So, fix the fstab.  Reboot, delete the “/home” folder data from the old partition (being EXTREMELY CAREFUL not to wipe out my real data).  Reboot again.

HOORAY, I GOTS MY DATA!

Alright.  I’ve got my new version of Linux installed and… awww crap.  I have to go install all my old plugins and stuff, because that’s not stored in my home directory.  UGH.

What was I doing again?

Oh. RIGHT.  I was testing my web app.  Finally, got it tested, spotted an error, so I’ll go fire up my IDE to fix it.

WHAT DO YOU MEAN, I DON’T HAVE JAVA INSTALLED?!?!?

Category: Living With Linux, Rant | Comments Off on Why I Just Can’t Get Stuff Done
March 8

Choosing the Right Distribution

So one of the things you have to decide on when choosing Linux as your desktop OS is what distribution (or “distro”) to go with.  There’s a ton of options, but I’m not even going to get into it.  I’ve chosen Linux Mint, which is a Debian system based on Ubuntu.

The Choices

The real choice turns out to be a matter of the desktop window manager.  The main choices here are:

  • Gnome
  • KDE
  • XFCE
  • Cinnamon

Cinnamon and Gnome

Cinnamon and Gnome are pretty close to the same thing.  I used to use Gnome, but was frustrated when they decided to go away from having a system tray, which a lot of my favorite programs depend on.  After trying to get it to work again, I just went with Cinnamon.  Here’s a screenshot:

Linux Cinnamon Desktop

It has a lot of Windows elements: a standard desktop look with applications and files and shortcuts, a “start” menu, a clock and system tray.

KDE

Another option is KDE.  I used this one when I first switched from Windows, mostly because it was so close to what I was used to.

KDE

KDE is honestly pretty close to the look of Cinnamon.  I switched to Cinnamon because of how easy it was to use compared to KDE, and how much lighter it felt.  There are some other more technical details, but really it’s pretty close.

XFCE

The third choice is XFCE.  And… apparently it looks extremely close to the other options.

XFCE

It’s supposed to be “lighter” than the others.  In fact, probably the biggest difference in all these screenshots turns out to be the wallpaper.

The Choice

The ultimate choice is yours.  If you’ve got an older computer, you should probably go with XFCE, as it seems to work a lot better with fewer resources.  But if you’ve got a reasonably new computer, it really won’t matter.  In fact, you can install all of them, and decide which one to use when you log in.

Category: Living With Linux | Comments Off on Choosing the Right Distribution
March 2

We Have Milestones!

After much waiting: there are now milestones!

Yep.  A bit of a let-down.  I know.  Sorry.

In creating the milestones, I noticed there were some things that were probably missed… setting up an order to the milestones (so I don’t necessarily have to insert them in the proper order), etc.  Nothing mind-blowing here.

I’m working on the code and associated SQL to figure out a contestant’s progress in relation to milestones.  Nothing exceptionaly difficult, just takes a little time to do.

But there are MILESTONES now, people!

Category: Code, Health, Hobbit Walk, PHP, Software Development | Comments Off on We Have Milestones!
February 19

Beware the five o’clock stupids

My brain gets a little “squishy” after working on something for awhile.  Pounding away at the same thing gets a little monotonous.  Over.

And over.

And over.

And over.

And over.

And oevr.

And orev.

And voer.

Adn over.

And oevr.

And OVER.

AND OEVR.

AND OEVER.

ADN VEORE.

AND OEFER.

(see what I did there?)

Wait… what do you mean you can’t find /lib/std++.so?  WTF IS THAT?  Oh… shit…

At 5:00, relative to your timezone.  Stupid strikes.  BEWARE THE FIVE O’CLOCK STUPIDS.

February 17

New Series: Living With Linux

I’ve decided to start a new blog series.  I’m calling it “Living With Linux.”

It’s all about dealing with Linux on a daily basis.  I presume that at this point most people run Windows, or Mac.  If they run Linux, usually it’s because they know a friendly geek (or have offspring that became one) that installed it for them.  Hi, Mom!

Anyway.  Having ditched Windows at my house for many years now, I’ve picked up some things:

  • tricks on getting things done (insanely) fast
  • things that you just can’t do in Windows
  • reasons why I hate Windows
  • frustrations about Linux

This post is my public declaration.  I am planning on blogging on a regular basis.  How regular?  I guess we’ll see…

Category: Living With Linux | Comments Off on New Series: Living With Linux
February 17

SSH and Multiple Keys

I do a lot of stuff with SSH.  And I’m a fan of using separate keys for most things: the generic public key

~/.ssh/id_dsa.pub

for my specific workstation; and then a special, non-workstation-specific key for other stuff.

So I’ve got a key for things like:

  • Digital Ocean
  • SourceForge.net
  • BitBucket
  • GitHub

Frustratingly enough, once one has enough identities, one runs into a problem: Too many authentication failures.  Every time I see it, I have to go figure out why, and a workaround.  And that’s a couple of precious minutes that I’ll never get back.

Well, I’ve finally found a solution…  I actually already had it, I just forgot. My salvation lies in this file:

~/.ssh/config

The key is actually the first part, “Host *.hostname.com”, which is like a per-domain catch-all:

GSSAPIAuthentication no
Host *.hostname.com
    PubkeyAuthentication no
Host test
    Hostname www.test.foo
    User danf
    IdentityFile /home/danf/.ssh/digitalocean_id_rsa.pub
Host *.server04.com
    IdentityFile /home/danf/.ssh/source.server04.com_dsa.pub
Host cs
    Hostname indigo.crazedsanity.com
    User danf
    IdentityFile /home/danf/.ssh/digitalocean_id_rsa.pub
    IdentitiesOnly yes
    ServerAliveInterval 20

Oh, and this configuration allows me to use shortcuts that don’t have to resolve to real hosts and don’t require entries in my /etc/hosts file. So I can literally type ssh cs and get to where I want.

EDIT: apparently, there’s not a catch-all.  At least not a global one… but you can set one for an entire domain (like “*.hostname.com”) and that works magically.  So… close enough.  At least for government work.

Category: System Administration | Comments Off on SSH and Multiple Keys
February 4

Project Hobbit Walk: There’s a Database

That’s right, now Project Hobbit Walk actually has a database behind it.  And that database is actually getting data put into it.  Automatically.  Huzaaaa!

I’ve still got a bit of work to do.  But this is an incredibly important foundational piece of the puzzle.  With a single query, I can see how far everyone has traveled.

The only numbers I have to worry about are each user’s grand total, and their progress since the race against me started.  So it’s pretty non-complicated right now.  WOOO!!!

I’ve still got more stuff to do.  Here’s a pretty short list, in no particular order:

  • a URL scheme for showing race data:
    • for anyone (e.g. “/race/{id}/current”)
    • for all races of the currently logged-in user (e.g. “/races/”)
    • for progress on a specific race, up to a given date (e.g. “/race/{id}/20150104)
  • a URL scheme for handling open invitations (anyone can click it, sign up, and enter the race): (e.g. “/race/challenge/open/{id}“)
  • a URL scheme for handling user-specific invitations (only for a selected user, others get an error) (e.g. “/race/challenge/closed/{id}“)
  • some way to graphically show progress generically, without milestones
  • a way to show, graphically, progress with milestones (e.g. progress to Mordor)

Okay, that’s probably enough for now.  I’ll probably dream about this stuff now, since I’m thinking about it so close to bedtime… d’oh!

Category: Health, Hobbit Walk, Software Development | Comments Off on Project Hobbit Walk: There’s a Database