This post is going to appeal more to the "satori" aspect of this blog than the "tech" aspect, so be forewarned. If spirituality isn't your thing then this might seem a bit flighty.
I was just working through a Silverlight tutorial that builds a simple Twitter application. It allows the user to search the Twitterverse against whatever string the user has entered and returns a collection of tweets along with a bunch of other properties and displays them with some funky formatting. It's a good place to start with Silverlight because it uses the Twitter search API as a datasource which is made possible by Twitter's cross-domain policy for their search. This is important because of the nature of the Silverlight web browser plug-in. Since I'm requesting data from another domain, that domain has to approve what I'm doing and provide access to their data. The security aspects are important because Silverlight is somewhere in between a server-side web application and a traditional desktop application. It's a perfect walkthrough for me because after RoomieWare I'm familiar enough with ASP.NET to understand everything that's going on and in reading through "C# 4.0 in a Nutshell" I've been thinking quite a bit about the .NET event-handling model which utilizes the advanced concept of delegates. A delegate is a type that connects a caller with a method by passing the method as an argument. Using delegates in combination with events, Microsoft has created a safe way for an event to broadcast to its subscribers whenever the event takes place, thus enabling other objects to respond appropriately, without giving the subscribers the ability to interfere with each other.
Anyways, I was working through this example, enjoying the synchronicity of seeing various aspects of my learning come together in the form of a cool project, when I came across a response from an upset reader (the tutorial was spread out over several blog posts) who seemed a bit perturbed that the tutorial wasn't for absolute beginners. The author of the blog (Tim Heuer) responded by saying that, no, it wasn't for beginners to C# and ASP.NET but for beginners to Silverlight. The reader wasn't furious or anything, what caught my attention was simply the sharp contrast between his experience and mine. His response had undertones of, "Wait! You tricked me! You said this tutorial was for me and it's not!" whereas my experience was that I was at the right place at the right time and everything was coming together like Voltron.
My life has been slowly changing gears over the past 7 years, most acutely over the past year. Whereas in the past I often felt like the upset reader, like I was always in the wrong place at the wrong time, at odds with and even betrayed by the universe, today I usually feel like I'm in the right place and at the right time. Even if it seems like things aren't exactly as I'd like them to be, my experience has shown me that this feeling will pass and I'll soon feel like I'm right where I'm supposed to be in the ebb and flow of the universe. What's beautiful to me is the realization that I am an integral part of creation. I see this creation working around me and through me. All that I need do is align my will with this force and instead of feeling like I have to figure out where I'm supposed to go and what I'm supposed to do, the universe shows me everything that I need to know. What's maddening is how the ego tries to fill in all of the empty space with bloated self-importance and constant, nonsensical jabber, as if something always needs to be done or micromanaged. What's beautiful is the experience of relaxation, the joy of living in that empty space without the need to do or worry over anything. It's here that the process of creation takes place. If we fill our spiritual cup to the brim with our own wants and needs then there's no room for the universe to guide us. However, if we take the time clear our minds and create space in our lives, the universe guides us through taking care of ourselves AND everything and everyone else as best we can.
What's difficult about this process is that to the ego, it's like walking off of a cliff. If the ego's not working to take control of every little detail, how can it be assured that things will turn out the way we want? What started this journey back into programming for me was quitting poker at the beginning of the year. I knew that I had reached the end of this career path for some time, but I was reluctant to let it go and for good reason. Poker was my job. It's how I paid the bills. However, poker had lost most of its appeal and I was tired of how miserable losing made me feel. But I had no idea how else I could support myself in the manner that I had become accustomed. I found myself immersed in a middle class life that I wasn't sure how to maintain. Conventional wisdom told me that I should find another job, and preferably a career, before I gave up poker, but my instincts told me that I wasn't going to escape the clutches of the never-ending gambling urge until I gave it up completely. So I did. I jumped off that cliff without any reason to believe that anything or anyone would catch me.
Since then my path has unfolded before me. The only thing that's required of me is that I listen to the clues that the universe presents me and try and make the best of them. It's as simple a following a breadcrumb trail. The trick is in finding the faith to believe that the trail will get you where you want and not lead you into danger. It's a peculiar game, learning how to listen to the correct voice in your mind. What's funny though is that it's generally just a matter of being a good person and having the courage to act when something catches your attention. The most obvious of clues is when someone asks for help. How to respond? Simple. Help them. From there I've started trying to offer people help when it seems like they need it. I've found that people are incredibly grateful when you step in and offer your services right when a project is starting to seem like it's insurmountable and never-ending.
About a month after I quit playing poker I had a problem with my computer. I forget what it was exactly, some minor problem with the display, but it turned out to be a dying video card. My troubleshooting efforts led me to consider this early on but it was complicated by the fact that the card overheated during a Windows update which lead to various disasters. If you've never experienced a corrupted Windows update before, let me assure you that it ain't pretty. Even Microsoft experts aren't always sure how to deal with the mess that ensues. Not to mention that I also had an undiganosed dying video card on my hands. I realized that something had gone wrong with the Windows update so I spent a few days scouring every Microsoft related message board that I could find and I found some cool utilities written by Microsoft studs that attempted to deal with corrupt updates, but alas, nothing worked. In the end I wound up ordering a new NVIDIA GeForce GTX460 video card so that I could play some of the more recent games and I resinstalled Windows, giving me a fresh start. Upon receiving the new video card I realized that my power supply couldn't support it so I did some research and decided on a Corsair TX650W. I was uber-pleased when I recieved this bad boy. It came wrapped up in a black velvety bag and its many cables were wrapped in this sleek mesh. This was a great opportunity to open my computer up and get my hands dirty with replacing the power supply and figuring out how to hook everything up. It had been some time since I had done any hardware work, so this turned out to be a lot of fun.
When I had my newly pimped-out computer up and running with its stud power supply, hot new video card, and freshly installed operating system, I felt invigorated. I spent a few days playing video games and I was reminded of how happy games had made me as a kid. I realized that I had so much fun during this entire troubleshooting process that it was time to look into going back into computers. I took a look at the programming opportunities in my area and one of them in particular caught my attention. The company seemed like a fun, intelligent, fast-paced startup that was doing really cool work in writing and implementing custom ASP.NET controls. What caught my attention about this listing was that they weren't concerned with finding someone who had a lot of ASP.NET experience per say, provided that you had good object-oriented programming experience in a language such as Java and were a fast learner. This was all the inspiration that I needed. I downloaded Visual Web Developer 2010 Express, got myself an ASP.NET book, and the rest as they say is history. Since that point my programming path has unfolded before me. It's been so much fun. Programming has made it's way back into my life in a big way and I am comfortable in knowing that this is what I'm going to do with myself, regardless of when I find a job that will pay me for it.