360|iDev - iPhone Developer Conference

Posted in Life on January 5th, 2009 by Chris Stewart – Be the first to comment

I booked my flight today for the 360|iDev iPhone Developer Conference. I’ll be speaking in the business track with a session called, “You’ve shipped your app, now what?” I’m definitely looking forward to it and want to get an idea of how many members of the iPhone Dev SDK community will be there. I’m hoping we can get together for a dinner one night or something similar.

New Year, New Company

Posted in Life on December 31st, 2008 by Chris Stewart – Be the first to comment

I’ve been working at Xperts, Inc., a local educational-software company, since September 2007 in the capacity of Senior Technology Architect. We develop IEP software for Virginia, Georgia, Pennsylvania, and Washington called iep.online. The product has been around for roughly 10 years and has seen a lot of development time.

My focus hasn’t been directly on the product, but rather the supporting software systems and hardware infrastructure and configuration. The challenges of working in an environment where we host the software for our clients in a Software as a Service (SaaS) model, and commonly experience hundreds of concurrent users at any given time, has been enjoyable.

I feel like I’ve learned a lot in my time at Xperts. I’ve expanded my technical abilities during my time here. I came in with a strong Microsoft .NET background and lesser capabilities in Java. I’ve continued my .NET work for a number of projects at Xperts, but have been far more focused on Java technology. I’ve been using a MacBook Pro as my workstation and have truly become attached to the productivity increases I’ve discovered by using Mac OS X. Before my time at Xperts, I had no experience with JavaServer Faces, Hibernate, and Python. Yet, utilizing JavaServer Faces and Hibernate, I’ve built a high profile portal and load-balancing system that’s used by every customer. I’ve gained a true appreciation for these technologies and have enjoyed the experience of learning them in detail.

In addition to the programming specific tasks, I’ve taken on a number of other technology roles. I migrated the team from CVS to Subversion for source control management. I researched, proposed, implemented, and manage our new Help Desk solution using the amazing JIRA product from Atlassian. I worked hand in hand with our Manager of Network Operations to completely revamp our ASP environment configuration and implementation. We’ve experienced a lot of success after that migration. I’ve had a lot of interesting experiences during my time at Xperts.

Tomorrow, I’ll be an official employee of Public Consulting Group, headquartered in Boston, as a Senior Technical Architect II. PCG has acquired Xperts and the majority of employees will be joining PCG to continue our efforts in the IEP space. I’m very excited to join PCG, which employs 600 professionals across the United States, 180 of which are in the Education group. That’s a huge jump from our office of 20 employees. A lot of the details are unknown to me at this point as we were made aware yesterday. I’m excited because my team is staying together and PCG offers excellent MED and RTI solutions, which our customers are asking for. There should be plenty of opportunities for us, as one company, to offer a wider range of solutions to those in the education community. I’m very excited about that.

So, here’s to a new start in 2009! :)

My 2009 New Year’s Resolutions

Posted in Life on December 30th, 2008 by Chris Stewart – Be the first to comment

- Enjoy everyday with my wife and son.
- Bring a new baby into the world.
- Get back into shape.
- Complete 50% at least of my masters degree.
- Double the footprint of iPhone Dev SDK.
- Build a non-trivial Mac/iPhone application.
- Blog more often, move away from Twitter.
- Double the number of contracts 913solutions, LLC was awarded in 2008.
- Create a play area in the backyard for Carter.
- Take an interest in a new area of my company’s business.
- Conceptualize and implement one of my many ideas.
- Gain subject matter expertise in a new area of technology.

I suspect this will be an evolving list but this is a solid start. :)

Built-in “yes_no” type for Hibernate

Posted in Programming on October 21st, 2008 by Chris Stewart – Be the first to comment

Today I was working on some code and ran across an interesting situation while trying to create a Hibernate mapping file for an entity. My entity has a property called isAdministrator that has the type boolean. The corresponding column in the database table represents true/false with the character Y or N. At runtime, Hibernate would toss casting exceptions as I’d attempt to query the database for this field.

I quickly realized where my problem was and thought I’d need to write some ugly code to make this work. After a few quick Google searches I discovered the “yes_no” type. By adding this attribute to my XML configuration for the mapping, Hibernate automatically takes care of the translation process. Neat, huh? In case you’re wondering, there’s a “true_false” type in there as well.

<property name="isAdmin" column="isAdmin" type="yes_no" />

You should be using Dependency Injection

Posted in Programming on October 6th, 2008 by Chris Stewart – Be the first to comment

Over the last few months I’ve been getting myself reacquainted to the Java world. I built a reasonably simple JavaServer Faces application. I tend to instinctively follow Domain-Driven Design and separate levels of abstraction reasonably well. Towards the end of the v1 release, I was informed that we’d need a build for another environment of ours. The front end code remains unchanged for the most part. What would be radically different was the service layer code I wrote that had an implementation specific to our environment.

Time was a concern, as it always is, and I nearly forked the code base to begin on a version specifically for that second environment. Before I did, I took a crack at Dependency Injection with Google Guice to see if that could be a potential solution. With my original implementation, I had a set of controllers that were marked as JSF beans. Each controller had instances of service classes as needed. Those service classes interacted with the entities and performed persistence by way of Hibernate (Yeah, I know, I should have split those). Anyway, as you can see, there was a direct dependency on the service classes and my controllers. Everything is tightly coupled in this situation.

What I did was create a set of interfaces that described the functionality in my service classes. Essentially a one-to-one, an interface for each service class. I refactored my controllers to use the interfaces in place of the concrete service classes themselves. Next, I created an “environment two” set of service classes that implemented the newly created interfaces. So, with the help of Google Guice and some refactoring, I had a single code base that adjusted its implementation based on the environment it was in and a code base that’s fully ready for unit testing.

Dependency Injection is important. In the most simplest of terms, it gives you loosely coupled software components. Having that gives you flexibility. Flexibility in the sense of what I described, or testability, or an architecture that can be reused without rewriting a lot of code. You should be using it, in every project, if for nothing more than a simplistic approach to software engineering.

Book Review: Seam In Action

Posted in Books on October 4th, 2008 by Chris Stewart – Be the first to comment

Not too many months ago, I was evaluating a number of Java frameworks for a project I was starting. One of those frameworks was JBoss Seam. Seam brings together J2EE technologies such as Enterprise Java Beans 3.0, Java Server Faces, POJOs, and a wealth of rich web components.

Many of us are familiar with the “In Action” series of books from Manning. They are quite simply some of the most highly respected technology books available. I purchased this book knowing the kind of quality I could expect, and I wasn’t let down. The presentation and quality of the material was as I expected. Some of the key areas of focus were those that are most important in Seam; the Seam life cycle, inversion of control, state management, persistence, and transactions. Obviously many of these topics exist outside of Seam but what the Seam framework does is provide added features for these key items. The book focuses heavily on each and really drills into the improvements made.

I’ve done a lot of scrounging around the web for tutorials, guides, and articles about Seam. This book is far and away the best resource I’ve found. Everything else has been a mere reference. If you are like me, and want a real resource on the topic, you’ll be happy with this purchase.

Is Agile right for every project?

Posted in Programming on October 3rd, 2008 by Chris Stewart – Be the first to comment

With “every” in the question, you should immediately be suspicious. :)

My company has a software product that is in the neighborhood of 12 years old. I’m sure it has gone through a number of revisions, some of which were probably major. FishEye is telling me that our repository has several million lines of code in the trunk. The product is used by hundreds, maybe thousands, of people every day for critical tasks. Should we follow agile practices? Maybe. Fact is, we don’t, and it’s not a bad thing.

Many developers swear up and down over agile methodologies for developing software. In many respects, I agree with that mindset. Obviously there are always benefits to both sides. In my opinion, a large portion of the reasoning in which methodology to adopt lies in the industry you serve. Take the financial business for instance; does it make sense for weekly iterations with online banking software? Again, maybe, but I lean towards no because of the risk involved. What about mission critical health care systems? Same idea.

Now, you may not be agile in your deployment cycle in these industries and that’s understandable. But, you can certainly follow agile practices in your internal development cycles. Instead of pushing weekly iterations to production, push them to your QA or staging environment. You can still follow the processes of continuously integrating your work with your peers. You may not push to production every week, but your stakeholders might need to be involved in the process so you don’t get too far down the wrong path. In both of the industry examples above, do you think the teams could benefit from weekly iterations to a testing environment? I hate to say it again, but, maybe.

I believe that having daily meetings, pushing for progress in small steps, and developing features in isolation lead to a more refined development team. Doing these things reduces the amount of wasted cycles, keeps developers pushing forward, and helps them see progress with small steps of success.

My takeaway from this is to evaluate your needs, project environment, and industry. Every situation is different and a single methodology doesn’t work for each instance. Find ways to boost team morale and keep the project moving forward.

Microsoft Arc Mouse

Posted in Gadgets on September 27th, 2008 by Chris Stewart – Be the first to comment

My son and I headed off to Best Buy earlier today to continue my search for a new laptop. I’ve pretty much narrowed down to HP or Lenovo. I’ve been hands-on with Lenovo for a period of time but not so with HP. So we decided to visit Best Buy in hopes of checking them out in person.

While we were there I noticed the Arc Mouse on display. I was immediately impressed by the design when I first saw screenshots online. The design just seems like it would be a great fit in the palm of your hand. Once I tried it out in the store I was sold.

I connected it to my MacBook Pro when I got home and much to my surprise was greeted by a fully functioning mouse without drivers, downloads, or any other intrusive process. I was really impressed by that.

“A Beginner’s Guide: ASP.NET 3.5″ Is Here!

Posted in Books on September 24th, 2008 by Chris Stewart – 1 Comment

Earlier this year I had the opportunity to be the technical editor for McGraw-Hill’s A Beginner’s Guide: ASP.NET 3.5. After many months of waiting, the final copy hit my doorstep this morning! It’s great to see something you worked on in final printed form. It was almost surreal to see my name and bio inside the front cover.

The author, William B. Sanders, did an excellent job with the title and I can’t wait to read through it again. Of course, I highly recommend it for anyone that needs an introduction to ASP.NET 3.5.

http://www.infibeam.com/Books/info/William-Sanders/ASP-Net-3-5-A-Beginner-s/007159194X.html

My interview on “The App Show”

Posted in Technology on September 22nd, 2008 by Chris Stewart – Be the first to comment

This weekend I was lucky enough to be a guest on “The App Show“, a weekly podcast devoted to iPhone applications and platform news. The hosts were great and I had a lot of fun hanging out with them on the show. We chatted about iPhone Dev SDK, the NDA, our picks of the week, and more.

I’ve done a lot of podcasts over the last year but it was really different being on the other end. I look forward to joining the show again in the future.

http://www.theappshow.com/2008-09-21-the-app-show-episode-8-the-late-show/