Saturday, April 14, 2012

Larissa Greece - Day 6 (My Birthday)

Today was yet another awesome day in Greece. I got to sleep in, relax, meet with friends, and relax some more. The night ended with an un-forgetful candlelit midnight celebration in downtown Larissa. I'll explain...



The day started off around 11am, when I woke up with a headache. This was the result of going to bed so late while still "under the influence". When I woke up, it was hard to get moving and I just sat around watching the BBC News channel with Yiorgos until around 2pm. It was around this time that Yiorgos and I headed into Larissa to run a few errands for his coffee shop. We got to visit a greek version of Sams Club where he purchased lots of items in bulk for the Playful Room.

When we delivered the items to his coffee shop, we ended up chilling out and visiting with his friends. This was a great time! We basically hung out inside the coffee shop for about 4 hours drinking coffee and beer while talking and laughing with Thenassis, Thomas (a fellow computer programmer), Dimitrious, and Athena (Dimitrious' girlfriend). I got to see many familiar faces throughout the day and really enjoyed every passing moment.

To try and snap out of my funk from last night's partying, I decided to get some coffee. I ordered a double espresso and tried to let it kick in. I didn't feel the effects of it, so I ordered another double espresso... Yeah! About 10 minutes later I had the jitters. :) Yiorgos even asked me if I was sure I wanted the second one and I assured him that it was ok... "I'm a professional coffee drinker" I said.

I realized that I was jacked up on coffee the moment that I tried to debug a programming problem that Thomas presented me with on a small piece of paper. I couldn't hold the pen and my hands were shaking like crazy. I felt like I could just "exit stage left" and just run for miles without stopping. However, I was confined to a small stool in the middle of a relaxed environment with this pen and a piece of paper while everybody was focused on me and my coffee buzz... Bzzzzzz. :)

While at the coffee shop, Yiorgos surprised me with a cake and a celebration song over the stereo system. I was having a conversation with Thenassis and the music started to get very loud. I didn't understand why, and just assumed it was time to turn up the music in the bar...? Eventually I started listening to the words and it was saying "HAPPY BIRTHDAY, HAPPY BIRTHDAY, HAPPY BIRTHDAY TO YOU!" Then I got a clue and realized it was for me. About one second later I see Yiorgos coming around the corner with a delicious looking chocolate cake, and everybody in the bar (about 20-30 greeks) started clapping and singing happy birthday (in English). Needless-to-say, I was a bit surprised and it is a moment I'll never forget! I have been officially accepted by the greek community. :) I blew out my candles and everybody in the bar cheered. It was amazing!! We all shared the cake and I thanked everybody for the awesome present.

We stayed at the bar for about an hour or so afterward and just enjoyed each others company. Around 7pm or so, we headed back here to Yiorgos apartment and chilled out on the couch. I was able to catch up on my Facebook chaos (thank you everybody) and read my birthday wishes! It was great to see so many people's names on my wall who I'd not heard from in a long time. The one name I didn't see was NIKKOS VALASSIS though!! (j/k it's a joke).


Around 11pm, Yiorgos and I headed downstairs to his parents place and picked up Nikkos, Misty, and Thenassis (their son / Yiorgos' nephew) and headed to the center of Larissa to celebrate the coming of Easter day. Everybody had a candle and we even took candles for those that couldn't join us. Yiorgos parents stayed home and Cleo was asleep, so Yiorgos and Nikkos carried their candles. I even had my own candle. I didn't fully understand what the significance was of this, but I went along with it. As we made our way to the center of the city, the streets were packed with people of all ages walking towards the center as well. It was quite a sight to see! We have nothing like this in America as far as I know...

Let me first apologize if I get any of this wrong, but here is how I understood it from Nikko's description: In Greece, they celebrate an Orthodox Easter. The way that I understand it is that each Orthodox church sends their "high priest" (?) to Jerusalem to enter a cave where a holy light is burning. They enter the cave with a single candle each and no means of making fire (no matches, no lighter, nothing). When they exit the cave, the candle is said to be lit from this "holy light" that burns within the cave. They then fly this flame back their church and light other candles from this single flame. Those candles then light other candles, which light other candles, and so on and so on. This is considered to be the sharing of the holy light. So in essence, my candle was lit from a single flame that originated from the holy light cave. Pretty cool, huh? :)




Watch this short video to see how big of a deal this Easter celebration is in Greece. When the bells ring everybody does a small prayer and kisses cheeks with those around them:


I was fascinated by it and was so happy to be a part of it.

Another aspect of the bells ringing at midnight, is that it signalled the end of their fasting. Yes, Yiorgos and I were not supposed to be eating meat all week... Whoops! :) So anyway, once the bells ring to signify Easter Sunday, all Greeks go back to their homes with this holy light and are then able to eat a "small" meal before going to bed... It's typical that they eat lamb on this night.


When we returned home to Yiorgos parents house, Dimitra had a lamb cooked and ready to serve at the dinner table. All of the lamb is used for this meal. Yes, all of the lamb. The head, the brains, the eyes, the heart, the stomach, the liver, the intestines, everything...  All of the organs, other than the brains and eyes were made into a soup, and it was served first. I didn't let the contents of the soup scare me and wanted to try it with an open mind. It wasn't bad, but I don't know that I'd order it at a restaurant anytime soon either. :)



Another tradition is that everybody at the table takes a hard boiled egg and turns to the person next to them to bump them together. Whosever egg doesn't crack from this collision is said to have good luck. Both ends of my egg cracked... Crap! :)

Dinner was delicious, I had bread, feta cheese, tsatziki (a yogurt/cucumber/garlic spread), my bad-luck egg, and of course a few helpings of lamb meat. I washed it all down with two glasses of wine. Oh yeah, and I had an ice cream bar for dessert. After the small feast we sat around and talked... Greek family style. :) Loved it!!


Dusseldorf Marathon, here I come!... 10 kilos heavier.

Larissa Greece - Day 5

Today was a very relaxing day.

Yiorgos and I woke around 11am after a late night of blogging and checking sport scores (you can guess who did which activity). Immediately after waking up we gathered our things and began our 3 hour journey back to Larissa.



One thing that I failed to mention on our trip to Athens is that the toll expenses are crazy! To drive from Larissa to Athens and back cost about 60 euros (about $75 - $80). This doesn't include the gas cost, which is also a bit over the top right now. Gas is around 1.89 euros / liter which translates to about...

Think about this! There are 3.79 liters in a gallon. The exchange rate to convert Euros to US Dollars today is 1.32. Let's pause and do some math:
1.89 euro per liter * 3.79 liters = 7.1 euros per gallon * 1.32 exchange rate = 9.45 us dollars per gallon
We should probably stop complaining about the gas prices in the states. We have it very good with our $3.89 gas prices. That's less than half of what our European brothers and sisters are paying.

So anyway, on our way back, we stopped and got some ice cream and coffee. But mostly just cruised home at a nice pace listening to the radio.

When we arrived back in Larissa, we stopped and got a huge sack of pastries and came back to Yiorgos house and had a "bachelors lunch". Around this time, the sleepy's were kicking in, so Yiorgos took a nap and I sat out on the couch and watched King of Kings (in english), balanced the checkbook, and caught up on some last minute debugging with a project for work. Yes, this is what I do when I'm bored. :)





Around 8:30pm, Yiorgos woke up and we got ready to go out to a local bar to meet with his friends and have some drinks. We stopped to pick up Alexandra and Thenassis at their houses, and then we met up arrived at the bar around 11pm. The bar was named Mellow Yellow and it was pretty crowded. As it turns out there was no music on this particular day only, because it was "Good Friday". This is the only day of the year that they don't play music. Lucky us. :) Regardless, we had a blast. The table was full with many of Yiorgos friends: Thenassis, Panos, Vassilis, Ilya, Fanni and a few others joined throughout the night to say hello here and there.

I mostly drank Johnny Walker and Haid; I'm actually enjoying these types of drinks for a change. I'm mostly a social drinker (honestly, I don't drink) and usually drink beer in these social situations. It's a nice change to not pound my gut with huge beers while still having a good time. As the night went on, I had a few more surprises from the group.

One of the bartenders (also named Yiorgos) was super friendly and he bought me 2 shots of Vodka at the bar; just he and I. He asked my age and I looked at my watch to find that it was officially my birthday. So I told him my new age (ie. 34) and he got very excited and felt the urge to buy me some shots to celebrate. I was so thankful and really enjoyed his company. We tried to talk for about 5 minutes before he had to get back to work.

Another round of Jaeger Shots

A couple of times throughout the night the group would do a round of Jaegermeister shots. Therefore, I was feeling pretty good by the end of the night. Thenassis and I had a lot of conversation and I see why Yiorgos is friends with him and Michos; great people! We talked about all kinds of things and his english is much better than he thinks. I appreciated the fact that he spoke English even when he wasn't talking to me, because it let me stay involved in the conversations.

Me and Thenassis

We ended the night with one more Jaegermeister shot and headed home around 2am. Yiorgos and I stopped at an all-night Gyros restaurant and ordered some food to take back to the room. I got to taste an authentic Sadziki Gyro. It had french fries, pork, lettuce, and a few other delicious toppings. We ate them on the terrace and then crashed around 2:30am.


Today was a great day. 

Thursday, April 12, 2012

Larissa, Greece and Athens, Greece: Days 2 - 4

I've not had a solid internet connection since the airport in Thessaloniki, Greece. I've only been able to talk to my family via Skype from Yiorgos' iPhone yesterday.

Tonight, I'm online and ready to catch everybody up at home.

Monday, April 9th
Volli's flight arrived shortly after my last post. Immediate we headed back to Larissa with all kinds of stories to tell and life to catch up on. Yiorgos took us to an AMAZING restaurant in Larissa, Greece by the name of Takis. We had some beers and lots of meat. It's amazing how much food 3 extra large humans can put away in a short period of time. We sat right next to a fire place and gorged for about an hour or two. The setting was amazing. The restaurant sat at the top of a huge cliff and overlooked the Greece countryside. It was located at the end of a long cobble-stoned street and there were very few people in the restaurant. Perfect!






When we arrived back at Yiorgos house, we traded gifts and drank a few glasses of Johnny Walker scotch, which I purchased on the plane. We called Jennifer, my Mom and my Dad (it was his birthday), and then we watched Mission Impossible 4 before calling it a night around 2am (Greece time). My total time awake was about 33 hrs. Phew... Love it!



Tuesday, April 10th
We all woke up around 11am and were ready to get started. Immediately, Volli and I had Nikko's (Yiorgos older brother) drive us to a local park in Larissa so we could take a nice slow run together. We ran about 4 miles before coming back and preparing for the day.


Our day finally started with some pastries and juice on Yiorgos' terrace. From there, we went to visit his parents. I was able to finally meet Yiorgos father, Thenassis. He has only known about me through pictures and stories. I've only known him through stories. It was great to finally meet him and it's clear how Yiorgos and Nikkos are so likable; they have amazing parents. Dimitra and Thenassis are amazing people.

From there, we went to visit Nikko's wife and children. I met Nikko's wife Misty and their two children Thenassis and Cleo-Dimitria. We had a great time, and stayed to visit for about an hour or two. From there, we went to see Yiorgos' coffee shop / bar. Yes, Yiorgos owns a bar! He and Nikkos run a bar by the name of The Playful Room (link). It was awesome! We hung out there for about 3-4 hours drinking beer and enjoying each others company. I met many people here and the atmosphere was awesome. They have a good thing going here and I'm so happy for them!







After leaving the coffee shop, we scooped up Yiorgos' awesome girlfriend, Alexandra and headed to an amazing restaurant in Platamonas, Greece named Psaropoula. It was right on the Mediterranean Sea and the weather was simply perfect; a bit overcast with a nice peaking sunset. We sat outside the restaurant for about 30 minuts and enjoyed a few beers before going inside. Our seat was right by a huge glass window that let us look outside at all the boats. We gorged.



From the restaurant, we headed back home (~30 minute drive) and had more Johnny Walker and enjoying each others company before calling it a night.

Wednesday, April 11th
We all woke up around 9am and got ready for a full day. Today was the day that we were going to see Volli off. We ran a few errands and let Volli get a few gifts for his family before heading to Nikko's house to chill with Misty, Alexandra, and Cleo for a few hours.

From Nikko's house, we had to run a few more errands and then headed to the train station to send Volli back to his family. What a great time we all had! Yiorgos and Volli made it a goal to visit Ohio in 2015! We hung out in Romania first, now in Greece, next is Newark! I'm already counting the days...



After dropping off Volli, Yiorgos took me with an authentic Greek Football Game (that's Soccer in English, people). :) It was simply AWESOME!! Larissa played Veria and the crowd was nuts. Everybody was yelling and screaming in Greek, and the referee's had waaay too much help. :) The game ended in a 2 - 2 tie and all the fans went on with their day undefeated. Great experience! Everybody should make it a point to attend a European football game.

After the football game, Yiorgos and I picked up his cousin, Catarina, and began our 3 hour drive toward Athens. We arrived around 7:30 pm and dropped off Catalina with her boyfriend before meeting with some of Yiorgos' friends for dinner. We ended up eating at a very nice restaurant in downtown Athens by the name of Likiforos. Again, we gorged. It was great to be in the company of Yiorgos and his high-school friends. They spoke Greek at the speed of light, but took note to stop every now and then to speak English so that I could get caught up with the conversation. There were many times when everybody would speak English with one another so that I could be involved. I appreciated it, but also enjoyed listening to them talking in their native language.



We ended the night back at Yiorgos friend house, where we would be staying. His friend's name is Dimitrious (ie. Micho's for short) and he lives on the side of a mountain overlooking the Athens city streets. He was very hospitable and let me sleep in his bed while he slept on a cot in the living room. He insisted, and I couldn't say no. Like most Europeans, he has been a great host!

Thursday, April 12th
Around 9:30 am Yiorgos and I woke up and got ready for a full-on tourist day in Athens. Yiorgos was going to be my tour guide and he was VERY cheap. :) We started the day off by Yiorgos showing off his impressive parallel parking skills. The only parking place for miles around was on a 90 degree vertical drop and he nailed it in one fail swoop... in reverse. BAM!

From the parking wizardry location we began the climb up to the Parthenon and enjoyed passing all the ancient ruins of the Acropolis. We took tons of pictures! Between Yiorgos and I we probably snapped 200 unique pictures. I have both sets on my Mac and will cherish them forever.



We were supposed to meet Bamma somewhere in this area. Her and I were both going to be in Athens on the same day. Knowing this, she called me the day before my flight and wanted me to deliver a package for her from the states. Yiorgos and I walked around the Acropolis for about 2 hours looking for her while we were snapping pictures. Just as we were about to give up, I saw a face in a crowd:



After I gave her the package, we hugged and went our separate ways. What are the chances that two ex-exchange students in the French exchange program from NHS would be crossing paths in Athens, Greece (half way around the world) at the same moment in time without using GPS technology or a solid plan for meeting.

Yiorgos and I continued our climb down the Acropolis and made our way through the streets of Athens. We visited many sites and just soaked up the day in Greece, enjoying each others company. The streets were crowded with people and shops. On our tour we passed down Ermou street where there were hundreds of gift shops, we stopped for coffee at an outside table in Plaka. We also visited constitution square, where demonstrations take place almost daily. From here, we went up to the Parlaiment and watched the guards switch shifts for watching the tomb of the unknown soldier. It was quite a site to see. It was very similar to the tomb of the unknown soldier near Arlington Cemetery.



After watching the soldiers switch shifts, we headed toward the metro so that we could head back to the Acropolis where Yiorgos had his car (amazingly) parked on the hill. We got in his car and headed back to Michos house to get ready for yet another adventure at Eleni's house.

Eleni is one of Yiorgos friends that came to Newark with him back in 1998. At first I had a hard time remembering her, but as soon as I saw her I knew exactly who she was. The plan was to hang out at her house in Pireus (near Athens) and eat dinner. Her sister and brother-in-law came to join us and we all enjoyed each others company for about 3 hours. After dinner, Yiorgos and I headed back to Micho's house again and I began writing this epic blog post...

Tomorrow, we plan to wake up and drive back to Larissa so that we can enjoy the Easter holiday with the Valassis family. Rumor has it that we will eat so much food that we won't be able to walk. This is very similar to the last few meals that we've had here in Greece. I can't wait...

For now, this is my view:


Monday, April 09, 2012

Thessaloniki, Greece - Day 1

Well I finally landed in Thesaloniki, Greece. I have been reunited with my Greek brother, Yiorgos and we plan to take this country by storm once the crazy German gets here. We're currently waiting on him at the airport. So far we've been to the mall and had some Haagen Dazs and a few espresso's. I'm past the 25 hour mark with sleep and don't foresee me getting sleep anytime soon. I see it as a good opportunity for ultra training, others might argue the health ramifications though.

And, yes, I bought a bottle of Johnny Walker on the plane (doody free); we're going to have a taste test session later tonight back at Yiorgos house. Volli is in route from Bucharest right now. We just discovered that his flight was delayed so Yiorgos and I are taking advantage of the free wifi here at the airport. Yiorgos is watching sporting events on his iPhone and I'm (of couse) blogging. Dorks.

Here is a cool picture that I took of the Alps on my flight from Munich to Greece.



Oh and here is a big egg that I found in the middle of the mall in Thessaloniki. I can't believe nobody else saw it and put it in their basket... I got it!


Friday, April 06, 2012

Travelling Confusion

Today has been a whirlwind of stress. Actually, this last week has been a whirlwind of stress; good stress, not bad stress. Anyway, today it all came to a head.

I'm supposed to be leaving on a 4 week trip to Europe, starting this weekend. Today was Easter dinner at my parents house, and it was right in the middle of the day. Therefore, I crammed a double shift yesterday and woke up early this morning to try and finish up my project before heading to my parents to celebrate Easter @ 1pm today. I knew as soon as dinner was done at my parents house, I'd have to come home and begin packing for my early morning flight tomorrow. We've all been rushing around trying to get laundry done and my bags packed for an early 5:30 am wake up time. I admit that I was (selfishly) bummed that I wasn't able to meet my deadline for work and that I haven't been able to train at all this week for my upcoming marathon. Again, crazy week and even crazier Friday.

Fast forward to 9:30 pm (ie: moments ago). I get a message from Yiorgos (my Greek brother) who was asking for my flight details so he could pick me up at the airport on Monday. I flipped out, thinking he had his date wrong! I was sure that I was to arrive on Sunday afternoon. Immediately, I checked my itinerary so that I could send him my flight details and let him know he had to be at the airport a day earlier than he thought...

Once I checked my itinerary, I realized that my flight doesn't leave until SUNDAY MORNING.  I now have a completely free day with my family. It works out great after all. Bags are packed, I can try to finish my project tonight, I get to do a long run tomorrow, AND (best of all) I get to spend a full (no-work) day with my family. Anybody that knows my past travelling track record, knows that this is fairly typical of me. :)

Wednesday, March 28, 2012

Installing RVM on Ubuntu 11.10

RVM is an amazing tool. It's a tool that enables mixed you to switch between different version of Ruby with a simple command line entry.

Setting it up posed a few challenges for Ubuntu Server 11.10. I've installed it a few times in the past, but I'd always installed it in "single user mode". Meaning, I only installed it for my login which gave me the ability to install things in my own sandbox without requiring elevated privileges. However, for my web server I wanted to set up RVM for all users. This way my Git user can specify Ruby versions on demand just the same.

To do this, I followed the steps on their website, but I couldn't get my "rvm install x.x.x" commands to work. When I typed the following command:

rvm install 1.9.2

I got a slew of errors. This was never a problem for me in 'Single User' install mode, so I wasn't sure what the problem could be. I didn't do my reading and ended up trying all kinds of things. I checked the requirements, installed all kinds of additional packages, even updated / upgraded my entire environment using:

sudo apt-get update

as well as

sudo apt-get upgrade

I waited and waited while it updated my system. When I tried entering the rvm install command again, it still generated the same set of errors. As it turns out, I simply had to append rvmsudo at the front of this command, like so:

rvmsudo rvm install 1.9.2

This preserves the RVM environment and passes it onto sudo.  Once I did that, things started working. :) Moral of the story: RTFM!

Oh and you should note that this doesn't set v1.9.2 as your current Ruby version yet; it merely installs it. To begin using it, type the following command:

rvm use 1.9.2

Hope this helps somebody.

Tuesday, March 27, 2012

Git Bash

Since I've been using Linux, I find it painful to use the old cmd shell in Windows anymore. I've been using Windows for years, but never really got excited about the command line. When I made the switch to Unix, the command line became fun for me. I had full blown access to my computer using nothing but my keyboard. More impressively, I had full blown access to other (*nix) computers using nothing but my keyboard as well... all within the same terminal shell.

To me, it feels as though Unix made the command line it's foremost tool. Anything and everything can be done from the command line. In many cases, I've heard that many of the Unix applications actually interface with the kernel using command line calls to the various shell apps. Whereas, I feel that Microsoft really focused on giving most of it's power through various forms and dialogs. Most anything can be done inside the cmd prompt, I'm sure, but most of the functionality is taught and shared through the various user interface applications. Don't get me wrong!! There is great power there and it's very useful for most people! Hell, it's what I got started on; I respect my roots. :)

I never really appreciated the command line until I got my Mac. My buddy, Ben, showed me how much power Mac's have using nothing more than Terminal.app. All the sudden it became fun for me. I could open my Terminal app and punch in basic commands to make my computer do things. It was like programming my computer without using an IDE. It was very different from anything I was used to in Windows. Once the commands became natural to me, I began plugging them together using pipelines and so forth. At some point it all clicked and I realized how powerful the command line really was. The more I used it, the more I found myself customizing it to fit my needs. I could change colors, change my prompt, change the way I edited the command line, and so forth. I have all kinds of aliases defined that do some pretty sophisticated stuff with a few keystrokes.

What are my options for command line goodness on Windows though?

PuTTY is an old school terminal emulator for Windows. This tool is used more for logging into other computers though. It's not really intended for managing your local client machine. I'm sure there are ways to make it work this way, but it's not a good replacement for cmd in my opinion. This applications is how I was first introduced to Linux and SSH; it gave me a bad taste for Linux right away.

Console is a replacement for cmd, and I've not yet downloaded it. It sounds to me like it is more of a shell consolidator. Basically, it allows you to choose any shell that you want using a tabbed interface. So in "programming terms" it's more of a composite shell. :) This doesn't give me my Unix tool set though with all the customizations that I'm used to in Unix though... Again, I need to look into this more, but it's what I've gathered from my (minimal) research.

Cygwin is a set of tools that sit inside of the Windows cmd terminal (if I understand correctly). It allows you to manage your computer using all the same application names (ls, pwd, cd, etc..) but this isn't really a full blown replacement for bash; rather a set of tools that mask the cmd terminal with Unix like tools IMO. I'd much rather have a full blown version of the Bourne Again SHell sitting inside Windows 7 instead.

Along comes Git Bash for Windows.

When I installed msysgit, (the Git binaries for Windows), it came with a "Git Bash" shell. At first I thought it was another version for the PuTTY terminal emulator. However, the more I use it the more I realized that it's the real deal. It is (almost) exactly like having a Unix Bash Shell inside Windows finally. I use it for everything now. I open it up when I sit down to work and it stays open until I close my laptop. Best yet, I can secure shell into my *nix VM's and manage them remotely from Windows now. I no longer have to open up PuTTY to login to my VM's. I can grep, find, pipe, less, generate ssh keys, you name it. I can even customize the shell with a .bashrc file. For example, my command line editor is configured to use vim keybindings (ie. set -o vi)... IN WINDOWS!! It's great!

The one thing I can't do with this shell is sudo commands with administrative privileged. However, that's more of a Windows vs. Linux thing, rather than a bash shell feature. To get around this, I simply have to open another Bash shell "As Administrator" and perform my operations inside that shell. I don't mind this trade off.

By far, my favorite feature of having a bash shell in Windows is that I have full vi (pronounced "vee eye") editing capabilities on any text file. I'm finding it harder and harder to live without this single feature.

There you have it... Check it out. Git Bash for Windows is the cats pajamas.

Sunday, March 25, 2012

Hosting My Own Websites From Home

Last December, I purchased a handful of servers, along with some switches and a 7 ft tall rack to house them all off of a buddy. A month later, I got them setup at another buddies office, but after a few delays and realizations, I decided to bring them back home and set them up in my own house.

Doing this presented some challenges in regards to everything that comes with hosting your own servers in your own house. For example, the servers require a dedicated 220 service. Not only that, but I needed to put the servers in a place where they will stay dry and cool. Oh did I mention, the servers are loud as hell? Like "jet engine" loud... Lastly, in order for them to be useful, I needed to have my own dedicated static IP address running to the house. This one was the big one; it required that I switch from one ISP to another! With this change came a new TV service and everything. Yes, I'm committed to my goal of hosting my own sites. :)

Another big obstacle that I have yet to hurdle is that there is (currently) no place in our house that is ideal for setting these servers up that is dry / cool / sound proof. Given all of these factors, I've decided to shelve them for a few months and figure out a plan this summer to get a sound-proof room built with it's own thermostat in the garage with it's own 220 service (more on that in a later post).

In the meantime, I've configured my old development machine to be my web full time webserver; it's working great so far. The server is an old 4gb RAM / 64bit AMD box with a 160gb HD. I've wiped it clean and installed Ubuntu Server on it with OpenSSH and a simple LAMP configuration. I installed Git and configured Gitosis so that I can easily manage new code repositories from anywhere without ever logging in and configuring users and directories. The site is currently only hosting one Ruby on Rails site so far (which isn't online yet). Once I get everything ticking like clock work, I will host a slew of websites. Some for friends and family, but some for profit of course.

Everything has been pretty strait forward so far. The hardest part for me has been configuring the static IP. In the last 12 hours, I've spent 8 (solid) hours trying to get my network configured correctly. I've been through books, websites, Unix man pages, and a few shot-in-the-dark attempts. All that, and I'm still not online with it. It's amazing that I've made it as far as I have in the computer industry without fully understanding NAT, DHCP, DNS, and "Port Forwarding". I've learned more about these terms in one day than I have in the last 12 years, I still have quite a bit to learn too...

For now, Jennifer is just happy to have her internet back up. :) Tomorrow, I plan to call my ISP and have them walk me though it once and for all.

Friday, February 03, 2012

Friends of Blackhand Gorge

As many of my friends and family know, I'm very passionate about Blackhand Gorge State Nature Preserve. I visit the preserve about 3-5 times per week. We live about 1 mile from the preserve and I put in most of my training miles there on the various trails and the bike path.

Many people don't know that there is actually a LOT of history at Blackhand Gorge. This was a main stop for the old Erie Canal. This was a place where the old Urban Railway came through. This was a booming area back at the turn of the 20th century. Did you know that Hollister (yes the clothing company, Hollister) originated from Blackhand Gorge!? Even before Ohio became a state in 1803, this was a very active area for the Native Americans as well. There are so many stories and myths that surround Blackhand Gorge. One day I may do my homework and document some of the stories online... I feel very fortunate to live so close to this area. Really, I do.

Over the last year, there have been some significant changes that have taken place in the management of the preserve. A new guy by the name of Jody Holland has stepped up and gotten the community excited about the preserve again. Back in the 70's and 80's, Blackhand Gorge was a place where people would go to spend the day with their families or just get out to enjoy the beautiful scenery. It was a nature oasis that was open to the community.

Over time, the preserve has been neglected and was managed in such a way that people did not feel welcome here anymore. It's unfortunate, but true. I know this for a fact, because around here (small town) when I ask people if they are familiar with Blackhand Gorge, they typically respond negatively. Everybody seems to have a story where they were run off by old management, or they knew somebody that was run off by old management. I personally know about 5-10 people who have had a bad experience when visiting the gorge. This has scared people away. They then take their stories home with them and tell their friends and families. The stories spread and mutate and become more elaborate over time. After a while, the bad attention took on a life of it's own and people stopped coming to the gorge. The community was not able to do anything due to the restrictions on what the definition of a "preserve" are. Ultimately the combination of strict management and red tape caused the Blackhand Gorge to be neglected and forgotten for many years.

No more!

This is a new day for Blackhand Gorge. A new light has been shown on the preserve with an exciting new involvement from the community again. Jody has come in and brought a lot of positive energy and media attention to the preserve. He has rallied all of the necessary people together that can make a difference, and things are starting to take shape. The preserve has made front page news numerous times over the last few months. Key members from ODNR and DNAP have been out here to see just how beautiful this place really is. Land contracts are being revisited, and people are showing up to see what all the hype is about. It's great!

We (the community) have started a "friends group" for Blackhand Gorge. A friends group is nothing more than an organized group of people who volunteer their time and services to enhance state parks and forest systems. We have already had our first meeting to discuss some new ideas for the gorge. It was an amazing meeting; about 12-15 people showed up with ideas and goals for what we want to do for the preserve. My role in the friends group is the "designated geek". I manage all things IT. We have members in our group that specialize in many things and computers just so happen to be my thing. As a result, I've taken on the role of the web guy. I purchased a domain and setup a website for the Blackhand Gorge Friends Group:
www.FriendsOfBlackhandGorge.org
The site is still brand new. I purchased the domain a while ago, but really put up most of the content tonight. You can expect to see a lot of changes over the next few weeks and months. I'd like to put in a history section, and also put up some photo galleries to show off just how beautiful the place is during all four seasons. Eventually, we'd like to setup some advertising for local businesses to draw some traffic to the site, which will ultimately drive traffic to the park.

If you've not been to Blackhand Gorge before. Come visit! If you need a tour guide, ping me! Next time you're sitting around surfing Facebook or flipping through channels on your TV, get up and go visit Blackhand Gorge! You won't be sorry!

Tuesday, January 31, 2012

Regular Expressions vs. Legacy String Functions

Back in the day of Visual Basic 6, when you wanted to find some information from a long string, you were (almost) required to write a function that parses your string section by section and use switches or if blocks. In today's world, regular expressions lighten the load quite a bit. As I've been developing apps over the years, I've learned to love regular expressions and figured it was worth mentioning in a post.

Regular expressions are basically patterns that have their own parsing engine tied to them for stripping text-based information from a string of text. For example, say I want to strip a certain value from a nasty looking string, and I know that the string will be in a certain "format". By this I mean that there might be parts of the string that don't change, but the parts that do change, I want to use them for something else. Instead of cracking my knuckles and writing a loop to sift through the string character by character, I'm able to write an single expression to strip out "matches" one by one.

Consider the following connection string:


            Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\data.xls;Extended Properties="Excel 8.0;HDR=YES";

From this string, I want to be able to pull out the value of 'Data Source' (in this case c:\data.xls) and the value of 'HDR' (ie. YES or NO). Back in the day, I would write a few lines of code to Split() the string into pieces and then strip those pieces into shorter pieces and save them into variables. Something like this:

Dim filePath As String
Dim hasHeader As Boolean


Dim sections() As String
sections = Split(connectionString, ";")


For Each section As String In sections
  Dim pieces() as String
  pieces = Split(section, "=")
  If pieces(0) = "Data Source" Then
    filePath = pieces(1)
  Else
    If pieces(0) = "Extended Properties" Then
      Dim properties() As String
      properties = Split(pieces(1), ";")


      For Each prop As String in properties
        Dim values() As String
        values = Split(prop, "=")


        If values(0) = "HDR" Then
          hasHeader = CBool(values(1) = "YES")
        End If
      Next
    End If
  End If
Next

Look at all of that code!? Just to get two values from a single string. I used to write code like this in VB6 all the time. There are lots of assumptions in that code and it is not optimized at all, let alone understandable at first site. There are many chances for errors to happen in that code as well... Not fun.

Regular Expressions to the Rescue
When .NET was introduced, there was this new (to me) concept of regular expressions that allowed pieces to be picked out of the string as needed using a "pattern". This is very common in Unix and many other programming languages, but it was new to me at the time and intimidated me. It was one more thing I had to learn. I used to approach it with dread and felt like I had to relearn the syntax every time I used it.

Today, I actually think in regular expressions a lot of time. There are many special characters that allow the regular expression engine to understand certain functions. For example a "$" means "beginning of string". A "." means any character. A "+" means "one or more times". A "*" means "zero or more times". When you put these special characters together, you can do some very powerful things. There is all kinds of documentation on the internet to help you understand this language if you are interested. If you are new to computer programming, then I recommend that you learn this sooner than later. It will make your life much easier.

To get the values from the above connection string using regular expressions, it requires a very simple regular expression pattern:

provider\=microsoft\..+?\.oledb\..+;Data\sSource\=(?.*)\;Extended\sProperties\=\"".+\;HDR\=(?.+)\;\""

Once I've defined this pattern, I can use it to strip out the "filename" and "hasheader" values very quickly and efficiently. While this example is border-line elementary, consider stripping values from a 20kb Xml file or a huge Html string that you stripped from a web page. Better yet, consider the power that it offers you when parsing a 5mb log file for information. 

This might be over many peoples heads and it might be common knowledge for others. For me, it was way over my head for a few years. However, after using it so much and relying on it, it's become common knowledge; it is baked into my daily routines now. Regular expressions are a very common thing inside Vim, and many Unix command line programs. For example, if I were to paste the connection string into Vim, I could place my cursor at the beginning of the connection string and simply type "d/Data Source" and the entire string from "provider" all the way up to "Data Source" is removed.

Here is a killer utility application that you should put on your thumb drive and use if you need to parse a large text file for values: http://regexlab.codeplex.com/


It's free, and I've found it to be very very powerful when constructing complex regular expressions in my daily programming tasks.

Regular expressions. Learn them. Use them.

Thursday, January 19, 2012

Chesterville, ON

I'm out of town on business. I'm currently in the little town of Chesterville in Ontario, Canada. It's a beautiful place and I'm loving it. There's lots of agriculture and farms here, but it's all under about 4 inches of snow right now. As you might imagine, the weather is a bit cold... OK it's really cold. There is snow and ice everywhere and the wind is pretty brisk at times. Luckily I'm indoors most of the time and don't have to deal with it. The apartment that I'm staying in is upstairs from the office that I'm working in. Therefore, the only time I go outside is when I want to run and when I go out for lunch/dinner.

Here's where Chesterville is located:

View Larger Map

I landed early Tuesday morning and have been treated like a prince since my arrival. My host, Birket, is a wonderful host and has taken me to lots of fun events. As soon as I landed, he immediately took me to a great restaurant for lunch where he knew the owners and we got top notch service with some amazing food. I was a special guest at his rotary club meeting. I have got to enjoy the company of some pretty amazing locals. I even got to experience Canadian pub life (hockey et al) two nights in a row. Last night I enjoyed some Mexican cooking classes at his pub and that was extremely fun. I've enjoyed some fine cuisines at various local restaurants. Everybody here has been so hospitable.

The scenery up here is amazing as well. Yesterday I took a 4.5 mile run along the frozen highway and it was a beautiful run. Kind of technical due to all the ice and frozen slush, but beautiful none-the-less. I took off out the door around 4:15 pm and the sun was setting on the horizon. It looked like the entire western sky was on fire. Unfortunately I had no camera, so you'll just have to take my word for it. The weather was "butt-cold" and I had a frozen ice-stache on my upper lip to go with my red nose and red cheeks. I think some of the drivers thought I was crazy, but I really enjoyed the run. I do plan to get in some miles tomorrow before my flight home if time permits... We'll see.

Tonight I went to a nice restaurant with Raymond (an old friend from my Virginia trip last spring) and we had a great evening together. When I got back to the apartment, I had a lot of time to myself, so I dialed up Jennifer on Skype and we've been talking for the last hour or so. We caught up on the weeks events. Apparently we had a showing on our house today. I liked the way that worked out because I didn't have to be there to do any of the cleaning. :) We're pretty sure it will fall through and our contract is up with our realtor in the next week or two. Looks like we ain't goin nowhere. No worries. We'll make it work.

So I have a flight back to the states tomorrow and I'm pretty excited to get back to a normal schedule. The last month or so has been absolutely crazy. Lots of holidays followed by lots of travel. My goal is to get back to the basics and catch up on some projects I've been putting off too long (talking about you Pop!). :)

Here's what I'm looking forward to this weekend:

Jennifer and Lizzie <3

Monday, December 12, 2011

Writers Block...?

Last month was the first month in all of my blogging history where I did not post something to my blog. Believe it or not, it felt like a huge deal to me. It proved to me that blogging isn't part of my weekly tasks anymore. I used to read blogs at least once a week. I don't even do that anymore. I've not read a friends blog post in... months. :( I'm honestly not sure when I stopped reading blogs. I think it happened slowly as more and more social networking sites started taking over the internet. I mean with Facebook, Twitter, Google Plus, and everything else right now, the internet has just gotten too damn chaotic. Who wants to read big ass posts about something anymore. Most people just focus on the "now" with Facebook updates, Tweets, etc...

I have some new goals for 2012, so I'm sure I'll be posting about them shortly. I'd like to try the 100 miler again, I'd also like to build up a project that I've been putting off for WAAAAAY too long. I have a few new websites that I'm managing, but they are in their infant stages right now.

Right now, I have a full plate and all time spent on the computer is occupied by work or learning. I've simply not allocated any more time for writing anymore.

Tuesday, October 11, 2011

A Vague JQuery Template Error

I have been getting an error in JQuery Template, and it's one of those errors that is impossible to debug. It's an issue that can only be fixed by intricately checking your code line by line, character by character. Here is the vague error that I'm getting:
Uncaught SyntaxError: Unexpected token return
Actually, here is the full "stack trace" (if that's what you want to call it) of the error:



I get no js compiler errors or anything, I just get this javascript error when I click on a radio button, but nothing more. My page loads correctly with no problem otherwise. Because of this fact, I was forced to inspect my code over and over and over and over... I removed code, I added code. I reworked my html a few times as well, but still got the error every time. I was literally going in circles trying everything.

The problem? I had an extra jQuery template tag in the very bottom of my script like this:

{{/if}}

At one point I tried combining both states into a single template using {{if}} {{else}} {{/if}}, but then gave up on that idea... Clearly I missed the closing tag and then never bothered to look at the bottom of my script tag when things didn't work. I'ts kind of insane that so much time was wasted on such a silly oversight on my part... Oh the whoa's of a programmer. Back to the grind.

Wednesday, October 05, 2011

Ruby On Rails Fan

OK, so I've been going through the online Ruby On Rails Tutorial by Michael Hartl for the last few weeks in my spare time, and I'm a better programmer because of it. I've not taken any shortcuts and have learned quite a lot. The whole Model / View / Controller aspect of it came pretty easy to me since I'm a full-time ASP.NET MVC developer in my day job. Server side tags, module level variables, and helper modules are shared concepts from the ASP.NET MVC world (which I think they stole from RoR, but...). I'm really liking my new hobby.

I've learned quite a few tricks that make Ruby on Rails much more pleasing to work with than ASP.NET MVC. Namely, I like the built-in gem utilities (package manager for Ruby on Rails), I also like the command line utilities for defining database schemas, generating test records, and auto generating oodles of code. There are so many gems that work together to support testing controllers, models, and views on the fly as you code. I always thought of Unit Testing as a good thing, but it always felt like I was forcing myself to learn / practice TDD. I just never quite "got it"; when I would write unit tests I felt good about it, but as new features come into my project it is very easy to just code my projects without writing unit tests for every little thing. With Ruby on Rails, however, it feels very natural and is almost required due to the dynamic nature of the language. RSpec makes creating tests a breeze.

I'm currently hosting a few Ruby on Rails projects on Heroku, and even doing this is brain-dead easy. I literally auto-generated a Rails project from the command line, and then used the Heroku gem to "git push" my code to Heroku. It does the rest and builds my project and deploys it for the world to see.

Just the other night, I bought a domain and plan to run my very own Ruby on Rails project... I won't give away the domain name yet, but know that I'll be making a big deal of it within the next few months. In short, I love Ruby on Rails and everything that goes with it, including Vim (with rails.vim), Git, Autotest (with Growl), Spork, TDD, and everything else). I can now say that I'm a ASP.NET MVC developer by day / Ruby on Rails developer by night.

Fun!!

Tuesday, October 04, 2011

Testing the 'A' key

I came up with this while trying to test if I still had static electricity inside my board:
an alpha alligator almost ate annies apples after alfred asked again and again.
Figured I'd share it in case anybody else needs to test their 'a' key. :) Truthfully, I made it up on the fly, and impressed myself so much that I had to share it.

Wednesday, September 28, 2011

Disabling Help

As I mentioned in my last post, I'm dealing with a new keyboard layout. My resolve to navigate around seamlessly with my new layout was to install ViEmu which would allow my VS text editor to emulate the Vim keyboard layout. I've been loving it. There are some inconsistencies inside Visual Studio (ie. CTRL+R is used for ReSharper, CTRL+Y is used for Vim, etc..), but for the most part, I really like it and feel right at home.

The one thing that was causing me the biggest problem though was that I keep reaching for the 'ESC' key, but continuously hit the F1 key. This of course brought my productivity to a screeching halt while it loaded. Of course, I would always wait for it to load, then close it immediately.

My resolve to that problem was that I disabled it. I disabled help. Call the authorities, report me, I've done the unthinkable. I never thought I'd live to see the day when anybody (let alone myself) would disable help. It actually made me feel dirty when I disabled it... Anyway, I free flying now!

I thought this was worthy of announcing on a blog post. I've graduated to the Google Help File.

Friday, September 16, 2011

Visual Studio 2010 + Resharper 6.0 + ViEmu + AutoHotKeys = Developer Bliss

I just got a new work machine. It's strictly for work, so my job paid for it. My boss helped me configure it and allowed me to get a few mods that make it even more bad-ass. It's a Lenovo ThinkPad W520 with 8gb of RAM, 500gb 7400 RPM HD, and he also got me a 128gb SSD drive that I plan to swap out for my main drive. It's already fast, but when I'm done with it all, it's gonna scream. :) Thanks Bob!!

My MacBook Pro is still the bee's knees, but it just wasn't cutting it for my day-to-day Windows programming solution. I'll absolutely be using it for all of my personal use and Ruby on Rails development. It has gigs of music, movies, and photos on it, along with my Quicken and lots of other personal documents and files. It will continue to be my Unix playground and I'm very excited to use it for just that... It has retired from the hustle & bustle of the daily grind, and plans to live the high-life now as a "personal computer". It's earned it!

During my transition to my new laptop, I was able to configure my development environment to be exactly how I wanted it. Since my new machine has 8gb of RAM, this allows me to trick my VS2010 environment out to the max without having to worry about slow downs. My biggest problem with Parallels was that I could only (safely) allocate 2gb of RAM to my Win7 VM. I had to disable the nice Aero / translucent theming, and lots of other goodness. Even after doing all of that it still came to a crawl whenever I'd be flying along with my coding. There were times when would literally just have to put my laptop down and walk away or else I would throw it against the wall. This new laptop should curb those impulses. :)

One of the main problems with switching to any new laptop is learning a new keyboard layout. This is especially important for programmers who rely heavily on hot keys, like CTRL, ALT, HOME, END, INS, DELETE, PGUP, PGDN, F[1-12] keys, and the 4 arrow keys. There is no real "standard" for these key locations, and it seems like every computer manufacturer has their own idea of where they "should" go. My personal opinion is that the Microsoft Ergonomic Keyboard 4000 nailed it! I actually own this keyboard and it has moved with me through a few different computers. The function keys were laid out perfectly; they were exactly where they were "should" be.



As you might imagine, it was a hard transition to move to the Mac and learn the key combinations. Especially since the mappings were even altered in order to pass through into Parallels. There was no DELETE key, no INSERT key, no HOME key, no END key, no PGUP, and no PGDN key!! I had to use a combination of other keys to get to those "functions" using Mac's 'fn' key (ie. the fun key). Even the function keys were different; for example I had to know that F[1-7] worked as expected, but F[8-12] required that I press the Mac's 'command' key. After 2 full years of learning these nuances and mastering the different key mappings, I'm now back to the beginning with a new layout of hot keys. Ugh!!

While I can't fully alleviate the pains of switching keyboard layouts again, I can take comfort in knowing that I'm a Vim junkie and Vim doesn't use most of the hotkeys for editing text.
  • [h] = {left arrow}
  • [j] = {down arrow}
  • [k] = {up arrow}
  • [l] = {right arrow}
  • [0] = {home}
  • [$] = {end}
  • [x] = {delete}
  • [ctrl+d] = {pg dn}
  • [ctrl+u] = {pg up}
  • ... and MUCH, much more!
I just needed to find a way to switch up my keyboard mappings to mimic the keyboard mappings of Vim. Luckily, someone has already thought of this!! There is a product out there called ViEmu that extends Visual Studio's text editor with all of the Vim goodness that I've so pains-takenly learned over the last year. I'm currently running an evaluation version of it, but I can already predict that I'll be forking over the $99 for a license very soon. It's simply genius! Thank you Symnum for this wonderful product. :)

Once I installed it, I had to re-enable my ReSharper keyboard mappings going to ReSharper - Options... - Visual Studio Integration - Keyboard Shortcuts and selected the 'Visual Studio scheme'. This allowed me to continue to use things like [ctrl+T], [ctrl+R+R], etc..). There are a few nuances that I need to work around, but in the grand scheme of it all, this is much more fluid than looking at my keyboard every 2 minutes for simple navigation. I'm loving it!



To help further keep my hands on the "home row", I found a post by another fellow-Vim'er by the name of Jean-Paul S. Boodhoo. Jean-Paul described how he used a tool called AutoHotKey to map various key combinations to be more "Vim-like". This way I don't have to use [ctrl+shift+alt+up] to move code up and down. The first three keys are easy (bottom right corner of every keyboard layout), but the [UP] key changes and takes my hand far off the home row. Instead AutoHotKey allowed me to map it to [ctrl+shift+alt+k]... Very Vim-savvy.

I finally feel comfortable writing code on my new laptop. Yesterday was a LOOOOONG day, because I was forcing the new layout onto myself and it slowed my coding down so much. I'm used to coding at the speed of thought, and felt crippled. With ViEmu and AutoHotKey both configured now, I'm flying. The last 2-3 hours have been simply painless.

Now if only Blogger had a Vim editor...