Sunday, June 03, 2012

A New Chapter

Tomorrow I start a new job.

A little less than six years ago, I was a grad student who had applied late to the Ph.D. program at Auburn University, so they didn’t have any GTA slots available.  I was looking around for other on-campus employment and came across an open spot in the Athletics Department, working as a GA in their student-athlete computer lab.  And I thought, hey, that would be pretty cool.

Pretty cool indeed.

Almost exactly 4 years ago, I was a disaffected grad student who had no interest in writing a dissertation.  So when my boss in Athletics approached me about turning my GA spot into a full-time position, I was ready to jump.

Because I had figured out that I had come back to Auburn because of Auburn, not because I wanted a Ph.D.

Which brings us to today.  Leaving the Athletics Department for a job in campus IT.

So what happened?

It wasn’t because I stopped liking my job.  I mean, sure, I can complain all day about impatient coaches and long working hours.  But, on the whole I worked with a bunch of smart, dedicated, hard-working people and I had a lot of fun.

It wasn’t about money.  The university doesn’t pay anyone as much as they should, other than football coaches (oblg. “Great benefits, though”). But I’m getting by just fine.

It wasn’t about power.  I’m actually going from top dog in Athletics IT to small fish in a big pond.

So why?

I don’t know if I actually have a great answer.  I guess what it really came down to is that I saw a potential new challenge that excited me.  There would always be new projects in Athletics, but they would be similar to problems I had already solved.  I may not have been bored, but I could see myself getting there.

And then OIT came along with a new position that I was perfectly qualified for.  One that they didn’t have someone internally prepared to step in to.  One that when I inquired about it, I was encouraged to apply.  And once I did, they moved faster than I thought the university could move to get me into it.

So here I am.  Sad about what I’m giving up.  Superficially, that includes free football tickets and lots of Under Armor gear.  But more importantly, it’s doing a job that I’m good at with people who like and respect me.  It’s great people who love their jobs who I’ll miss working side-by-side with.

But I’m also excited about the future.  About new challenges. New problems. A new environment.

I think I’ve always known that I wasn’t going to be the kind of person who worked one job for 40 years and then retired. I think I have many new chapters before I reach that point.

And the next one starts tomorrow.

Thursday, March 01, 2012

A Matter of Style

Programming is often said to be as much an art as it is a science.  I agree.  As such, programmers are often faced with issues having as much to do with style as with being technically correct.  Someone with a stereotypical view of engineers may think this would cause discomfort.  And it does.  But, at least for me, that discomfort is in the opposite direction.  I occasionally write code that, while technically correct, doesn’t sit right with me in the same way that my long, rambling, comma-laden sentences don’t sit right with English majors.

Let me give you an example.

For those who don’t know, I’m the IT manager and software developer for the Auburn University Athletics Department.  As such, I often write code that deals with databases relating to student-athletes.  Today I was writing a function dealing with our study table database which includes both student-athletes and the other people who attend study table, such as tutors.  However, the function only needed to deal with student-athletes, so I wrote it thusly:

if (person is a student-athlete)
{
     do what I need to do
}

Simple, right?

Later, however, I thought of something else that needed to happen if a person was not a student-athlete.  So I added some code to my function:

if (person is a student-athlete)
{
     do what I need to do
}
else
{
   do the other thing
}

And that worked.  The program ran beautifully and did was it was supposed to do.  But I didn’t like it.  The things that needed to happen if the person was a student athlete had absolutely nothing to do with the things that needed to happen if they weren’t.  The only relationship between the if and the else was the field I was testing on.  It worked, and it made sense to me, but would it make sense to someone reviewing my code.  Even as a programming shop of one, I think about these things.

So I changed my code:

if (person is a student-athlete)
{
     do what I need to do
}

if (person is not a student-athlete)
{
     do the other thing
}

Not quite as simple.  Not quite as efficient for the compiler.  But a more accurate statement of what I was trying to accomplish.  Some may disagree with me and think that the way I originally wrote it was more artful.  It is certainly more elegant, accomplishing more functionality with less.  However I believe that clear communication of your ideas is important for any kind of art.  That’s how I code. That’s how I (try to) write.  And if you disagree, hey, that’s art.

Saturday, June 18, 2011

Security Update

So it looks like an old Yahoo email address that I haven't used in 5 years was broken into last night.  Almost none of the addresses in it were current. But if you did get an email from me advising you to stop smoking, while I agree with the sentiment, I would strongly recommend against clicking on the associated link.

So no real harm, but the interesting thing to me is how the spammer got in.  Like I said, I haven't used the account in years, and probably haven't logged into any other yahoo service in many months.  I also don't use that username and password for anything else.  So I doubt it was any kind of keystroke logging malware.  Also, since it is a unique password, it wasn't leaked out from some other website with lax security.  That really leaves only two possibilities.  They got in through some flaw in Yahoo, which I strongly doubt.  Or, more likely, they guessed the password.

The password I used is actually one I would still consider moderately strong.  It is 8 characters, not a dictionary word, and includes numbers.  No capital letters or symbols, but still, pretty decent.  I use passwords of similar strength for pretty much everything else I do log into on a regular basis.  So I guess I'm going to have to step up my game.  Maybe break down and use some kind of password management service.

Anyway, let this be a fair warning to everyone.  I like to think I know what I'm doing in terms of computer security and things like this can still happen to me.  Be careful out there.

Friday, July 03, 2009

Getting the Shot

The following is a tale of patience, perseverance, forethought, math, and celestial mechanics.

A few months ago, for an undisclosed reason, I decided that I needed a very specific photograph of Samford Hall on the Auburn campus.  This photo had to be taken from a particular angle.  It also had to be taken at night.  And, to compound matter, I decided that it would make an even more interesting picture if the moon was tucked neatly between the two towers of Samford.

To begin with, I wasn’t even sure if such a celestial alignment ever occurred.  And if it was something that occurred, when and how often?  So I began educating myself about the habits of our closest neighbor.

The moon orbits Earth about the solar elliptic (an oddity as most other moons orbit about the equator of their planet) with an inclination of around 5 degrees.  Because it orbits about the solar elliptic, the position of the moon in the sky is highly dependent on the season.  And because of the 5 degree inclination and 27.3 day orbit, the path through the sky varies quite a bit over the course of the month as well.  But, thankfully, I found a handy tool published by the US Navy that gave me the azimuth angle of sunrise, sunset and the angle of the height of the transit point, as well at the times of these occurrences.  This was enough information for me to calculate the position of the moon at any time of the night.

But being able to calculate the position of the moon at any time wasn’t what I really wanted.  I needed to know when the moon would pass through a specific spot in the sky.  So I needed to know what that position was.  Google Earth told me that the position that I was going to shoot from was 200 feet from the front steps of Samford Hall.  And Wikipedia tells me that the height of the taller spire is 170 ft.  and the roof is 154.  Simple trigonometry tells me that I need to take my picture when the moon is at a height of between 36 and 40 degrees above the horizon.  Google Earth also told me that the heading from my vantage to the left tower was 222 degrees from north, while the right tower was 230.

So that was my target.  A box in the sky bounded by those four lines. I chose the center point, 38 degrees above the horizon and 226 degrees from north.

So I plugged the navy data into a spreadsheet and began breaking the nightly lunar path down into its horizontal and vertical components.  The vertical was easy enough.  I simply took the percentage 38 was of 90 (the vertical component of transit) and applied that to the time difference between transit and moonset.  This would be the time each day that the moon would be 38 degrees above the horizon.  For the horizontal component, I first took horizontal component of the angle of transit (again, trigonometry).  I subtracted this from the azimuth of moonset. Then, if 226 fell between those two numbers (which it often didn’t), I took its percentage and applied it to the time difference between transit and moonset as well.  This gave me the time that the moon would pass through the 226 azimuth.

I calculated these figures out until the end of the year, and then began looking for nights in which these two times were very close together.  It turned out that there are 2 or 3 consecutive nights each lunar orbit with the opportunity to get a good shot.  My first opportunity came in mid May, but it was too cloudy every night to get a good shot.  My second chance came again in early June, but one night it was again to cloudy, then the next night the conjunction occurred very late at night and I couldn’t stay up because of work the next morning.

But my 3rd chance came this last week.  By my calculations, Tuesday June 30 at 10:03 PM was my best opportunity.  I went out with my camera, but discovered that my calculations were a little off.  The moon was directly behind the samford-moonSamford Bell Tower.  I waited half an hour and got a shot of the moon after it had passed to right of the tower, but this was not quite what I wanted. 

So, the next night at 11:20 I was back out there again.  And, well, you can see the results for yourself.

Sunday, May 03, 2009

HTPC

As an off and on project for the last three years or so, I have been building a home theater PC.  I have had very many ups and downs with this projects, false starts and missteps, and I have spent much more money than I intended.  But I have been quite happily using the final product for about three months now, and am ready to tell anyone who might be interested the full story for your entertainment and education.

When I first moved back into my tiny Auburn apartment, I decided to hook my desktop computer up to my HDTV.  I would game and watch downloaded videos on that setup while using my laptop for web browsing and school work.  I stuck with it for about six months, but eventually decided that using a mouse and keyboard for gaming while sitting on the couch wasn’t very fun.  I also missed having a full-sized monitor while sitting at my desk.  So I moved my desktop back to my desk. 

But I did miss being able to watch downloaded videos and ripped DVD’s on my big TV.  So I bought a PC enclosure that matched my home theater components and stuck some old PC parts into it.  Now I officially had an HTPC.  Since it was older hardware, I stuck Windows XP on it and used a program called Media Portal as my HTPC software, a nice open source package that can handle just about any video format you can throw at it.

It was about this time that I discovered the dirty little secret that your cable company doesn’t want you to know about.  They want you to believe that to get HD channels you have to buy their very expensive digital HD package.  Throw in their DVR service and you’re paying $100 or more a month for cable.  However in most cases you can pick up most non-premium HD channels with even basic cable, as long as your television has the right kind of tuner (called QAM).  Most modern HDTVs have these QAM tuners, but I had been an early adopter and mine didn’t have one.  But you can buy a QAM tuner for your computer, and as I just happened to have a computer to put one in. I thought that sounded like a fantastic idea.

So I quickly downgraded my cable package and ordered the Hauppauge 1600.  This card is a dual tuner, with one tuner that can pick up QAM or ATSC (over the air HD) signals, and another that picks up normal SD cable.  (As an aside, you had to be careful when you bought this particular card because there were actually two different product numbers with the same name, one which was ATSC-only and the other which was ATSC/QAM.  This isn’t an issue any more because there are better cards available, which I’ll get to in a moment.)  After installing it in my computer, I quickly ran into a problem.  While it performed well tuning regular cable TV, the old processor just wasn’t powerful enough to handle the HD.  At first I tried just upgrading the processor, but even the fastest one that my motherboard could handle wouldn’t cut it (I didn’t have high hopes that it would, but I found one for 15 bucks on eBay and figured it was worth a shot).  So I decided to upgrade the whole computer.

I decided that pretty much any modern hardware would be good enough, so my target was for everything to be cool and quiet.  I went with an AMD Phenom 9150e processor, which was is a low power quad-core, which I figured would be good for encoding while ripping DVDs.  I plugged it into an nForce 750A motherboard, which has a built-in Nvidia 8300 video card with HDMI-out, which I though would be fantastic for a HTPC.  This allowed me to go without a discreet video card which would keep things cooler and quieter.  I finished it off with RAM and a 1TB hard drive.  After all of these pieces came it, I assembled them and plugged in my TV tuner.  For an operating system, I went with Vista Ultimate because I wanted to use Vista’s Media Center, which I knew would tie in well with my X-Box 360.  Media Center will record TV, as well as play media from your video and music libraries.  I had to install several video codecs to get it to play all of my media files (which Media Portal hadn’t had a problem with), but I’m geeky enough that it didn’t take long to sort things out.

There was still a problem, however.  Media Center didn’t get along well with my Hauppauge tuner.  It wouldn’t accept the fact that it was an ATSC/QAM combo tuner, only recognizing the ATSC part.  While I could pick up CBS and NBC in HD over-the-air, I knew that I would be missing FOX, ABC, and the 2 ESPNs.  Through research, I learned that there was an update for Vista Media Center that would fix my problems.  There was only one problem.  The update, codenamed Fiji, would not be released to the general public.  It was only made available to companies that manufactured pre-built HTPCs.  I thought this was a ridiculous policy.  So, being a person of many resources, I managed to track down a copy of this update.  After installing Fiji, Media Center recognized my tuner, detected the channels, and everything was great.  Except for one other problem.  Vista would not recognize the remote control that had come with my Hauppauge tuner.  Having to use a mouse or keyboard was extremely frustrating.  However, as I mentioned above, the reason I had chosen Media Center was because of its tight integration with my X-Box 360, which I did have a remote control for (a Logitech Harmony 360, which I love).  So, for the next several months I watched TV through my 360.  This kind of defeated the purpose of the motherboard that I had chosen, but it was a working solution.

Using my 360 as a Media Center extender became frustrating after a while, however.  This was chiefly due to its very long boot-up time.  It took nearly a minute from sitting down on the couch before I could actually watch television.  So I began looking for a new remote which would work with Vista (actually, all I needed was a remote receiver, because I would program it to work with my Harmony).  Because I didn’t care about the remote itself, I wanted to go as cheaply as possible.  I just didn’t find a lot of good solutions, though.  What I did come across, however, was that Hauppauge had a new line of tuner out to replace the 1600.  And the new 1800 came with a remote that was designed to work with Vista Media Center.  This would also allow me to have a 2nd HD tuner, which would let me watch one HD channel while recording on another (previously, if I was recording in HD, I had to watch another channel in SD).  This sounded great to me, so I ordered one.  I enjoyed the dual tuners (actually 2 HD and 2 SD), but there was one little hiccup with the remote.

After I started using the HTPC primarily, I started noticing some weird things happening with my X-Box 360.  It would randomly turn on, and when I switched my video input over, it would buried deep in some menu.  And sometimes it would randomly schedule recording. After putting aside the notion that it was haunted and angry at me for ignoring it, I came to realize that the Media Center remote used some of the same IR signals as the X-Box 360.  This actually made me really angry, since they are both Microsoft products.  The only way around it was for me to put electrical tape over the IR port on my 360.  This meant I could no longer use my Harmony with my 360, but since I wouldn’t be watching videos or TV on it anymore, that would be OK.

But I had been using my 360 as a DVD player as well. Since I didn’t want to have to use my X-Box controller for watching DVDs, I decided to move my DVD watching to my HTPC as well.  But, not content just to put in a DVD drive and be done with it, I thought it would be a great opportunity to jump on the Blu-Ray bandwagon.  So I bought a Blu-Ray drive and installed it in the system.  For Blu-ray playing software I decided to go with Arcsoft’s TotalMedia Theatre because it works as a plug-in for Media Center, unlike every other player which you must run stand-alone.  But, of course, there was a problem.

The built-in video card that I had been so excited about when I bought it turned out to be slightly insufficient for playing Blu-ray.  The video was watchable, but noticeably choppy.  So I decided to break down and buy a discreet video card that would handle it.  I went with a bottom of the line Nvidia 8400GS.  This was almost the same card that was built in to my motherboard, but being discreet meant it had its own processor and memory instead of having to share with the rest of the system.  It was just enough to push me over the top of the Blu-ray hill.

This presented me with a conundrum, though.  Installing a discreet video card defeated the purpose of the motherboard I had selected.  And, although it was low-power, the processor I had selected was still better than the aging one in my normal desktop.  So I decided to make the swap.  Even with the older motherboard and processor, Blu-ray and HDTV still played fine with the new video card.

So that’s where I stand.  I have an HTPC that plays HDTV, SDTV, Blu-ray and regular DVD, as well as all of my downloaded video and ripped DVDs.  It took longer and cost more than I expected.  I also missed my mark of cool and quiet, and wound up with a desktop that has components in it that I probably wouldn’t have bought if I hadn’t intended them for an HTPC.  But, still, all in all, I’m quite happy and satisfied with how it turned out.

Now if I could only get it to play Hulu….

Sunday, March 01, 2009

The Future Is Now

On Christmas Day of the year 2000, I received as a present a Palm Pilot. It was a primitive device that I chiefly used to discretely play Solitaire during boring classes. The other interesting thing that I discovered for it was the ability to download and read public domain novels. It was on my Palm Pilot that I enjoyed Stoker’s Dracula, struggled through Joyce’s Ulysses, and (not for the first time) read the first chapter of Moby Dick before giving up on it. The dark grey text on grey/green background and 3-inch screen did not make for the best of reading experiences, but the words were every bit as powerful as if I was holding the physical book in my hands.

I eventually retired my Palm Pilot, but I knew, without a doubt, that I was not done reading on electronic devices. I flirted around with reading downloaded books on my computer. This was never ideal to me. Firstly, a backlit screen causes eye strain if you read for too long without looking away. But the biggest reason is that I tended to skim books as if I were reading a web site. I just couldn’t get in to the book the way I could with a paper book or even my Palm Pilot. So, for the past several years, I have flirted around with the idea of buying an e-book reader. What kept me from pulling the trigger was the feeling that they just weren’t quite there yet. That greatness was just around the corner.

kindle Well, I finally got tired of waiting. Amazon released their second generation Kindle and I knew that my time had come. I pre-ordered it the day it was announced, and received it this past Friday. After playing around with it for a weekend, I find it a fascinating device. Though not perfect, I can tell that it is something I will use and enjoy for a long time.

The device feels very solid in your hands. The buttons are firm, yet responsive. It is nearly impossible to turn the page accidentally (a common complaint about the Kindle 1), but easy enough when you mean to. The 4-way joystick used to navigate the device is a little too stiff, but I image that it will get better as it gets broken in. Navigating the menus is sluggish because of the slow refresh rate of the screen. But it is fast enough when turning pages, although the flash that occurs when you do change pages is a little disorienting. The screen looks good. It is very sharp, if not as contrasty as I would like. It still has the gray-on-green look that the Palm Pilot did, although not nearly as bad.

The most significant feature of the Kindle, though, has nothing to do with reading books on it. The device has cellular internet access with no monthly charge. You can buy and download books without hooking up any wires. My first book that I bought before the Kindle was delivered was already on the device when I first opened it (I don’t know if there is some sensor that knows when you open the box or if they shipped it with the radio on.). You can go online with the Kindle, and though the slow, black and white (um, gray and green) screen makes it not the best experience, it is more than serviceable for text-heavy sites. Access to Wikipedia had drawn comparisons to The Hitchhiker’s Guide to the Galaxy, a sentiment that I don’t disagree with.

The little touches for reading are nice too. You can resize text to suit your eyes. You can instantly look up the definition of a word you don’t know (I hadn’t even realized how often I blow through words, guessing at their meaning from context, until I had the ability to highlight and automatically define them without getting up and going to my computer.). You can bookmark and tag text, a feature that I love because I am really into quoting book passages, but hate having to scan back through a chapter to find one that I remember reading. You can also search. I will never use it, but the text-to-speech is surprisingly non-horrible.

The Kindle certainly isn’t perfect. Like I said above, it still doesn’t match the contrast of ink on paper. I wish that the screen was bigger as well. I really like the size of the device itself, but there is a lot of wasted space around the edges. The keyboard is pointless and in the way about 99% of the time as well. Although I wouldn’t want one that is on all the time, I do wish there was a backlight for use in a pinch. There is more glare on the screen than I was expecting. And, although it is quite adequate, the responsiveness certainly could be improved. It is also very, very expensive.

But, for a technology geek and a book nerd like me, these problems are very small and the upside is very big. As newspapers and magazines have been replaced by the web, compact discs have been replaced by MP3’s, and DVDs are being replaced by streaming/downloadable video, I think that dead-tree books are on their way out. Oh, sure there will always be collectors and bibliophiles who insist that books are superior, but the rest of us will happily understand that it is the content, the words, that matter. Not the container that they come in. And devices like the Kindle will bring us those words in more useful ways than paper can ever deliver.

Monday, January 05, 2009

Nonfiction

Tonight, at the store, I bore witness to a fascinating scene. I waited in line to purchase my goods behind a man and his family. I watched patiently as he had not one, but two credit cards declined. He removed his hat to scratch his head unsure of how this could have happened, and it was obvious that his hair had not been washed in quite a while. He tried to explain his situation to the cashier, but he was hard to understand due to his drawl, his missing teeth, and the large dip of chewing tobacco under his lip. On his upper arm was tattooed, in poor calligraphy, the name of CHRIST. I could clearly read this tattoo because he had, of course, cut the sleeves out of his Harley Davidson tee-shirt. He hadn't done this to show off his muscle, but his abundant flab. His obese child watched on obliviously as his fat, exasperated wife dug through her purse looking for yet another credit card.

Rather than wait for the rest of the scene to play out, I changed lines. But I couldn't help but walk away with a grin on my face. Because the baseball cap he removed to scratch his filthy head was patterned with houndstooth, and bore a crimson "A".

War Eagle.