The Intervals Blog
A collection of useful tips, tales and opinions based on decades of collective experience designing and developing web sites and web-based applications.

Tracking the Untracked with Online Time Tracking Software

January 24th, 2012 by John Reeve

Tracking the Untracked with Online Time Tracking SoftwareMost of us using online time tracking software are already tracking the important stuff, like client work and internal projects. But there are plenty of other miscellaneous tasks we perform day-to-day that we don’t think to track, because they aren’t billable or directly related to any current projects. When we take the time to track these activities, we can make new discoveries into how we are managing our time.

Lunch

Try this time tracking tip for a few weeks. You will be surprised at the outcome. Start a timer when you sit down to eat or head out to lunch. Stop it when you get back. Tally up the totals at the end. Chances are, you aren’t taking a long enough lunch break. Let’s admit it, we’re driven and we work hard and the fact that we take such short lunches, or eat at our desks, shows just how much. Want to restore some work-life balance in your day? Start by taking a longer lunch break.

Travel

You may already track the time you spend travelling to visit with clients, but most of us don’t (and if we do, we probably aren’t billing our clients for this time). We spend a lot of time on the road and in the air to meet with our clients. Just how much varies from business to business. What you might find is that travel time can be re-purposed into billable time — sketching out design comps, writing copy, or coding on a laptop. If you happen to be spending a lot of time behind the wheel, consider charging that to the client as well.

Learning Opportunities and Conferences

Where would our careers be if we did not take the time to advance them? Keeping ourselves relevant requires us to keep up with current web trends and technologies. One of the best ways to do this is through courses and conferences, where we can interact with colleagues while packing our brains with knowledge. Tracking the time we spend learning new skills is useful for two reasons. First, it gives us an idea as to how much time we are devoting to staying ahead of that proverbial bell curve. Second, it helps us predict how much unbillable time we’ll spend learning so we can plan for upcoming events.

Tags: , ,
| No Comments »

We’ve Improved the Intervals Search for Time, Tasks, Projects and More…

January 19th, 2012 by John Reeve

Search tasks by keywords and phrasesWe are quite happy about the fact that Intervals has been increasing in size and popularity since we first launched it six years ago. One of the “growing pains” we encountered was the challenge of providing a fast and relevant search for our customers as the amount of data in their accounts increased. Intervals’ customers tend to accumulate a lot of data, and getting to past and present tasks, projects, documents and other such data quickly is a top priority. Unfortunately, our search utilities had been under-performing.

Designing and developing search utilities is not easy. Creating a fast and relevant search is even more difficult, and is becoming more so as web technology advances. Just look at the number of web sites out there using Google as their site search engine to see what I mean. Indexing web site data and searching against it is typically left to third party services. For our customers, we needed a way to index and search their data in a fast, relevant, and most importantly, secure fashion. One that operated wholly inside of Intervals.

After a lot of time at the whiteboard discussing and researching strategies, we’ve rebuilt the Intervals search from the ground up. Now when you login to Intervals and search for tasks, milestones, project notes, documents or projects, the results will appear much faster and contain much more relevant information.

Search projects, tasks, documents and more from the footer dock

Whether you are searching for an exact phrase or any combination of keywords, the new and improved Intervals search will find it for you. And now that we’ve overhauled the core functionality driving the Intervals search, we’ll be adding additional functionality in the near future to help you get at your data as quickly as possible.

We want Intervals to grow with your small business. This is just one more way we are striving to make that happen.

A Brief How-to on Search

Intervals Improved Task, Time and Project SearchThe new search utility provides a basic keyword search by default. Enter one or more keywords to find the data you seek. When multiple keywords are entered, Intervals will look for data that contains any of those keywords. To enforce a stricter search on keywords, put “AND” between each one to tell the application to look for data that contains all of those keywords. To refine the search results even more, enclose the keywords in quotes to do an exact phrase search. For more granular details on how to use the new search, see our forum post on Search Improvements, Syntax and Tips.

Under the Hood

Happen to be a fellow web developer or database administrator and want the nitty, gritty details on what we did? Keep reading…

PostgreSQL LogoIntervals is built on top of a PostgreSQL database, which has it’s own built-in search utility known as Full Text Search. This solution was ideal when we first launched for two reasons. One, it was one of the only options available at the time that would accomplish strict set of requirements. And two, it was native to our development stack in that it was part of the database.

Over time, the default Full Text Search settings became less and less suitable to the type of indexing and searching we were doing. Intervals customer data is in a constant state of flux, requiring indices to undergo constant rebuilding. Search results were slowing down and becoming less relevant as a result of trying to keep up with the dynamic nature of the Intervals web-based application. We faced a crossroads. Overhaul the native PostgreSQL Full Text Search settings or develop something else.

Apache Solr LogoOur team’s expertise lies primarily in web design and development. So rather than train everyone in PostgreSQL administration, we went with a solution that would have a smaller learning curve for our developers — Apache Solr. Solr is blazing fast, robust, open-source, and was easy for our web developers, who already have an extensive knowledge of XML and RESTful/JSON APIs, to pick it up and run with it. Also, Solr is widely used by many prominent web sites and is continually supported by an active open-source community.

Most of our time at the white board was spent designing the new data structures for the search indices. Once that was done, plugging them into Solr was easy. Now we’ve got Solr handling indexing and searching customer data, while leaving PostgreSQL to do what it does best, store, retrieve and maintain the integrity of our data.

Photo credit: josie lynn richards

Tags: , , , , , ,
| 2 Comments »

How Web Designers and Developers can Contribute to Open Source Projects

January 18th, 2012 by John Reeve

How Web Designers and Developers can Contribute to Open Source ProjectsMost Web designers and developers I’ve met use Open Source projects in some way. We design using free icons and develop on a LAMP stack. Popular MVC frameworks are widely used and supported. It’s rather difficult for a Web designer or developer to get very far without Open Source software. Most of the Open Source software world is dominated by the behemoths — Linux, Apache, PHP, Ruby, Rails, and the list goes on. However, there are also hundreds of thousands of smaller players in the Open Source arena, and they can use all the help they can get. Think you don’t have anything to contribute to Open Source projects? Think again… below are three different ways web designers and developers can contribute to Open Source projects.

Release code from your application

Web-based applications are popping up everywhere to manage everything from business productivity to personal interests. That means developers are solving a lot of existing problems in a new medium — the Interweb. Why not release the code for one of the problems solved? You will be helping others out, adding a great line item to your resume, and calling attention to your work and your company. It’s highly likely you’ll get feedback from your open-sourced code, which results in better code, and in turn, a better Web-based application.

A great example of this in action is the Emogrifier. Our Web-based project management software, Intervals, needed a feature developed that would allow users to send any page as an HTML email. It needed to merge external CSS definitions with an HTML document, resulting in an HTML email with inline CSS rules that most email clients could display. The code we ended up with was portable and we new other developers would have the same need, so we released it to the Open Source community. Since then it has only improved as developers have identified bugs and contributed improvements.

Share your unused design templates

When we design web sites we churn out a lot of comps. Only a few of those actually get used. We end up with a lot of unused design ideas filed away in random folders on our hard drive. Give these design comps a greater purpose by open sourcing them. You’ll be helping out other designers by sharing your work, and draw more attention to your design portfolio. To contribute to the open source web design community, take a look at the owsd or openwebdesign web sites.

Contribute to an existing open source project

No open source project is a one-size-fits-all solution. This is why most open source web apps have plugins available for download to add or customize functionality. Contributing plugins to open source software that you use is one of the best and easiest ways to get involved in its community. Write a plugin for WordPress or a module for Drupal because it is something you need, then give it back to the community.

When we integrated the Solr search utility into our project management software we settled on using Solarium. But there was one piece missing — a Curl adapter for communicating between the Solr server and our PHP code base. So we built one. Then we contributed it back to the Solarium project for others to use.

It doesn’t take a whole lot of effort to contribute to Open Source projects. It just takes a little bit of time.

Tags: , , , , ,
| 3 Comments »

Three Time Tracking Myths Debunked

December 15th, 2011 by John Reeve

Three Time Tracking Myths DebunkedWhen it comes to time tracking, small businesses and freelancers alike either love it or hate it. On the love side are those who’ve embraced time tracking in a way that benefits their business, clients, and empowers individual team members. On the hate side, some track their time because they are required to, while others steer clear of it given the choice. Whether or not you decide to track your time is ultimately a personal decision. There is no one-size-fits-all methodology for time tracking, billing clients by the hour, or flat bidding projects. You have to go with what works for you and your business. However, there are three common myths that simply aren’t true for web designers, developers, and other small businesses who decide to incorporate time tracking into their workflow.

Myth #1: Hourly billing devalues your work

The argument goes like this — the better you get at what you do, the faster you are able to do it, resulting in decreased value for services performed. If it takes you ten hours to build your first web site, and now it takes you only five hours, you are only making half as much now designing and developing web sites. This is only true under two conditions. First, you never increase your hourly rates, and second, you become faster at everything you do.

The reason you are getting faster at what you do is because you are becoming more experienced. So it should follow that the more experienced you become the more you should charge for your services. Just like a finish carpenter or a photorapher, you have to increase your rates as you become more skilled at your craft. Because you are not just building web sites faster, you are designing and developing web sites of a higher caliber.

And you are not becoming faster at everything you do. Yes, some tasks can be completed in less time. But some tasks still take the same amount of time to complete as they always have. Design work often takes a similar amount of time for research, brainstorming, sketching, meeting time, etc. Development work usually requires a similar amount of time for setting up versioning, developing unique features, and deploying web sites.

The truth: Hourly billing does not devalue you or your work, provided you periodically increase your hourly rates and continually deliver professional results.

Myth #2: Time tracking demoralizes the team

It is said that when employees, subcontractors, or freelancers are required to track their time, it becomes a monotonous and tedious chore, resulting in pulling one’s hair out, breaking pencils in half, and throwing books across the office. It’s not that bad. Especially if you use online time tracking software to facilitate filling out timesheets. But, that’s not my point.

My point is… every job I have ever worked (except for Pelago) has been marked by the same inter-employee gossip and frustration. Joe is hardly ever in the office. Sally is always showing up late. George spends half his time outside smoking cigarettes. The truth is usually far from that. Joe is actually telecommuting from home a few days a week. Sally is also leaving late. And George needs to cut down on the smoking breaks. When a team tracks their time, it cuts through a lot of the gossip and frustration because now everyone can see how much everyone else is working. Slackers can be talked to, and hard workers can be praised, both based on the time tracking data. This benefits the team and the business alike by increasing morale.

The truth: The team benefits of time tracking far outweigh individuals’ minor frustrations.

Myth #3: Time tracking is a waste of time

I’ve heard people say that the time spent tracking and entering your time is a waste of time. That all depends on how you are tracking and entering your time. If you are using paper timesheets and Excel to track and enter your time, then you need to change that up. This is the age of the Internet. What may have been taking up four to six hours of your week should take no more than thirty minutes. Most online time tracking software makes it very easy to stay on top of entering time efficiently and accurately. Just a few clicks of the mouse and your day is accounted for in hours and minutes. Aside from making time tracking easy, online software carries the additional benefits of reports and/or invoices. The ability to quickly generate productivity reports for team meetings, personal reviews or client billing is an invaluable asset to have.

The truth: Time tracking is not a waste of time if you are using efficient tools.

Photo credit: tommy

Tags: , ,
| 1 Comment »

UPDATE: The 2011 Secret Santa Name Picker Script

November 22nd, 2011 by Cameron

Last year, we published the source code we used to draw names out of our virtual hat to decide who would be giving a gift to whom as part of our annual t-shirt exchange tradition. However, a quick glance at that old code reveals its problems:

1. It’s inefficient. It uses brute force to match a set of givers to a set of recipients, then it checks to see that no one was assigned to give a gift to themselves. This works OK for small sets, but for larger sets it is very inefficient.

2. It creates the potential that two people will exchange gifts with each other. This is not a bad thing in and of itself; it’s just that if you think about the entire set in terms of a graph, the graph has the potential to lose connectivity. In larger sets, you may have many subsets of gift exchangers without any connectivity between each group. This would be particularly bad if you were trying to create the world’s largest gift exchange, as reddit is attempting to do this year with its Secret Santa program; it would be a shame if you were trying to break the record only to discover that rather than one humongous group exchanging gifts, you had 2 or 3 unconnected groups exchanging gifts. Something like that in a small group would look like the following:

Ideally, we’d prefer to have something like this (a directed cycle graph):

Fortunately, something like this in programming is easy—much easier than what what we tried to do last year. (In my defense, I did write last year’s script in a few minutes without thinking about it much.)

To represent a directed cycle graph as a data structure, you can use a circularly linked list. For the very simple code implementation below, I’m going to use a shuffled array and iterate through it once. For the last node, I’m going to use a stored reference to the first node to complete the circle. However, for more advanced programs, you would probably use a modified version of SplDoublyLinkedList where nextNode for the last node always returns the first node (and prevNode for the first node always returns the last node).

<?php

$emails = array(
'name1@yourcompany.com',
'name2@yourcompany.com',
'name3@yourcompany.com',
'name4@yourcompany.com',
'name5@yourcompany.com',
);

// shuffle the emails
shuffle($emails);

// grab the first person
$giver = $first_person = array_shift($emails);

while (null != ($givee = array_shift($emails))) {

give($giver, $givee);

// now the givee becomes the giver
$giver = $givee;
}

// once we reach this point, the final givee is the first person
give($giver, $first_person);

function give($giver, $givee) {
echo(sprintf('%s gives to %s', $giver, $givee));
}
?>

See, much simpler than last years. Happy holidays, folks!

No tag for this post.
| No Comments »