feel the Source, Luke!
Considering all the software development projects I’ve been a part of and reflecting on the myriad of issues that typically arise, I can safely say that choosing a source control system was one of the more minor challenges that arose.
At it’s core, a source control (source code control system to use it’s full name), version control or revision control system is a tool used in software development to store the source code for one or more projects and provide a chronological archive of the changes made to the source code by the developers on the team. The chronological archive is in the form of snapshots of the current state of the source code at points in time where changes are made .
Unless you’re the type of person who represents themselves in court, the merits of using source control systems need no explanation. I was however surprised when I started to read more and more about a different type of source control system, the distributed source control system. Up to this point, and unbeknownst to myself, my experiences had been solely with centralized source control systems. My interest had been peaked to understand the need for a different type of source control system and what problems they were purporting to solve. (more…)
the changing face of development
The roles in web development and the skill sets required to adequately perform those roles have changed greatly with the mainstream adoption of web frameworks such as Ruby on Rails, Groovy on Rails (Grails), Django and the many toolkits for client side development such as jQuery, Dojo Toolkit, Yahoo UI. A critical factor contributing to the adoption of these technologies has been the movement by browser vendors to adhere to the CSS 2 / 2.1 specifications coupled with a vibrant developer community sharing solutions to browser compatibility issues.
Combined, these have changed the domain of web development nearly unrecognizably so over the course of ten years. Where once much of web development involved writing code to persist state to relational databases and serving (more…)
a fondness for fonts
I’ve recently come across a couple of sites that really impressed me with their clean design and striking presentation. At these times I’ll often view the source of the page to get a better feel for how the page or site has been put together and see what type of libraries they are using, particularly if there’s an interesting widget or user interaction on the page. I consider it part of the ongoing educational experience and also as a means of staying up to date with the cutting edge of web technologies.
The third time viewing the source for these sites, I noticed that they all had one thing in common: the use of a little snippet of JavaScript referring to a website called TypeKit (www.typekit.com). I didn’t think much of it initially … (more…)
from GWT benefits to jQuery adoption
Google Web Toolkit (GWT), now in it’s second major release, has been around since 2006 (if not before) and I remember that it caused quite a commotion at the time, as it espoused the ability to create JavaScript based AJAX applications while programming in pure Java.
I was pretty interested in checking it out at the time but had little time on my hands and the proliferation of AJAX into the projects I was working on was pretty minimal in that perhaps one or two areas of the application leveraged the advantages of AJAX but it was far from being adopted application wide as the de facto client / server interaction model. In addition, many of the enterprise products I was dealing would have traditionally been slower in providing first class integration of newer technologies as a core product feature but were rather tacked on to fulfill customer requirements and sales & marketing demands.
I’ve had a little bit more flexibility in recent times in technology selection for new product development and have had the opportunity to use GWT and some additional libraries providing extended support for GWT and wanted to provide my insights in this blog entry and relate how what started as an evaluation of GWT ended in adoption of jQuery … (more…)
No Safe Haven in Maven (Some Real World Challenges)
I first came across Maven a number of years ago at a client site we were doing some work at and got my hands dirty integrating it with a custom development project that was ongoing at the time and was very impressed with the efficiencies it brought to the project once some initial scripting was completed and the proper conventions were followed. At this stage, Maven 2.x was recently released and from all everything I read was a big improvement over the the earlier 1.x versions.
In the intervening years, my “usage” of Maven has been mainly around enforcing it’s adoption as the build and deployment tool of choice for a development team or recommending its usgae to other technical leads and architects. More recently however I was fortunate, or unfortunate as the case may be, to get my hands dirty with it again and integrate it with a Google App Engine project I was involved with. I was so moved by the experience that I am going to summarize my more recent experiences of it in this blog post … (more…)
Amazon S3 deployment w/ JetS3t and Maven
While playing around with Amazon AWS for a little while last year and running a number of instances on the cloud I didn’t pay much attention to their file storage offering, Amazon S3 (Simple Storage Service) for storing and distributing files on the cloud. All that changed recently when I came across an issue with Google App Engine and a third party library I was using.
The issue was that GAE has a file limitation for applications deployed to the platform of 3,000 files. The third party library being used was Smart GWT and after the GWT compilation step there was much more than 3,000 files in the web application causing the application deployment to fail. Unfortunately there’s no way around this on GAE except to host the files elsewhere, with Amazon S3 being the obvious candidate.
I had been using Maven for build and deployment and now needed to integrate deployment to S3 into the same build process and wanted to share how this was done in this post. The S3 service provides a straightforward ReST based API to manage deployments and there are a growing number of tools available providing a layer of functionality on top of the service. One need only search for “amazon s3 deployment tools” on Google to see the vast number available as browser plugins, windows explorer extensions and command line utilities.
For me, I came across an excellent suite of utilities called JetS3t that can be used to manage your S3 deployments … (more…)
PDF generation in Java w/ App Engine
Adobe’s Portable Document Format (PDF) has become the de facto standard for sharing documents across operating systems and as such is encountered extensively on the web when documents are required to be downloaded for off line usage or alternatively to present web based content in a more traditional and professional format, providing better print quality over printing web pages directly.
I’ve been looking into using the PDF format to create my resume on demand and also to generate documents dynamically on an application I’ve been working on on Google App Engine. I had previously used Apache FOP for PDF generation but wanted to do a little more research to see what other options were available and came up with the following shortlist:
The following briefly describes my experiences with each and what I finally settled on … (more…)
leave a comment