New Blog, New Architecture and What I've Been Doing
Published Tue, 22 Jan 2013
If you've visited my blog before, you may have noticed that it has changed pretty radically, visually, and hopefully also in less tangible but perceptible ways as well.
The old blog was hosted on a Dreamhost Wordpress installation like many other lower traffic blogs that make up the long tail of the Internet. However it's always bothered me that the generally user experience is pretty horrible on that sort of set up.
It's pretty standard for shared hosted Wordpress sites to have response times > 1000ms and full page load times > 10s. Standard Wordpress themes have a lot of features that you don't really need and generally are not designed for readability. Finally the mobile experience tends to be poor.
A few things happened which culminated in this site -
- After several years of using Apache Wicket as my "framework of choice" for developing websites and apps, I had come to the conclusion that while it is a wonderful, elegant way to manage server-side state and application development it is ultimately a dead end. I had come to the conclusion and still believe that the future of most web development is in pushing the state management client side and communicating with the server using lightweight protocols like REST/JSON.
- I had a wishlist of features from developing apps in Wicket that I wished web servers would support like resource merging and fingerprinting, super fast page loads and easy REST implementation.
- I had been experimenting with responsive CSS design to target all devices and browsers with a single site and stylesheet.
So what I ended up doing is using this blog as a way to bring to fruition those goals and ideas and prove out what a working architecture could be with that direction in mind. The result is a 12 month backburner project resulting in this blog.
Anyhow the key features of this redesign are -
- Runs on a custom web platform built on top of Netty, that uses a declarative annotation based approach to deploying web services and content.
- All wiring and declaration using Guice.
- Automated resource compression, merging and hashing/fingerprinting.
- Responsive CSS targets mobiles and desktop. Based on ems not pixels so scales as you wish. Designed for high readability.
- Very high scores on both Google Pagespeed and Yahoo YSlow analysis.
- Mustache is used for server-side templating.
- All forms now using AngularJS including the administration interface.
Anyway, I've quite pleased with the outcome of this work, and glad to be able to finally get it out there. Other than a little DNS switch-over hiccup, everything seems to be working ok!
About the Author
Richard Nichols is an Australian software engineer with a passion for making things.
You might also enjoy reading -
- It's Oh So Quiet...
- The year that was...
- Announcing - visural-wicket
- Blog, and comments launched for On My Doorstep...
- Looking back on 2010...