Geocaching: Get the Geek Outside

This post has been inspired by To Code or not To Code, who made a post about his geeky hobby of model railroads. As we discussed, geeks need hobbies too. This one I’m going to talk about is definitely geeky – it’s called geocaching.

Quick – what’s the overall concept of geocaching?

The overall concept is fairly simple. Think of it as a treasure hunt. You’re given coordinates to where the treasure is, and with a GPS, you go and find that treasure. Sign the physical log that you were there, and then log your find on the website.

What is a geocache?
Someone out there took a bucket, loaded full of goodies, posted the coordinates (latitude and longitude) on the Internet, and waited for someone else to find it. It was here where the sport of geocaching started.

A simple geocache may be something like a 35mm film canister or smaller, with a piece of paper for people to log their visits. Depending on the canister size, most people log their geocaching nickname and the date or sometimes just their initials and the date. Other small log containers include the containers used to hide keys for when someone is locked out of their house.

A small geocache may be a tupperware container or a lock-n-lock container. Those usually contain things called travel bugs – trackable items that usually have a traveling goal, signature pieces – items with people’s geocaching nicknames that they leave as tokens, and the log book. The log book is key to every cache size. It’s for the cache owner to track down who has visited their cache and when.

A large geocache may be an ammo can or one of the cookie tins that you received from your vendors around the holidays. These typically have larger items for trading, and they also have a log book to sign.

Outside of containers, there are other interesting cache types. There are virtual caches – where you have to go to a location and find certain details from there and message the cache owner with those details to get credit for the cache. There are webcam and earth caches, where you have to take a picture of something in particular to prove that you’ve been there.

Sometimes, you are given coordinates directly to the cache. Sometimes, though, the coordinates take you to a step of a multi-step cache. At that step, you may be given more coordinates or you may have to find something to help you calculate coordinates. Some caches are called puzzle caches – you have to solve a puzzle of some sort to get your coordinates. Some puzzles are easy – like a sudoku puzzle or “count how many trees are at these coordinates”. Some though are quite difficult – like here’s a pattern that’s encrypted, now go find the cache.

These caches are located all around you, and you most likely haven’t noticed them. They may be in parking garages, behind stop signs, under lamps, or hidden right in front of your face (or “hidden in plain sight” as we cachers call it). They may be a statue or plaque you’ve read or at a bench you’ve sat on. They are out there, and they almost always go unnoticed.

Why do people geocache?

Some people geocache just to get out of the house. Others cache with a goal of reaching a certain number of caches. Still others cache to see just where they may end up.

Where have you geocached?

I typically cache in the NE Ohio/NW PA/Columbus, OH/Detroit, MI areas. I’ve got family and friends who live in those areas, and we’ve taken many of our friends out with us to see what the adventure is about. When the weather gets nicer, we’ll be introducing at least one more person to the sport. After giving a presentation on geocaching to a bunch of amateur radio guys, we have a few who are interested in going out.

If any of you live in those areas and want to see what it’s like, definitely contact me at sarah at codinggeekette dot com to set something up.

We have also geocached internationally. Caching in Canada was an interesting treat, especially since the cache we did there last summer took us to an old battlefield. It was interesting to read the plaques throughout the field, and at the same time, we were gathering information to calculate the end coordinates. It was a beautiful park, and the cache was definitely tough to find. Caching in Bermuda was nice though too. We were there with friends of ours from college who actually convinced us to get into it. We saw a lot of local fauna and flora while caching there.

What kind of GPS is needed for this?

As long as your GPS can narrow in on coordinates easily, you should be fine. The big name GPS makers are Garmin and Magellan. However, there are plenty of others out there.

Many GPSes out there support the GPX file format – this is the file format the coordinates are available in from the website. Also, the website exports the cache information in a variety of formats, and there are third party applications that are designed specifically for geocaching, like Swiss Army Knife (GSAK).

What if I want to learn more about geocaching?

The people at geocaching.com have put together a great collection of geocaching guides, including their FAQ, how to select a GPS unit, and how to put out a geocache. There are also local groups that have members who are always willing to help a newbie cacher out.

And I’m also willing to try to answer more questions. I can be reached at sarah at codinggeekette dot com.

Considering Your Audience – All of Them…

For all of my past programming positions, I’ve worked on in-house applications. I knew who my end users were, and I was able to develop solutions for them based on what they had and what they needed.

But what do you do when you’re designing for the public? You don’t know who may be visiting your site. How do you design your site?

When it comes to my personal sites, I’ll admit that I’m a slacker. I don’t use validators, and I tend to stick with basic HTML tags.

However, one of my projects in my current position forces me to truly be a great web developer. I have to take my audience into consideration on the company’s website. Sure, Visual Studio has validators, but even that isn’t enough for me.

As a web developer, I need to make sure that whatever information I’m broadcasting on the web is available to as many people as possible. This means that the visually impaired user needs to be able to find out information clearly, but the guy in the coffee shop with his PDA should also be able to find everything fairly easily.

What about those people who have Javascript disabled? One of the big features on the existing site is written in Javascript. It’s a great tool for finding out what’s available, but the data isn’t that accessible. Since it is part of my job to update the technology behind the existing site, I have changed the Javascript tool into an ASP.NET application that works even with Javascript disabled.

Working with this site has definitely taught me to be more aware of my users. Another section of the site is getting updated with a new look and feel. More images are being added. Although I was given the design for what needed to be seen, I picked up on the other users right away. When I sent the changes to the project manager, he wasn’t expecting two sets of changes, but at the same time, he was glad to see that someone thinks of the other users.

I haven’t had the joys of testing with a screen reader yet, so we’ll see how that works. However, I do spend quite a bit of time with the W3C Validator. I use the Accessibility Validator in Visual Studio, but sometimes I wonder if that’s enough. Yesterday, while looking up some things for work, I came across a book that mentioned WebXACT as another powerful tool. This is something I will probably end up looking into, just to see how well it works for our site.

Being interested in Human Computer Interaction definitely helps me in developing for the anonymous end-user, with whatever characteristics they may have.

Fascinated by Languages

When I was studying for my degree, one of my favorite classes was a programming paradigms class. It covered various types of languages and some basic structures. It taught me that there are certain languages better than others for each situation. To be a good programmer, it helps to know the language you work in. To be a great programmer, you know your language and are aware of the other languages out there. You are also willing to take the steps to add more languages to your repetoire, to help keep you one step above the rest.

My goal this year is to pick up more languages. At the beginning of 2007, I had a conversation with a co-worker at my former place of employment. We were talking about the languages out there, and he mentioned that he’d like to learn more about C#, but with our work demands, we had no time to learn it. I remember us coming to the conclusion that we’ll never need it, so we weren’t going to bother learning it. A few months later, I was in an interview for a web developer position that needed C#, and I mentioned to the interviewer that I’d go the distance to learn the language, as I already had a strong enough programming language and web development background to get started. That was at the end of March, and at the beginning of April, I got the job offer.

So I’ve been working with C# since the end of April 2007. I’ve converted ASP pages to ASP.NET, and I’ve had the joys of learning my data structures all over again. I’ve endured the experience of nested master pages with delegates. For being out of a solid programming position for so long, it’s been a great experience reawakening the programmer in me.

My inner programmer is now awake, and I’m looking forward to learning new languages. So far, my goals include:

I do not have an inkling to want to learn LOLCODE, even though my current license plate is in the code. Something about the whole LOL movement – LOLCODE, LOLCATS, etc. – just gives me a headache thinking about it. Unless someone can convince me it’s worthwhile, I’ll avoid it for now.

If there are other languages that are worth looking into, definitely leave a comment here.

Why OOPSLA?

Yesterday, at lunch, one of my fellow programmers asked me “Why OOPSLA? Why not TechEd or some other conference?” Honestly, having been out of the programming realm for so long, I’m not familiar with all the conferences out there for us. So give me links to look into these other conferences. I’ve already declared 2008 my year of passions – and programming is one of them that I’m focusing on. Give me fuel for my programming passion.

As for OOPSLA, there’s a reason why I want to return to it. Nine years ago, I was part of a CodeFest team at OOPSLA ’99 in Denver. CodeFest is where selected university teams come out and implement designs that were developed in DesignFest. DesignFest is a part of OOPSLA where developers get together in teams of 4 or 5 and solve a problem given to them. They need to work as a team and come up with all that the coders would need to implement the design effectively.

I worked on a team with two other people from our university’s chapter of ACM. One of those teammates was the chair of the student group; I was his vice chair. The other happened to be a great programming friend as well. None of us had worked together on projects or coding, but we were very lucky to work very well together for this. When we got our problem – design and implement a vending machine, we had to then figure out which language would be best for our implementation and then go from there.

Our problem was not just any vending machine – it was a coffee vending machine. That told us there what language we just *had* to use – Java! I hadn’t ever used it, so I learned it as we worked throughout that week. Both of my teammates had used it and knew that I’d be fine learning it, so that’s what we ended up implementing it in.

Now OOPSLA stands for Object-Oriented Programming, Systems, Languages, and Applications. So the whole point of the conference is to see things and learn things that are all about the OO approach. I had used Visual Basic extensively, which really didn’t get into OO notation as much as I needed for the conference. So I figured out that as well.

At the end of the conference, we had to present our project. We had a lot of people watching us throughout the conference, since we were programming out in the open. There were a lot of people in front of us at the conference, watching our presentation. We also never met our design team, so we did what we could with what they gave us. It was a great experience for me – learning a new language, learning about OO a bit more, learning more about the software design lifecycle, and meeting many people.

So why OOPSLA? It was where I realized long ago that I truly am meant to be a programmer. I found things that challenged me and that kept me curious. This year, I want to go to OOPSLA and participate in DesignFest. I enjoyed my CodeFest days, but I also want to see what it’s like to work with total strangers on a programming project that we have no prior knowledge of, at the moment. I want to see what it’s like on the other side of the OOPSLA ‘Fests. And maybe I’ll get to see CodeFest teams there who show the same potential that the teams of CodeFest ’99 showed.

The Perl Gurl Speaks…

A co-worker asked me today if I had heard of a language called “perl”. The programmers have been talking of various languages ever since one came back from Codemash. This particular co-worker turns to me whenever she finds something that she doesn’t really understand.

Hearing her question really made me think about it. I used perl back in college, in the late 90s. I remember the headaches I would get, just trying to read its syntax. Thankfully I had a friend who really understood things like regular expressions and could put it to me in words I could understand. As soon as he explained it to me in plain English, I started understanding Perl.

Perl helped me understand a lot of fundamental concepts that HTML couldn’t teach me. It was a difficult language for me to get a grasp of at first, as my background was more along the lines of BASIC and Visual Basic. However, it helped me to see just what was out there waiting for me.

I honestly cannot remember the last time I used Perl, as it’s been that long. If I had to read a Perl script today, I could follow its syntax. However, if I had to write one from scratch, I’d be turning to a couple references – like perl.org documentation or my trusty copy of the camel book.

Perl has survived 20 years. How much longer does it have? With players like PHP, Python, and Ruby making footprints on the Web, Perl’s CGI scripts footprint definitely losing its place. But after 20 years, it’s only a matter of time before it’s totally replaced.

What will be the next Perl? It’ll be interesting to see what maintains a lifetime as long as Perl, with the power that Perl had.

Introduction – Who is the Coding Geekette?

Nine years ago, I was a student at the University of Toledo, studying for my bachelors in Computer Science and Engineering Technology. I was the vice chair for the student chapter of the Association for Computing Machinery, and I was active at both the local and national levels. I was a presenter on SAMBA/SWAT and Squeak for the Toledo Area Linux Users Group. And I was part of the Toledo CodeFest team, representing our university at ACM’s OOPSLA ’99 conference in Denver.

My co-op experiences started right out of high school, as a Visual Basic programmer, meeting Microsoft SQL Server. The following co-op, I had the joy of having a title that I’ll never have again – Y2K programmer. That’s where I met the beast known as FoxPro. My last co-op had me doing a migration from Access to VB/MS SQL. After the co-ops, I focused on my studies while working with my favorite guys of Toledo – the Arts & Science College Computing crew.

After graduating from college and having all programming co-ops, you’d think that I’d be a programmer. But I ended up in technical support for an ISP. That’s where I met a friend of mine who called me a geekette. He encouraged me to stick with programming, even though I was in support.

After that job, I ended up doing my time as a systems support analyst. I had the programmer role – using Visual Basic 6 and eventually moving on to VB.NET for 1 project. I also was wearing the hats of system administrator, database administrator, desktop support, and report builder. Great experience in becoming familiar with various technologies, but it was tough to keep up with, not having time to pursue my true interests.

Which takes me to where I am today – as a database developer. I spend my days working in C#, doing web development, with a focus on database-driven interfaces. I am finally back in my element, automating things and tinkering and doing things that programmers enjoy doing. Thanks to one of my new friends from work, I’m also back to networking with people in my industry. So this blog is here to give them my perspective on things.

If you ever want to know more about me, feel free to email me at sarah at codinggeekette dot com.