2011: Year in Review

The New Year has arrived, I wasn’t quite prepared to sum up my year on December 31st because I was busy spending time with the kids during my, well deserved, one week off for the holidays.  This last year was probably the hardest year of my life.  At my current job, I stepped up and took on a big management role while being lead developer on multiple projects – for some reason I made this mistake again…

Even though this was a hard year, there certainly were big rewards.  I dove into some new technology with the Photon Socket Server from Exitgames; got back into C# and .NET; released two books and currently editing my third; watched my kids walk for the first time; visited Seattle twice and met one of the now former lead developers of MVC .NET; launched a new website (Webistrate – Draw your own conclusions) – very happy with the creative name on this one!; and many, many more things.

What did I learn this year?  Don’t bite more than you can chew!  Don’t make a major platform change during an extremely tight deadline!  Don’t carry your anger with you everywhere – the world truly isn’t out to get you, well maybe sometimes it is!  Interviewing people is not an overly enjoyable process, mostly because it takes 3 bad interviews for even 1 mediocre one.  However, the one that’s really good is always easy to pick from the bunch.  A few late hires were made at the end of the year that will be starting soon, hopefully all the hard interviewing will truly pay off and more fantastic people will join the team we are building.

That’s quite a bunch of negatives up there, but we do typically learn from our mistakes, so what about some positives?  Writing books are hard work; but a lot more fun than doing day-to-day development work.  When I write books, I find that I really take my time and think more about how I want to accomplish something because my solution will be used by many people in many different scenarios.  Blogging is also a lot of fun, but is probably more time consuming than book writing, blogs are typically successful because of repeat, good, quality content – hence why this blog is not allowing me to stay home every day and write (not that it’s not good quality of course :p that I unfortunately do not blog as much as I would like too!).

So what can we look forward to in 2012?  Well another book from me, this time on PhoneGap.  Mobile development and more specifically the adoption of HTML5 in the main stream (Microsoft, Adobe, etc…) will make it extremely important for us developers to focus more on attempting to build one codebase for many different platforms, not just the web anymore.  Instead we will need to develop for mobile devices (the one million and one different kinds of course), pad devices, even Windows 8 devices!

Hopefully from all of the lessons learned in 2011, this New Year will be a lot less stress free!

 

Share

MVC 3 Routing Example

Below is an excerpt of a chapter from my new book: 20 Recipes for Programming MVC 3.

In today’s heavily fought battles for search engine supremacy, it’s quite difficult to winthe race with a website address that looks like:

http://www.example.com/books/details?id=4.

Using routes, the website can look like:

http://www.example.com/20-recipes-for-mvc3

which provides much more context, both to the user and the search engine.

Read more »

Share

20 Recipes for Programming MVC 3

Yesterday marks the official launch of my second book: 20 Recipes for Programming MVC 3.  The book is being published by O’Reilly and is available in both e-book or print edition.  I’m quite proud of this book as I’ve feel like my writing style was really able to mature while working with a real editor to bring a great cookbook on ASP.NET’s MVC 3.

The tagline for the book is, Faster, Smarter Web Development and that truly is my goal with all of the recipes in the book.  It covers basic material from authentication and emails to more complex features like routing and AJAX – even has an excellent tutorial on converting your website into a mobile site in a few easy steps!

Share

Highlights from Webistrate: HTML5, MVC 3, and CSS3

Over the past few weeks some great articles have been released on Webistrate:

Exploring some of the new features of ASP.NET, HTML5, and CSS3.

Share

Making AJAX Content Loading Prettier

In today’s article on Webistrate I explore Transitioning AJAX Content into view with $.animate() using some basic jQuery.  Please note, it doesn’t look overly pretty because I’m not a designer, but the functionality is there and it can be prettied with relative ease.

Share

Improving the speed of AJAX request and response times

Today a new article was released on Webistrate that discusses how to use jQuery Templates to speed up your websites AJAX queries by return back JSON data and then doing the visual enhancements on the client-side with the use of a predefined jQuery template.

Share

Developers to the rescue of designers…again!

I don’t know about you, but my designers love their custom fonts and I’m tired of slicing and reslicing images – especially when the website is multilingual.

CSS3 to the rescue allowing us to import custom fonts and make them work cross-browser.  Check out how to use the @font-face CSS3 tag to do it!

Share

Webistrate.com – Draw Your Own Conclusions

I’ve been working on a new web site recently.  I’ve enjoyed doing my blog; however, I find that blogging is different from what I want this new web site to be.  The goal of Webistrate is to provide full code solutions oppose to what I often times do with my blog.  My blog has always contained a lot of personal opinions or short little tidbits that I learned.  With Webistrate, I’m beginning by working with some of my existing articles and converting them to this new style.  A problem and a solution.

You can see this now with a new approach to an existing post I have on my blog: CakePHP: Login System using the Authentication Component.  This post goes from using partial code blocks, building up the solution, to presenting a full solution and complete description.

The site is still pretty new right now, so there are only a few posts, but more on the way!

Share

ToLower-ToUpper and the CurrentCulture.CultureInfo

I have recently being working on my largest multi-lingual site ever – over 30 languages – in ASP.NET.  While implementing it, there have been a lot of bumps and bruises along the way.  One of the most recent one was noticing that the ToUpper and ToLower functions in ASP.NET take the CurrentCulture.CultureInfo into consideration.

As you may guess, this is both a blessing and a curse.

When I’m working with text that is to be translated, but should appear upper or lower case this makes perfect sense that the CurrentCulture.CultureInfo should be taking into account.  However, be sure you remember this later when you are doing text transformations and text comparisons on words that should NOT be translated.

At the end of the day, if you don’t want the CurrentCulture.CultureInfo to be used, both functions can be easily overloaded as follows:

String.ToUpper(new CultureInfo(“en”))
String.ToLower(new CultureInfo(“en”))

I spent a fair bit of time tracking down why existing code was working perfectly, when suddenly as the team implemented the 8th language, something suddenly started failing.  Thank goodness for unit testing to quickly point out that there was a problem – then it was just a matter of understanding it!

Share

Officially published my CakePHP Book

Finally!  It has been a long time in the making, but my book is finally finished and published!  About two years ago, I began the undertaking of writing a book.  At the time it was merely a hobby while I was working on my blog.  Seeing if I could turn the success of my blog articles into a book.

As you may recall a few months ago, I released an e-book.  This e-book was basically my original works written for CakePHP 1.2.  I saw some success with the e-book, so that made me believe that I should seek publishing on my book.  Unfortunately, there isn’t much hope for mainstream success with a big publisher like O’Reilly because CakePHP is too small of a niche for them to focus on.

During this time, I focused on upgrading the book to be relevant to CakePHP 1.3.  I even added a special bonus chapter about upgrading from CakePHP 1.2 to 1.3, which I must say was extremely painless; especially if you stick with the standards.

Anyways, I hope you take the opportunity to view my CakePHP book.

Enjoy!

Share

Buy one of my books