SyntaxHighlighter

Saturday, September 15, 2007

"Make It Right" Software






For those of you that know I'm buying my first home soon(Prescott) also know that I'm going to be there during the build to make sure all the necessary additions are made the way they are supposed to be. For the past several months I've been watching Discovery Homes new show... Holmes on Homes Mike Holmes is my definition of a world leader in pure and honest craftsmanship. His approach to building/renovating homes is second to none... he has a clear vision to all projects and fully supports learning and implementing new concepts to make outstanding finished products. I like his approach so much I've decided to use that same approach to building software... when Mike has a problem with implementing the right kind of solution such as removing asbestos... he calls in the pro's and makes sure it gets done right. This same principle can be applied to software development... whether it's security, exception handling, validation, or just pure design its very feasible to look around at what others are doing to help ease the pain in implementing these kinds of important decisions that every developer faces. Speaking from experience... this approach works, you can implement such things as Microsoft application blocks, Design Patterns such as MVP (Model-View-Presenter) to help with certain areas of each application build or re-build. My approach to building software or re-factoring software will always be to "Make It Right" and "Above Code" which can be translated to above standards. This will insure that the software will run and last a long time... the same will be true for my first home.

-Thanks Mike

Thursday, September 13, 2007

"The Meeting"

Today I reached a milestone in my life where I heard everything I had been working so hard to hear. "Cameron... we need you to be apart of our team and we're prepared to make you happy to do so." Today I got promoted to develop on the C++ team, thanks to all the hard work and research I did on C++/CLI integration with native C++ I was able to bridge the gap between native and managed code and leverage both in a .NET web application. Anyway they want me to do more of this, especially since I was able to completely erase 6 months of COM work in just a few short weeks of C++/CLI... This promotion is leading to a lot of great opportunities and experience in the financial industry and with the C++ language. Knowing that I'm only 27 and earning 95k annually is a great feeling... I thank god and my family (Wife... Rachel & Daughter... Katheryn)for supporting me through all the extra time I put in on the weekends and the late nights so that I can learn. Learning is the best thing anyone can do in anything that they do, and I will never stop learning. ; )

Friday, August 17, 2007

Developing software in the financial industry

The new job is going great only 4 weeks in and already so much has happened. My first task was to migrate a VS2003 C# Windows application with 3rd party charting capability to VS2005 C# 2.0. That took about a week seeing as how the application wasn't very big... and since I used the MVP (Model View Presenter (Supervising Controller)) Design pattern the data was flowing very well. Then came the infamous request from my boss that most developers never want to face, but will most likely face at one time or another in there career... "Can you port that windows application in to a web application?" Luckily my use of the MVP Design pattern helped me to confidently respond "Yep! No problem..." So week two I began the journey of encapsulating the majority of the windows application logic in to ASP.NET 2.0 Web Components. These components would ultimately be used in the departments intranet site... This was looking to be a smooth transition until I got to the new major dependency of the application which was none other than a C++ COM object. Oh and did I mention the person that created the C++ code and COM object are no longer working for the company. :) So what's an experience C# developer to do... what any experience developer would do... research. So the idea is to integrate legacy code in to my modern .NET code, otherwise known as Interoperability. So I looked at my options and it turns out there is a managed C++ language known as C++/CLI and Microsoft has done a significant amount of work to not only aid in Interoperability challenges of COM, but to have the best of both worlds with performance of native(UnManaged) code and Managed code. Week three I read as much as I could on C++/CLI for C# developers by Dean Willis... a great reference to help any .NET developer come up to speed on writing C++, and since I'm new to the language it was even more of a hurdle, so I got a few native C++ books as reference as well. Overall, the main thing I needed to understand was interop between native/managed code. so by the end of
week four and the entire weekend I was able to write my own C++/CLI wrapper around native C++ API's. Awesome stuff, after a while of writing managed C++ begins to feel a lot like C#... so I began to feel right at home... I'm happy to report that I've replaced the COM object which took the guy who wrote it 3 months development time. It took me about a week and half. :) My boss was so impressed that he's considering moving me up a step to work on a C++ team. I've only been writing C++ for about three weeks time... thank god for Microsoft's work on C++/CLI.

Long story short... if you have any interoperability to do with C++ into managed code, seriously consider C++/CLI... there are a lot of options to help with seamlessly integrating with native code. Oh... and on a side note, no one on the C++ team including my boss even knew about C++/CLI so when I told them about the interop story on the white board they literally where stunned, and I of course looked very good. : )

Thursday, July 5, 2007

My New Developer Job!


Alright... taking a break from the home automation projects I was able to focus on job interviews
much like the picture above. Well... maybe not exactly like the picture above, but the job I did land is similar. I'm now working for a well known banking company that goes by the name "Washington Mutual"... Scott Hanselman eat your heart out. This is going to be a great move,
I'll get to embark on the world of JAVA and C++ and Oracle 10i on the back end... I'll be sure to give updates as I go along, my start date is 7/16/07!!

Sunday, June 3, 2007

Project Morning Weather Channel



The project has been completed for about a week now... I'm still editing the videos and will post them soon. For the time being I thought I would at least discuss the products used in the videos in a little more detail. If you have not read any of the previous post then "shame on you"... and if you have... "thank you". This project surfaced due to my daily struggle of waking up, getting to the living room, turning the t.v. on, and channel surfing to the weather channel to check the daily weather with out waking up my 5 year old daughter or lovely wife. As if this weren't enough challenges I have to keep a 1 1/2 year old yapping Yorkie and 9 year old tuxedo cat quiet as well... as you can probably imagine it's a daunting task... so I started looking for a solution. I need a way to automatically turn the t.v. on, navigate to the weather channel and mute the volume prior to my waking up in the morning. Enter the solution... so I will be using an old school 32inch Zenith TV(Man I can't wait until I get my house so I can upgrade to plasma) with a comcast DVR reciever, then I will use a USB IRTrans transmitter along with packaged web server which is controlled through a custom .NET application.
At first I implement a console application for simplicity... then I factor out the code into a windows service for a little bit of polish. The videos should shed more light on the implementation and I certainly had a lot of fun doing them. :)

Thursday, May 24, 2007

Home Automation Project Series

Okay, this is sort of an introductory post of the home automation project series that I will be documenting on video. I'm primarily doing this for a couple of reasons... one... for anyone who is interested in home automation projects along the same lines as mine and also for myself so that I may have something to reference back to years from now. :)

The following is the current outline:


1) Automate morning television set to weather channel and muted volume
Note: This will be done in the tiny two bedroom apartment (I'll explain the project on the video)
* Technologies (Infrared Transmitter, USB Interface, .NET SDK/API, Custom C# Windows Service)

2) Automate lights and shades to that of the previous post
Note: This will be done in my new home so I will have a much bigger canvas(Hopefully (yn))
* Technologies (X10,Z-Wave or CM11A, Parallel,Serial or USB, .NET SDK/API, Custom C# Windows Service)

3) Install touch screen monitors in a couple of hallways and home office wall, then test with either windows ce or window tablet pc... most likely windows tablet pc.
4) Build 3.0 WPF application to override scheduled services on demand
Note: This will have Speech-To-Text capabilities, so the app can be driven by the sweet sound of my voice. :)

* Technologies (Tablet PC platform, .NET 3.0, Expression Blend C#, WPF, Speech 5.3 SDK)

***Future Projects***


-Install solar panels on roof top and collect solar energy
Note: (Figure out a way to collect wind energy as well)

Once I have collected the energy and safely stored in a known location I want to be able to track
how much I've consumed, and how much I have to sell to the energy company.
Then I can use X10 to communicate with the energy levels and tell me how much energy consumed and available to sell respectively. Once that is complete it will be a matter of hours before I can hook that up to my WPF application and speech enable it. :)

Whew... that is certainly enough for now... I really could go on and on.
This however is a good stopping point... so with the long memorial holiday I have starting today I think I will get started on the first project... stay tuned... and to all my fellow dev's out there...
have an exception free day!

Monday, May 7, 2007

Home Automation Part 2

Since I have the software side of things nailed down I thought I would take a few moments to talk about the hardware side of things, now since I want screens in a few places through out the house I know I'm going to need to cut some holes in some walls. This is not an issue until we start to think about climate control... how on earth am I supposed to keep all my components cool if I'm living in a Dallas,TX. Hopefully something will surface in my research, until then I 've been able to find quite a few possibilities for the hardware side of things. Since I will need to have screens in the wall I don't want them to be very big because they need to be mounted and available to touch hence... (Touch-Screen) so I found a couple of options... 1) Phylon 7" Wide-Screen VGA TFT Display with Touchscreen this monitor is just the right size and the right price. Or
2) The new Touch Screen LCD PC from Quataris Technology this obviously is the right and size and I can run WinXP/Vista/or CE 6.0 on it. Definitely a front runner at the moment.

Once I find the right display I will need to figure out wiring through the walls etc. don't worry I will have documented steps on most of this information right here on lifeofadev.blogspot.com

The plan for phase 1 :

1) Control lights in living/dinning/master suite/control room(office) /media room
2) Control the blinds in living/Master suite

For the software I'll be building a custom UI in WPF running on .NET 3.0 leveraging the WinXP SP2 or Vista Platform and it will all be controlled through the new Speech to Text Managed Api's using C# of course. :)

The goal is to walk in to or out of a room and speak to the lights or blinds via voice command.
I'm currently thinking something along the lines of "Lights On", "Lights 1" = dim lights (25%) , "Lights 2" = dim lights(50%) , "Lights 3" ,"Lights 4" and "Lights Off" respectively. Same kind of thing for the electrical blinds.

These sorts of applications are spinning up all around us in homes of folks who can afford a team of specialist to come in and install everything, of course leaving a pretty universal remote for all the components. Not me... I'm a dev all the way and with the help of Phidgets and the display possibilities above I'm well on my way. Oh... I forgot to mention Phidgets... well the link is above for the full info, but essentially I came across the company by watching a UWTV Computer science and engineering lecture on the subject and then went over to the website for more info... these guys are electrical engineer grads who build hardware devices for plug-n-play use.
Awesome stuff, more over... Lee Brimelow has already gotten starter with it over at contentpresenter.com he controls a 3D model in WPF with several phidgets.