Showing posts with label computers. Show all posts
Showing posts with label computers. Show all posts

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.

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.

Friday, August 05, 2011

Time Machine and Parallels

I recently (like yesterday) converted my Windows 7 BootCamp partition over to a virtual machine. There were many factors that led to this, but ultimately it boiled down to the fact that I ran out of hard disk space on my partition and there was no way for me to increase the capacity. In the past I would have to go back and uninstall a bunch of applications. However, this was getting old and it was a never ending battle. I was living on the edge (of disk space).

My solution was to virtualize my Windows 7 machine and scrap my partition. This would allow me to give more space to my Windows 7 OS whenever I want to (along with other benefits). The whole process took about 2 hours. I started the process @ Barnes & Noble and then ended up driving home with my laptop open in my passenger seat. The process finished as I was driving through Newark. :)

One of the first things I noticed was that Time Machine was backing up my entire 50 gb image every hour. It actually did this 3 times (which is now hogging up 150 gb on my Time Capsule). I ended up having to "Exclude" my vdd file from the backup process and now my backups are normal again.

I feel much more confident about having my Windows 7 machine as a virtual hard disk now. I still have a lot of learning to do in regards to cloning a base image of it so that I can install other software without affecting my MAIN image. But for now, I'm just happy to be able to "Suspend" my image and free up some resources whenever I want now... without having to "Shutdown" Windows 7. :)

Monday, April 18, 2011

Ordering Domino's Pizza Online

Holy crap! I just ordered my first pizza online at Dominos.com and it is the coolest thing ever. I got to go through the process of ordering my pizza down to extreme minor details about how to prepare it. I configured it to be light on the cheese, extra shrooms, gimme a tub of garlic dipping sauce on the side, etc... Even after I placed my order, I got to see that "Jessie" started preparing it at 7:02pm without having to refresh the page. It was only seconds after I click "Place Order" too.


Talk about customer service!! I would definitely recommend ordering your next Domino's Pizza online! Put the phone down and enjoy the interactive experience.

Since writing the above two paragraphs, my pizza is now "In the Oven"!

Domino's get uber geek points from me!!

Wednesday, February 23, 2011

Hacking Together Good Code Quickly

I'm kind of a perfectionist when it comes to writing good code. I'm not saying that I write amazingly perfect code all the time. However, I do take pride in writing good code and always over-analyze (not in an OCD way, but...) my architectural choices when designing systems.

Well, it's officially crunch time on a project that I'm working on, and I'm forced to add features into the application with the quickness (ie. hack). :( It's not bad code. It works. However, it is not written to my standards and has some majore "code smell" to it.

Things like this:


DoSomethingCoolHere();

foreach(var form in Application.OpenForms)
{
if (form is AnalyzerForm)
((AnalyzerForm) form).RefreshDisplay();
}


I would much prefer to NOT use the 'Application.OpenForms' static property, nor would like to cast objects to specific types to call a method on them. However it works for now, and can be refactored later. At least I can take comfort in knowing that I get to refactor as soon as the "facade" is working.

These are all the secrets that I'm going to expose right now about our amazing software. :)

Wednesday, January 12, 2011

CodeMash v2.0.1.1 (Pre-Compiler)

The time has arrived! I'm here at CodeMash and loving all the stuff that I'm learning so far!

I arrived yesterday around 1pm. When I arrived, I ended up geeking out in my room for a while, learning KnockoutJS. KnockoutJS is a very slick little javascript library that allows developers to integrate the MVVM architecture pattern into an Html page fairly easily. Anybody that is familiar with Silverlight or WPF will have no problem using it. However, for me it has been quite a learning curve since I'm not fluent in either. I've only been using the MVVM pattern (in my head) over the last month or two. I've never actually applied it until now.

Around 4pm, I headed down to the conference area and helped stuff the shwag bags with many other volunteers. They setup all the fliers and pamphlets on a table, and about 10 of us made a loop where we would walk around the table and grab one sheet at a time... At the end of the table, we would put the papers into a bag and start all over. I hung out in there for about an hour and a half before sneaking out the door.

After volunteering at the table, I got checked into the conference, then walked around the Kalahari for a while. While walking around, I actually ran into Carl Franklin from .NET Rocks. I stopped and talked to him for a little while, and was pretty surprised that he remembered me. After that, I went to the water park area and sent some water park pictures to my girls via Picture Mail.

Then around 7pm, I headed down to the gym to get my sweat on. I met a few guys (Chad and Bob) who were doing the P90X. They were on their 3rd month of the program and stated that they have noticed great results as well. We talked off and on for a while, then I headed back up to my room to get a shower before going down to the bar to "network" with some other geeks.

As it turned out, I actually ran into Chad and Bob again. We talked for quite a while, and then along came Greg Malcolm. Greg and I sat and talked and drank til about midnight. We talked about all things geeky, including Ruby, Rails, Javascript, Perl, Python, C#, ASP.NET, Git, SVN, and I think Scala actually came up once or twice. Around midnight, we both had our buzz on, so we went our separate ways to prepare for the big Pre-Compiler day.

Pre-Compiler
Whoops, I slept in a little. I had my alarm set for 5:30 am with hopes on getting a quick run in before breakfast. Instead, I woke up at 8:15. :) I scurried around and got ready to try and get a bit of breakfast before they took it away (@ 8:30). I made it! Barely, but I made it.

From breakfast, I went to the Ruby Koans lab hosted by Joe O'Brien and Marc Peabody of EdgeCase. I learned so much!! I basically learned that Ruby is the shit (this is a compliment for all my non-English speaking readers). I dabbled in the Ruby Koans last year at CodeMash, from a friendly tip. However, this year I dedicated myself to a full 3 hours of NOTHING BUT RUBY! Again, I can't say enough about Ruby. Joe and Marc are very passionate about the language and they are really good at getting people excited about the language and developer culture. I've already committed to attending the Columbus Ruby Brigade meeting on Monday. I made it through about 80 of the 274 Koans, and plan to finish them before Monday's meeting.

I had some great conversation with some smart people at my lunch table around Silverlight and WPF. Then from lunch, I decided to attend the Git Immersion presentation by Adam McCrea and Jim Weirich (also from EdgeCase). They did a great job explaining how Git is different from SVN and how it is an invaluable tool for all developers. Jim presented the Git system in such a way that made it easy to understand. I have it installed and will be using it quite often from now on.

The best part about both sessions today was that I got to use my crazy cool Bash and Unix knowledge in both sessions. Both sessions were 100% command line driven via Terminal.

Yeah, I'm having fun!

Friday, August 13, 2010

Software Architect or Software Developer

Not sure which is better: designing complex systems on the whiteboard or coding and debugging the implementation on my computer?

I honestly think that I like the software architecture aspect of my job more than the actual coding. Nothing beats those glorious "AHA!" moments. Sometimes they take hours, sometimes days, and sometimes even weeks to figure out. I just had one hit me that has taken me almost 2 years to figure out!!? It's not like I was trying to figure it out for 2 years and couldn't, but more like I have been blind to it and didn't give it much attention. I'd been working around my own nasty design for 2 years and I finally sat down and figured it out tonight.

This system I'm building has been extended so much over the last 2 years, and I'd complicated a particular piece of our product so much that every change I was making was adding to the headache. We are constantly adding new functionality to our product, and it's usually done is such a manner that it needs to be done sooner than later. The core foundation of our solution has been refactored a few times in the last year or so and it is very solid. I have squeezed in a week or two here and there to ensure that it is able to scale as needed. However, as things got further from the core, they seemed to get more convoluted and I was breaking out into multiple branches of (very) similar logic. Tonight I was able to doodle up the entire system on my whiteboard with letters, circles, arrows, rectangles, reds, blacks, and blues. Then once I had it all visually mapped out, I did a few swipes and connecting of objects with my dry-erase markers and was figured out!

Who am I kidding though? Tomorrow, I get to sit down and apply the code to make it happen and that's pretty damn fun too. It's always nice to see your ideas go from a concept to an actual working system. Especially when that working system is a more efficiently designed working system.

I love my job.

Wednesday, February 17, 2010

Hi, I'm a Mac

Jennifer and I broke down and got ourselves some MacBooks. She got a standard MacBook for her photo taking, Facebooking, eBaying, and CraigsListing. We got all the photo's moved over to her machine, since she's the one that manages the pictures. They sync up to our Time Capsule so we have a pretty solid backup solution now. She switched from Picasa to iPhoto and she seems to like it. Other than that, she mainly uses Safari for everything else...

I on the other hand got a MacBook Pro, and it acts as my new development machine. Already, I'm loving it. It took a while to get used to the new keyboard setup, but I'm getting better each day. As a programmer, I rely very heavily on key combination's, and the Mac keyboard is quite a bit different from what I'm used to (to say the least). I installed Windows 7 on a second partition through BootCamp. I then purchased a license for Parallels 5.0, and run my BootCamp partition through a virtual machine. My Windows 7 setup has everything needed to be a full blown development machine. I have SQL Server 2008 with Analysis Services, Visual Studio 2008, Office 2007, SubVersion, Total Commander, Daemon Tools, Paint.NET, Reflector, ReSharper, etc...

Aside from my Windows VM, I also installed Ubuntu on a separate VM so that I can play around with MySQL and learn the basics of Linux. My goal is to use it as a database server while I play with with Ruby on Rails. I'm using SSH for the first time in my life, and it's quite the learning curve for me. I'm forcing myself to to keep my Terminal.app console on my Mac open. I'm also forcing myself to NOT install TextMate and learn VI. I think it's safe to say that I've been spoiled with Visual Studio's IDE for waaaaaay too long. :)

Also, I purchased a family pack license of the iWorks suite and I'm really liking it so far. Numbers has some pretty cool functionality in it. I especially like how you can add multiple tables on a blank canvas and size them independently. The summary feature is slick too; it allows me to highlight a range of cells, and drag / drop one of the summary values into a new cell to build a separate table of summaries however I see fit. The presentation options are much better than Excel in my opinion, and it's much easier to get a spreadsheet into a "report mode" using Numbers than Excel as well... again, in my opinion.

Of course, the girls really like the Photo Booth app. Of all the things this Mac can do, they ONLY want to play with Photo Booth. Both Jennifer's and My MacBook are polluted with pictures of little warped kid faces. :)

Friday, January 29, 2010

Codemash v2.0.1.0

This post is long overdue... oh yeah, and long itself. :P Basically, everything below could be summed up into one word: Codemashkickedass!

I attended CodeMash this month and it was a blazing success (yet again). This has become a nationally recognized event, bringing in A+ keynote speakers from all over. The inaugural event back in 2006 brought out The Gu himself for crying out loud! Each year seems to out-do the year before, and this year was no different. I mean, last year, I played GuitarHero with Scott Hanselman!! This year was very laid back for me, and I'm already excited for next years event. I actually plan to continue my attendance to CodeMash each year until I get out of the computer business and move to Maui to become a full time surfer. (yeah right)

Ironically this was a very low-key year for me. I've been at every Codemash so far, and this was the first one that I attended as a .NET developer desperately wanting to learn something new. Usually I just go to see what I can learn, but with no real goals of getting my mind blown. I used to mainly get excited about going to meet up with all my geek friends. I've never really taken the sessions for granted before, but the last few years I'd always run around with my entourage and just kind of "be there". However this year it was just me, and I was set to learn a lot of stuff; I was on a mission to learn Ruby.

Wednesday
I woke up at 4am and packed my drumset into the car (more on this later) and headed up to Kalahari Resort for the 8:30 am check-in and a nice breakfast before the 9 am Precompiler sessions start.

Test Driven Development - Leon Gersing
For the Precompiler session this year, I attended Leon Gersing's - Test Driven Development session. This was a very (, very, very) cool session where Leon actually got requirements from Jim Holmes (The Codemash President) for a "session scoring system". It was Leon's job to lead a (large) group of willing developers to build this system from Concept to Completion in one day. It seemed impossible as the session started and Leon was very casual in getting everybody setup with the tools needed for the day.

I literally sat down in the 2nd row knowing zero about Ruby, Rails, Git, or GitHub.com... and what the hell is a Ruby Gem?! :) Leon used a rendition of Scrum, and that, I did know. I was on a team that implemented scrum at my last company, and it proved to be a very successful approach to managing epic projects.

Leon was awesome in his role as the Iteration Manager. He encouraged all of us to be "courageous" and just be real. If you didn't know something, speak up and let everybody know. There's no shame in not knowing something. I actually used it a few times in order to get all the tools installed on my machine. I felt as though everyone around me was leaps and bounds ahead of me as I struggled to understand simple concepts like installing gems and understanding the what Ruby was and what Rails was.

I sat through the morning part of the session, but decided to move onto another session after lunch (no hard feelings Leon). :) I was simply in over my head without knowing Ruby or Rails. The team I was in had good knowledge of these technologies and I felt like I was (1) slowing them down and (2) learning nothing as they pushed forward without keeping me in the loop. No blame, just the facts. I plan to learn Ruby on my own within the next few months. I've heard too many good things about it to not give it an honest effort.

Advanced Presentation Patterns - Jeremy D. Miller
At lunch I actually sat next to Jeremy D. Miller (Mr. Code Better, himself). I was sitting with some other people and he sat down next to me. I had no idea who he was so I (of course) introduced myself only to find out it was him shortly thereafter. I've read his blog in the past and have known his name for quite some time. It was cool to shot the breeze with him, if only for a minute or two. After I finished eating, I actually decided to attend his session after lunch on a whim. It was standing room only, so I stood in the back and watched as he discussed different concepts for building robust user interfaces that allowed full control over the hosting UI dialog in regards to adding buttons, menus, and mapping navigation between windows. It was pretty informative, and I took some intense notes as he showcased some pretty complex user interfaces concepts with simple enterprise architecture models.

After this session, I went upstairs and decided to take a little nap. Again, I woke up at 4 am, and it was now approaching 5:30. After a short 1-2 hour nap, I woke up and took an intense 4 mile run on the treadmill and then headed out for a quick bite of dinner. Precompiler day was over.

Thursday
The keynote was awesome! Mary Poppendieck gave a great presentation outlining the 5 Habits of a Successful Lean Organization:
  • Purpose
  • Passion
  • Persistence
  • Pride
  • Profit
She showcased the attributes associated with teams and business that have succeeded. And gave detailed specifications and examples on how they succeed. For example, on thing that stuck out for me in the 'Passion' section was to hire and enable passionate people. When people are in a position to do what they love to do, they will exceed and spread excitement to those around them. Ironically, she showed how open source projects tend to be successful by nature due to the fact that the people involved are passionate about what they're doing... even though they aren't getting paid. I could go on about this keynote as I took a lot of notes and really enjoyed her keynote.

What Makes Ruby Different - Joe O'Brien, Mark Peabody, and Leon Gersing
After the keynote, I headed over to "What Makes Ruby Different" where the EdgeCase guys showcased various aspects to the Ruby language and concepts that let Ruby stand out from the other languages. It was very informative and I learned quite a bit. They showed how a few lines of Ruby code can go a long way, and showed the different approaches of the same concepts in other languages. While the other languages were purposefully "ceremonial" to drive home some key points, I did gain a lot of respect for the Ruby language.

After this session, I got a few things done and then sat with Josh Holmes at lunch while we watched Hank Janssen give a keynote about open source technologies that Microsoft is working on. It was very informative and I learned that Microsoft is actually giving a lot of attention to this area, even though they are known for avoiding it. The ecoustics were difficult at times and we had a hard time hearing at times, but the slides really painted the pictures pretty well.

Ruby and Rails for the .NET Developer - Matt Yoho
Following lunch, I attended the Ruby and Rails for the .NET Developer. It was a toss up between this session and Powershell: Ten Things You Need to Know - by Hester and Lerch. I was happy that I attended the Ruby session, for I learned even more great things about Ruby. For example in Ruby, when you connect to a database, the language itself is so descriptive that you can query data simply by calling it in "english" like method calls. For example if I'm querying a table and want to find a row by a certain column, I simply say:
(note: ignore my syntax ignorance)
def rowByUser = db.find_by_username();
def rowsByState = db.find_by_state();
I don't have to actually create these methods to query the database by user name and by state. In .NET there is a lot of extra work that we (as .NET developers) have to do in order to make these two calls work. Not with Ruby! Rails does this automatically!! That is cool!

Vendor Sessions
For the vendor session, I attended the Telerik Code Ninja session where they showed some cool little coding tricks.

Refactoring the Programmer - Joe O'Brien
This was an awesome session. I'd introduced myself to Joe earlier in the day during lunch break or something and he is a very humble person. I've seen him at Codemash in previous years and have attended sessions of his before. I have actually followed him on Twitter for sometime now and he is just an all around great guy. This session was about getting developers to stay on top of their game and keep their skills sharp. This is something that I have to keep reminding myself actually, for I tend to get comfortable in my current skill set and have to force myself to really explore new things around me.

Joe was hilarious, for his session was another one of those sessions that was standing room only. Best yet, he didn't have his projector adapter (ie. "dongle" (ie. my wife's favorite geek word)) and therefore was forced to do his presentation with no over head display. It was just him and his scotch (?) in front of ~100 geeks. He nailed it! He kept it humorous and interesting, and best of all he provided some great advise for everyone in the room. He left everybody with 4 great books to check out and read:
... these are all in my Amazon wishlist (hint hint).

Vendor Sessions
After Joe's session, I walked around and talked to a lot of the vendors. I remember being there as a vendor myself, and recall how frustrating it was to see people walk by the booth all day long but never stop. I stopped at every single booth and gave them my undivided attention for as much time as they needed to really explain their product to me. Of course, I gathered some t-shirts and drink tickets too. ;)

Ruby and Rails for the .NET Developer - Matt Yoho
After walking around the vendor booths, I headed over to see some of the cool things that Ruby has to offer for me. Unfortunately I only had about 15 minutes to spare and (honestly) I was having a hard time keeping my eyes open at this point. :( It wasn't the information that was making me tired, it was my brain that was making me tired. I tried to focus, but found myself slipping in and out of consciousness here. Sorry Matt, I'm sure it was a great session; I came in late, but... never really showed up I guess.

Dinner and Jam
From here, I stumbled out into the hall and got some dinner. After dinner, I headed up to my room and gathered my drumset. Upon gathering everything, I quickly realized that I HAD NO CYMBALS!! I had packed everything except for my cymbal bag. This is what I get for rushing out of the house at 4am I guess. It sucks that I packed all the big / bulky stuff, but forgot the one consolidated peice of equipment in the basement. I couldn't believe it... I had brought a set of toms with a bass petal. :( Luckily Grag Malcolm had brought his drumsticks! Otherwise, we would have been playing hand drums (yeah, my drumsticks were in the cymbal bag).

Regardless, I set up the drums and decided to go mingle instead. I caught up with some fun friends and we all played euchre for the remainder of the night and drank a lot of booze. Fun was had by all! Unfortunately, I didn't get to see one second of Enter the Haggis. I'm kicking myself for that!! :(

Friday
Woke up at 7am sharp and then headed back up to my room to change and workout for the first round of sessions. After that, I went back to the sessions and got into some cool content.

An Introduction to Functional Programming with Scheme - Michael J Norton
This was a bit over my head. I tried to get into it, but I went in knowing very little and left knowing just as much. I'm sure had I known some of the functional concepts that were being discussed ahead of time, I would have been able to keep up. I left early and mingled. :(

It was about this time where I'm getting fuzzy without my updated schedule list; a lot changed in the schedule that I"m going off of..

Pragmatic Keynote
I do recall the keynote by Andy Hunt, and he was AWESOME! I really do plan to get his books and catch up on all the great content I'm missing. He was a great keynote speaker as he really knew how to work the crowd and had everybody's undivided attention for his entire keynote. I took a lot of notes and really enjoyed the lunch break.

Analyze and Optimize your .NET Web Application - James Avery
I learned quite a lot in here. James demonstrated how to fine tune any ASP.NET application using a set of profiling tools. He started with the ever famous "Nerd Dinner" and found that it was calling the database countless times for simple lookups. He used tools like RedGate - Ants Profiler, SQL Profiler and some other tools to help him isolate the bottle necks. It was pretty interesting to say the least and I learned a thing or two. Great session James! :)

Raffle
I didn't win anything... again. Four years in a row, nothing. Oh well, it was fun to sit and watch others win in a weird way. Plus the CodeMash crew always works the crowd pretty well with shenanigans and cool giveaways. Simply a great event, CodeMash organizers!

If I didn't provide enough content for you in this single post, please read more here: http://groups.google.com/group/codemash/web/codemash-2010-bloggers

Tuesday, January 12, 2010

I'm LogMeIn Savvy

I just signed up for LogMeIn. This totally solves so many problems for me. Ever since my Toshiba died, I've been stressing out about getting my new laptop setup with all the software I need in order to attend CodeMash.

After a few minutes of stressing, I realized that I don't need to have everything installed on the new laptop. I can just use this computer while I'm away at the conference. The only downside to this little epiphany is that I have to have an internet connection to be productive. This causes problems when I fly, and when I'm at a location that doesn't have internet. I do know that CodeMash has had spotty wifi at times due to the mass amounts of geekery going on. However, that's ok, because I'll probably only be logged into my computer when I'm back at my room anyway. While I'm at sessions, I'll just have my man-purse to take notes, and will probably be developing in Notepad as I learn how to become a Ruby guru.

For those that haven't heard of LogMeIn, you should definitely check it out. It was blazing easy to setup and best of all, it is FREE! It took me about 5 minutes total to get setup; I created an account, installed a little application on my desktop, and then went upstairs to test it out from my laptop. Viola!

Technology kicks butt!!

Friday, January 08, 2010

The Toshiba Died Today

Back 2004, I got a new Toshiba Portege M200 Tablet PC for work. It was the cream of the crop in it's day.

I love this thing. It's been the most solid and reliable laptop I've ever seen anybody own; I've been proud to call it mine. It's gone everywhere with me. From west coast, to east coast. I took it to Russia with me, and it was my main development box while I was in France a few months ago. Every time I visit with my friends at coffee shops to code, it goes with me as well. Jennifer uses it exclusively in the house, and the girls even tinker on it from time to time to play WebKinz or draw in MS Paint. I can honestly say that it's been a solid member of the Hardbarger family.

Well, Jennifer was upstairs surfing on it this evening, and she got the blue screen of death. I tried a few things to see if I could find what might have happened, but to no avail. It's officially dead.

I'll always remember the good times we had together...

Next up: A MacBook!! :D

Friday, September 04, 2009

Castle.Windsor Tip

You must specify the assembly name in both the Type and Service attributes when defining a component in a config file. I wish somebody would have told me that tip yesterday. I've wasted my entire morning figuring it out myself... I'm finally smiling again. See:

:)

Now, let's get productive!

Tuesday, June 16, 2009

Dear Microsoft Installer,

If you can't install yourself on my machine because there is an earlier version conflicting with your setup, then please tell me this up front. It is very frustrating to tell me about this after I have already waited 45 minutes going through the various steps, including a reboot. This has happened to me too many times, and I feel it's time to speak up.

Sincerely,
Luc

Thursday, June 11, 2009

Full Body Experience - XBox 360 Video Games

Too cool! I saw a retweet from Scott Hanselman on my twitter feed and had to share this!

It's simply amazing; especially when the guy breaks out an old game using his hands and feet to drive the car. The technology being used understands all the movements of driving, just like you would if you were mimicking driving a car to a friend.



This could add a whole new element to "air drumming"! That's what I'm most excited about I think. :)

Tuesday, March 31, 2009

SportTracks Plugin for BuckeyeOutdoors.com

Hot off the Press!
The BuckeyeOutdoors.com Plugin for SportTracks is now available for download!

This was a project that Ben (the BuckeyeOutdoors.com admin) and I started almost a year ago. It started off as a cool concept that Ben's online users wanted. Ben posted a message on his forums asking for help, I then found his post requesting a .NET geek and responded... the rest is history. We quickly realized we both went to the same school, we graduated a year apart. We've been developing this plugin at various bars and coffee shops all over Columbus ever since. :) What a small world!

Here is a quick video that I put together to show you how it works:


[Full Screen]

Who Should Download this Plugin?
Here are some bullet points that may help you decide if you are a good candidate for this plugin:
  • Do you have a GPS watch (ie. Timex, Garmin, Suunto, etc..)?
  • Do you like to share your workouts and/or routes with your friends?
  • Do you hate entering the same information twice?
  • Are you tired of dealing with the canned applications that ship with your GPS watch?
If you answered yes to ANY of the above, then you should check it out. If you use SportTracks for your training application, or if you use BuckeyeOutdoors.com as your online training log, then you should absolutely checkout this plugin.

What is SportTracks?
SportTracks is the one stop shop for everything about training (whether you're a cyclist, swimmer, runner, etc..). If you don't use SportTracks then I highly recommend that you check it out. I found out about this application from my blogging buddy, Jamie (the MaineRunner). Since he turned me on to it, I've never looked back. One of the key features of this application that I discovered very quickly was that it offered the ability to install plugins for it. The app was written in .NET and the creator of this application was brilliant enough to open up the API to allow geeks (like myself) to interface with every aspect of the data. The result is literally a framework for interacting with anything and everything about your workouts and outdoor activities.

What is BuckeyeOutdoors.com?
BuckeyeOutdoors.com is an online social networking site and a FREE training log site that is creatively designed to help you:
  • Be flexible by supporting all types of Endurance sports and methods of training.
  • Track your progress with precise reports and graphs.
  • Track your diet and hydration with our database of foods.
  • Design your own INTERACTIVE Training Plan or import others.
  • Form your own Community TEAM and stay in touch with fellow trainees no mater where they are
  • Create and share your own favorite training routes or easily confirm your distances.
  • Meet online within our Forum or use the Find a Friend Feature to see who is training at your level.
  • Post your training and race data on your favorite Blog site with Sidebars.
There are no catches or strings attached! BuckeyeOutdoors.com is just a site that was built to give back to the online community!

Conclusion
Please check the BuckeyeOutdoors.com Plugin that we've created. If you do download it and use it, please provide feedback (good or bad)!

Wednesday, March 25, 2009

I'm posting a blog entry...

This is a hilarious short film about why we are all secretly hooked on Twitter.


It's painfully true. I'm at my computer so much these days that I feel as though it's the only way I can communicate with my "friends". Listening to peoples tweets vocally let me appreciate how ridiculous tweets really are...

Monday, February 23, 2009

Calling All Nerds

I am officially in the market for a new dev machine. :) My current machine is a 2.21 GHz AMD Athlon 64 (3400+) with 2.71 GB RAM, but it is slowing down and I cross my fingers every time it boots up. My hard drive is full and it just has too much crap on it. I always hibernate my machine because if I boot it up from scratch, it takes about 10 minutes before I can do anything with it. Yes, I admit, I miss my old DD MacBook Pro sometimes. :)

I'm considering reformatting this drive (my current dev machine), but instead of setting it back up as my main computer, I'd like to install Windows Server on it and run TeamCity and SubVersion and stick it in a corner. That way I can keep it running and develop from the laptop or the (new) desktop and check-in changes from either. Not only that, but Jen wants me to setup a place where we can store pictures on and access at anytime... easily. Currently, all of our pictures are on an external hard drive that is connected to my work machine. This means that I have a share on my work machine and she can only get to the pics when it's on. Even then, she has to go through hoops inside Picasa to get access to them (using a mapped drive).

The fact is that my machine is ~5 years old now (hard to believe), and I know there is a lot better hardware these days for a fairly small amount of money. I'm looking for a multi core machine with Vista (yes, I said it) that just screams and is built for a multi-tasking geek like myself. Any ideas?

Thursday, February 19, 2009

Facebook and FriendFeed

I did it. I broke down and signed up for Facebook. Here's my profile: Lucas Hardbarger

So many people have asked me if I had a Facebook account and I always said I'm not into all that; I just like blogging and sharing crap with friends. Honestly, I just didn't want to have one more thing to check online. Well, now I do. On Monday morning I woke up and was checking my email before starting the day, and my Mom had sent me a link where she joined Facebook. I clicked on it and just created an account to see what it's all about... that opened the flood gates, because immediately I got invites from oodles of people I haven't talked to in years. I'm totally amazed at how many people are on here. It's just a cool way to interact with people (friends or not) in a very "non schlont(?)" way. :)

So anyway, now that I've established a new web area, I went hunting for the best way to tie it all together. I have online areas all over now and want an easy way to tie them into a single cronological feed. It's crazy that now I have a problem wondering where to post a thought. What is the web coming to when this is a problem!? For example, I could be sitting at taco bell waiting on taco's or I could be sitting at the dining room table waiting for the girls to finish brushing their teeth. Should I post my thought on my twitter? Should I put it on my blog? LinkedIn? Facebook? FriendFeed? Google Share? etc...? I found the answer tonight... Any.

I'd always heard that FriendFeed was the way to go. Scott is a big user of FriendFeed, but I never really "got it" until tonight when I went digging for a solution to my madness. FriendFeed is the answer. It's the one place where all the services come together. Facebook is for more for interacting with friends with a feature which includes sharing online content. For example, I'll use Facebook to see what people are up to, who they become friends with, who's wall they wrote on, what application they installed, etc... Whereas FriendFeed is more for aggregating and sharing online content (photos, blog posts, twitter updates, etc.. (59+ different services)) with friends or anybody that wants to see. Here is a good definition of Facebook vs. FriendFeed: FriendFeed is For Sharing and Facebook Used to be About my Friends

The moral of my story: Facebook is fun. FriendFeed is necessary.

Friday, December 05, 2008

CodeMash 2009

I CaN't WaiT!! Jason just posted his excitement about the session list for CodeMash 2009! I must say that it is very impressive. This event kicks ass! This year will be very different for me, as it's the first time ever that I'm going as an attendee rather than an exhibitor. The first year, I took my family, last year I went with my DD family and had a blast. This year, I'm going solo! No family, no booth, and no last minute presentation changes to worry about with James. I never minded hovering around the booth talking about Data Dynamics great products, but there was that whole "look professional" aspect to it.

This year, InfoPlanIT is sending me and I'm free to not worry about anything for 3 full days. I will be wearing un-tucked street clothes and I'm going this year to just learn, learn, learn. My latest project at InfoPlanIT has got me doing a lot of web development these days. I've been trying to learn the best way to build customizable enterprise business intelligence web portals... from scratch. The session list at CodeMash is very impressive and gives me a lot of different opportunities to learn from (Ruby, Silverlight, Flex, F#, and so on..).

If you are into technology and can talk your employer into sending you to CodeMash, then, by golly, do it! This is the hippest event in the midwest and you will get your money's worth, ten fold! Not only in the value of the sessions, but also in the fun factor, I mean it's an indoor water park!?. When you're not hanging out with geeks talking about code, your jamming out to Rock Band or screamin down the slides at the indoor water park. Oh yeah, you can also learn about the latest and greatest technologies in the industry by some of the smartest people in the industry.

So there it is! Lots of .NET, Silverlight, Flash, Python, Ruby, Java, PHP, F#, you name it... there's even sessions on developing applications for Microsoft Surface computer and the iPhone. Excuse the huge link, but I'm that impressed with where it takes you. :) I'm going with a wide open mind this year and not restrict myself to any one topic. Hope to see you there! Oh yeah, did I mention I'm taking my drumset again!? I told you this event kicks ass!


Monday, October 06, 2008

Data Dynamics Business Intelligence Suite

Today Data Dynamics announced an insane discount on their extremely powerful and feature rich component package: Data Dynamics Business Intelligence Suite for only $899!

This suite includes Data Dynamics Analysis and Data Dynamics Reports together. For a comparison on what this means, each one typically sells for $1,499 each. That means that they are offering both for less than you can typically purchase one. The two products truly deliver a full blown business intelligence solution. Trust me! They've done the research and interviewed the proper people to prove this. If you've heard me talk about these products in the past, but never gave it a second thought, please download each product and run it against your own data. You'll be a believer right away.

Both products have been built from the ground up at Data Dynamics. Features are constantly being added and samples are continually updated to help teach you what each product is capable of doing. Watch some of the screencasts (DDA / DDR) if you are not sure what they can do, and see what you're missing.

Update: Oct, 6 @ 9:30 pm
Data Dynamics Analysis just announced support for trend lines, part-to-whole calculations, extracting data from the selection, and many other new features. Download it now and see for yourself... I am!

See what people are saying: