If you are programming web applications you should be constantly trying to improve your quality of decision making when it comes to design implementation.
Why design is fundamental to web application development for us:
1. Design is important. Perfect functionality without good design is, at best, ugly— at worst, entirely unusable. If we pride ourselves on quality functionality, let’s dress in up in suit and tie. The impact on clients and users will be multiplied.
2. “Pixel perfect” implementation is a lackluster way to approach web design. First of all, the reality of browsers will never allow that to happen in every view without major cost bloat to product owners. Second of all, the concept exists almost solely because designers don’t trust you. Designers do a lot of legitimate work making a lot of decisions about how things should sit on the page. When those decisions aren’t translated to the web page, they feel slighted and frustrated. So they hang the idea of pixel perfection over our heads. Instead, let’s respect the designers position in the process. We can do this by learning about the craft of UX, Typography and Grid-based Design— as well as Color Theory. We can also do this by communicating to the product owner that we know that their design is important and that we intend to be faithful to it. Rather than blindly committing to pixel perfection, let’s commit to understanding the style guide, layout, and type decisions and budgeting meaningful time and effort to implement the site correctly.
3. By understanding design fundamentals and CSS techniques, doing our jobs well will become easier. Pixel perfection can be a cop-out for us too. We think that we will just match the design perfectly without thought. But how many of us are surprised at our inaccuracies when we overlay our work with that of the designer? By understanding design basics, we can mentally categorize design decisions that our clients have made and more accurately predict such things as fonts, font size, padding, margins, widths, etc.
The Theory of Constraints says that in any system there is one constraint at a time (occasionally two). To improve overall system throughput you have to first find the constraint; make sure it is working full speed; then find ways of either increasing the capacity of the constraint, offloading some of the work onto non-constraints, or eliminating the constraint entirely.
In explaining the theory, Beck uses the analogy of washing, drying and folding clothes. You might have a high capacity washer and have the whole family help with folding, but if your dryer is a compact low energy model like you’d find in a cramped Dutch apartment, you’re not going to have a lot of system throughput.
Broken down, a typical sprint could be:
Planning (Planning with client, tasking, estimating hours)
Development (Actual coding, feedback from client, AC negotiations)
Completion (Demo, shipping the new feature set)
In some cases we have a constraint with planning. We sometimes don’t gather all of the requirements when talking with the client, or we spend an inordinate amount of time tasking or our task estimates end up being wildly off. While we might excel in the Development and Completion stages, we lose out on increased efficiency with the bottleneck that is Planning.
In other cases we might quickly get through Planning, but when it comes time for development and shipping the software we struggle with clients who are allowed to operate outside of our process or throw negotiations out the window in an effort to “just get things done”.
So, how can we identify the constraint(s)? This requires the disciplined tracking of time spent as a result of internal and external decisions, along with the willingness to introspect on the effect of those decisions with regard to the throughput of the “system”. In other words, track your time effectively and don’t lie to yourself.
Bob:“We sure spent a lot of time tasking this week, we didn’t even get started until Tuesday afternoon.” Tom:“Well, we thought it was a good idea to review the code while tasking and have the entire team review the tasks afterwords.”
—
Jim:“So I guess we’re changing things up today, the client has got a demo tomorrow so we have to finish this tonight.” Eric:“It’d be nice if we could really nail down a sprints’ worth of work for these guys, we never seem to get much momentum.”
1 Beck, K (2005). Extreme Programming Explained: Embrace Change (Second Edition). Upper Saddle River, NJ. Pearson Education, Inc.
With a stable of long term clients and growth on the mobile development side as well, Integrum is looking to bring more talented developers to our team. We’re currently looking for Rails developers from n00b to the cliched ‘rockstar’ level.
We do real Agile (capital A because we don’t fake it) and SCRUM development, so you’ll have to be comfortable talking with clients on a regular basis. If you’ve got an interest in iPhone or Android development to go along with the Rails stuff, that’s a nice bonus too.
These are full time positions, on-site at our office in Chandler, Arizona. Benefits, perks, Pac-Man, we’ve got all those. Salary is dependent on experience.
Below is what you will find in the README for the job application on github.
Please note that these tests all require some basic Ruby knowledge. If you don’t know ruby, take a few minutes to learn the basics. You will need to have Ruby, rubygems, RSpec installed, and Factory Girl installed. In order to be considered for a position at Integrum, you must follow these steps.
1. Fork this repository (if you don’t know how to do that, google is your friend)
2. In the refactor-this directory you will find some Ruby code that needs to be refactored.
A test suite is included with failing specs.
Please refactor this code, this is real code we found in a real project that could be much more readable and intuitive.
Run spec helper_spec.rb to execute your specs and see if they are passing.
Please note: feel free to change the specs, but they should all be passing when you turn in your code.
3. In the github-challenge directory, please create a Ruby script that accomplishes the following:
Print out HTML that groups the recent commits by author.
4. Add your resume to the resume directory
5. Commit and Push your code to your new repository
6. Send us a pull request, we will review your code and get back to you
How do you know a company deserves an award? When the staff is so focused on going above and beyond for clients, they miss the call from the city notifying them they’ve won.
Fortunately, the City of Chandler was able to track the staff at Integrum down and award them the 2010 Small Business of the Year award at a banquet held last Wednesday.
The 23rd Annual Awards Dinner took place at the Crowne Plaza San Marcos Resort in downtown Chandler. The event celebrates individual and business excellent in the community. Integrum was chosen based on the company’s contributions to the growth of the local economy, high quality service and innovations in the field of software development. Additionally, Integrum was recognized for the company’s community involvement through its nonprofit, Gangplank.
Jade Meskill and Derek Neighbors were on hand to accept the award.
It is always a pleasant surprise to see the fruit of your hard work show up on prime time TV. We just shipped SuperMedia’s new SuperGuaranteeiPhone application. The marketing department timed a TV campaign around it. Here is the spot.
We do a lot of back end work for iPhone applications. When Apple started allowing push notifications we didn’t have a high demand for applications using this. However, in the last six months this is something nearly every application with a back end desires. We started using API on Rails. APN on Rails is a Ruby on Rails gem that allows you to easily add Apple Push Notification (iPhone) support to your Rails application. The hardest part is getting your Apple certifications sorted out.
We are in process of creating some patches to allow notifications to be sent using Redis instead of by rake task.
Back in December of 2008 Yehuda Katz announced that Merb and Rails were merging and the by product would be Rails 3. Fast forward to Feb 2010 and we are just around the corner from that being a reality. Rails 3.0 is a major upgrade to nearly every part of Rails. The router and query APIs have seen the most radically refactorings.
Serious deprecations will occur as part of this transistion, but there is still a lot of backwards compatibility support that will be available for a short time. Rails 3.0 adds Active Model ORM abstraction, Abstract Controller generic controller abstraction as well as a consistent Plugin API giving developers full access to all the Rails internals that make Action Mailer, Action Controller, Action View, Active Record and Active Resource work.
There is a great guide on over at Rails Guide that talks about converting an existing Rails application to 3.0. We have flipped the switch and are now doing all new development officially in Rails 3. Furthermore, we have started our strategy to convert existing applications to Rails 3. We would love to hear about your experiences with upgrading and your current strategies for new development.
Need to archive an HTML page? Thinking that PDF might be the best way to go about doing it? Hate the thought of dealing with PDF libraries and Ruby? You might be in luck. There is a web service that does PDFmyURL. We will be doing some experimentation for a project and if it goes as expected we will release a gem in the near future. Let us know if you have seen something better.
In doing some optimization for the back-end of the top selling iPhone application Word with Friends we put Cache-Money a write-through caching library for ActiveRecord to the test. So what exactly does that mean?
Read-Through:
Queries like User.find(:all, :conditions => ...) will first look in Memcached and then look in the database for the results of that query. If there is a cache miss, it will populate the cache.
Write-Through:
As objects are created, updated, and deleted, all of the caches are automatically kept up-to-date and coherent.
Add to this that cache-money also supports multiple query types, multiple indices, ordered indices, window indices, calculations, version numbers, transactions, rollbacks, mocks, locks and local caches, and it gets impressive pretty quick. If you are looking for caching to optimizing. Show me the money.. er cache-money.
"Integrum helped us find creative solutions to some very unique challenges. In one case, we needed a way to quickly and easily provide alerts on our website when buses run late or go on detour, and we wanted these alerts to come directly from our Customer Service Department. Integrum worked with our reps to custom build a tool that gives them control over the info."
With a stable of long term clients and growth on the mobile development side as well, Integrum is looking to bring more talented developers to our team. We’re currently looking for Rails developers from n00b to the cliched ‘rockstar’ level.
We do real Agile (capital A because we don’t fake it) and SCRUM development, so you’ll have to be comfortable talking with clients on a regular basis. If you’ve got an interest in iPhone or Android development to go along with the Rails stuff, that’s a nice bonus too.
These are full time positions, on-site at our office in Chandler, Arizona. Benefits, perks, Pac-Man, we’ve got all those. Salary is dependent on experience.
Below is what you will find in the README for the job application on github.
Please note that these tests all require some basic Ruby knowledge. If you don’t know ruby, take a few minutes to learn the basics. You will need to have Ruby, rubygems, RSpec installed, and Factory Girl installed. In order to be considered for a position at Integrum, you must follow these steps.
1. Fork this repository (if you don’t know how to do that, google is your friend)
2. In the refactor-this directory you will find some Ruby code that needs to be refactored.
A test suite is included with failing specs.
Please refactor this code, this is real code we found in a real project that could be much more readable and intuitive.
Run spec helper_spec.rb to execute your specs and see if they are passing.
Please note: feel free to change the specs, but they should all be passing when you turn in your code.
3. In the github-challenge directory, please create a Ruby script that accomplishes the following:
Print out HTML that groups the recent commits by author.
4. Add your resume to the resume directory
5. Commit and Push your code to your new repository
6. Send us a pull request, we will review your code and get back to you
We’re sponsoring this years MountainWest RubyConf, March 13-14. Are you going? You should be there – we will be! For more information visit http://mtnwestrubyconf.org/2009/.
Gangplank Hacknight
What is Hacknight? The best way to find out is show up. It is whatever we make it.
Gangplank Academy
Come to Gangplank, same address as Integrum, each Wednesday at 11:45 a.m. for brown bag lunch and a presentation.
How do you know a company deserves an award? When the staff is so focused on going above and beyond for clients, they miss the call from the city notifying them they’ve won.
Fortunately, the City of Chandler was able to track the staff at Integrum down and award them the 2010 Small Business of the Year award at a banquet held last Wednesday.
The 23rd Annual Awards Dinner took place at the Crowne Plaza San Marcos Resort in downtown Chandler. The event celebrates individual and business excellent in the community. Integrum was chosen based on the company’s contributions to the growth of the local economy, high quality service and innovations in the field of software development. Additionally, Integrum was recognized for the company’s community involvement through its nonprofit, Gangplank.
Jade Meskill and Derek Neighbors were on hand to accept the award.