Don’t Stand Still

March 31st, 2010

Too often developers allow their applications to remain stagnant after launch. This is not something I want to happen with TimeTable. A couple days ago I pushed a small update which gave immediate access to a simple API allowing developers to get data into TimeTable. The biggest request I’ve heard from people is that they want to be able to use a timer outside of TimeTable. This is now being opened up with the announcement of the first companion TimeTable application, the TimeTable Work Timer.

Because TimeTable is written using the Cappuccino web framework and Objective-J it closely resembles the native programing environment on Mac OS X (Cocoa). This makes it extremely easy to port software from one platform to another. As a result I ported the work timer from TimeTable to Cocoa. The result gives you a simple, stand alone, work timer which integrates seamlessly with TimeTable.

The timer itself looks like this:
TimeTable Work Timer

Once you close the timer you will be prompted if you want to send the data to TimeTable. If you click yes TimeTable will load up and you will be prompted to select the project you wish to add the timed work to.

TimeTable Once you select the project the you can add the work time just like you would any other work time in TimeTable.

Remember, this is the first version of this timer, I will continue to work on it adding more functionality. Since I’m opening the TimeTable API I hope other developer will also build TimeTable integration into their products. If you have a favorite timer application you use for your work, let them know you want TimeTable integration.

If you’re a developer you can read more about the TimeTable API at http://timetableapp.com/developers.html

This API will continue to grow with time, so more features will be added and better integration will be supported. If there is something specific you would like to see also feel free to email support!

The new TimeTable downloads page is located here, or you can download the new TimeTable Work Timer directly.

Update: added support for Mac OS X 10.5

TimeTable 1.0 is a go!!!

March 24th, 2010

I’m really excited to be able to bring Timetable to you today! TimeTable has really been an important part of my life for the past several months and I’m increadibly proud of what I’ve been able to produce! I want to outline a few new features in the latest release, these are things that did not ship with the last beta. 1. Unified UI – with the new version of TimeTable the UI has been updated to be easier on the eyes and more unified. Windows now have a border around them to help them stand out from the background. HUD windows have been replaced with standard windows. 2. Reorderable projects and clients – I would have really hated to ship without this feature. I put a great deal of work into Cappuccino, the underlying technology behind TimeTable, in order to get drag and drop working for TimeTable. If you want to reorder your projects or clients, simply drag them to the location you want them. 3. More drag and drop – why stop with the projects and clients? If you want to move work time or expenses to another project simply select the items you want to move and drag them to another project. If you want to reassign a project (or group of projects) to another client simply drag them to the new client from within the clients view. 4. Sortability – TimeTable now lets you sort your projects, work times, and expenses! In any of the three tables you can sort by whichever column you want! 5. Better deadlines – I break down and rewrote the deadline picker. When You go to assign your deadline to a project you can now get the standard date picker but also the more visual calendar, and of course you can clear your deadline too. 6. Auto-complete – When you go to assign your new project a client you can begin typing the client’s name. TimeTable will try to auto-complete as you type. If you type a client’s name which is not being stored by TimeTable you will then have the option to create a new client with that name. If you were a beta tester for TimeTable you will be able to continue to use TimeTable for another 35 days until you will be required to renew your account. If you provided helpful feedback for TimeTable I’ll be emailing you with a coupon code which you can use to renew your account for another full year! If you were not a beta tester of TimeTable I’m also giving away 25 free accounts to TimeTable in a limited time promotion with 280North! More details on that to come. Check back later! :) I’ve also updated resource on the website including a new screencasts page. I’m very proud of TimeTable 1.0 and hope you find as much value in it as I do! TimeTable is launching at a price of $34.99 US a year.

You can try TimeTable for free by visiting http://timetableapp.com/TimeTable
With the login: demo
and  password: demo

3… 2… 1… SHIP!

February 20th, 2010

Well, almost. So the purpose of this blog post is to let you know I missed another internal deadline. There have been a few new problems that arose with TimeTable. A couple were technical related, a few real life delays, and then there is the matter of me wanting to have  every feature I could think of in the product.

So let me give you a small update on TimeTable itself before I talk about shipping.
I’m so proud of this product.  I went back to RC2 the other day just to see how much work I’ve actually done and I was blown away. Some companies would ship RC2 as a finished 1.0 product and the GM I’ve got running as version 2.0. So the first thing I did that the user will love is updated the deadline picker. When you select the deadline for a project you can now use the text date picker control, or the calendar view.

The next thing noticeable is the interface improvements. I’ve gone ahead and added a boarder around the top of windows in order to make them stand out from the background below them. This means I can essentially remove most of the unneeded dark HUD windows in favor of a more consistent interface. Small things like a auto-completing textfield was added. So when you assign a client to a particular project you no longer have to type the name perfectly. I also added some hooks in the application for account renewal. So basically when you login and your account is about to expire you get alerted. You’ve also got a way to renew your account from within the application.

A lot of work has gone into the tables themselves. Your projects and clients are not re-orderable. So you can simply drag a project or client from the sidebar and change the order of it. I’ve gone above and beyond that though! You can also drag work time and expenses to different projects thereby moving it! The same holds true for clients too. If you drag a project from the clients view to another client the project is then associated with the new client. The behavior is a bit difficult to describe, but it’s very intuitive once you see it. With drag and drop there is also sorting. Your projects, work data, and expenses are now sortable by clicking the header for each column. In addition to sorting there is also resizing. If you need more or less room to display your data the tables are all user resizable.

Obviously the point of this release is to focus on bug fixes, and that’s all I’m going to focus on for now.

What you probably care about most is the shipment date though, so lets talk about that. I was ready to ship TimeTable 2 weeks ago until I found one bug in the latest builds that I can’t live with. Once that is fixed I’m shipping the product. I hope to also ship with a series of screencasts to help you, the users, easily jump in and start using TimeTable. So what about a rock solid date? I simply can’t give one. I’m pushing for the end of March at the latest, but it’s up in the error.

I really want to get the new Gold Master in the hands of the users, but with the renewal system tied in I simply can’t do that.

Thank you all for the support.
-Randy Luecke

Shipping RC2

December 29th, 2009

After several weeks of development I’m happy to say that the second TimeTable release candidate is out the door. This release is feature complete meaning no new features will be added between now and ship time! With this release I’ve added a number of new features, as well as more bug fixes, and a slightly cleaner interface. I’ve also take then time to redesign the website a little and update the much neglected content. With this release I have discontinued the beta program for new members. If you’re already a member of the program I urge you to try out RC2 and submit your bug reports as this is your last chance to receive a discount on the final product for feedback. Even though I won’t be adding new features I am still open to feature requests for future updates.

Here is a list of some of the new features and enhancements added to TimeTable:

  • Faster Syncing
    • Automatic syncing is now turned on by default
    • An additional sync time of 10 seconds has been added for faster syncing
  • Currency
    • You can now set your currency to Dollars, Euros, or Pounds. More currencies may be added upon request.
  • Gmail
    • You can now set a preference in TimeTable so that all new email compose windows open in Gmail instead of your desktop mail client.
  • Skype and Google Voice
    • Skype support is now built in for client calling. If you have Skype out credits you can enable this feature adding a Skype button next to your clients phone number which will automatically call your client’s phone number via Skype.
    • If you would rather use Google Voice instead of Skype that is built in now too!
  • 16 bit PNG support for logos
    • If your logo is a 16 bit PNG the invoice generator will no longer fail when you try to generate an invoice. I must say though, the quality of pngs are not a good as jpgs and gifs so I would recommend using those instead.
  • Driving directions
    • You can now get Google Maps driving directions in TimeTable. On top of this TimeTable has added support for using your current location as your starting location. If your browser is not geolocation aware TimeTable will look at your IP address. If you would rather just use your personal address you may set that in your preferences.
  • Double clicking
    • Double clicking clients names in the “All Clients” window when choosing a client for a project will now automatically select that client.
    • Double clicking expense items and work data items will bring up the edit window.
    • Double clicking on the project listing of each client switches to the project view and automatically selects that project.
  • More robust company clients
    • You can now select whether a client is a company at the time you create the client.
    • Companies in your clients list now display a building instead of a head.
    • Name orders have been fixed for companies when editing/adding the name or changing the client’s company status.
  • Clearing deadlines
    • Projects are no longer required to have a deadline. You can also clear a deadline that you once set.

Many UI improvements have also been included with this release including HUD style scroll bars which were beautifully designed by Sofa, and several new additions to the tables and source list. Most of these improvements have been contributed back to Cappuccino. I’ve also eliminated text clipping on some of the textfields which occurred on windows.

The next release will be the Gold Master. Upon shipment of the GM I will release pricing information and begin working on the payment system. TimeTable will of course be free until that time. The GM will focus on fixing the few bugs that remain.

I want to thank everyone again for their support in getting this product out the door. I couldn’t have done it without you all!

Thanks,
Randy Luecke

Ending a year and missing deadlines

December 23rd, 2009

It’s not uncommon for software engineers to miss deadlines; in fact it’s far too common. As the end of the year rolls around I wanted to share some internal stuff regarding TimeTable. TimeTable development began in early March of 2009. Since that data I set an internal deadline for myself of shipping TimeTable 1.0 by my birthday, December 31st of 2009.

When I began TimeTable development I thought I could write a web app using PHP, XHTML, JS (with jQuery), and CSS. For the most part this was a decent application. The problem I had with using traditional web technologies became much more prevalent when I reached several thousands of lines of code. It wasn’t pretty. If I needed to change one line of code I could spend fifteen minutes looking through a single file for the javascript, or CSS if it was a style that I needed to change. Then it could have been a style that I needed to change but the style was set in javascript instead of CSS. Some people would say I was just sloppy with my code, and they would be right, to an extent. But in the process of being sloppy I uncovered a sad truth in the use of jQuery and traditional web technologies for web application development: It simply doesn’t work. jQuery is a javascript library designed to be used for websites, not applications. Then as I approached the launch of a product I began to spend more and more of my time squashing browser bugs. Every browser had its own problems, and it was unmanageable.

It was hard to bring myself to rewrite something which I had put so much time into, but it was painfully obvious I wasn’t really happy with where TimeTable had gone. So it was around the middle of May I found myself looking for new options. It was about this time that 280North introduced a new product called Atlas which took the internet a storm at the Future of Web Apps conference. Atlas in short is a web app Integrated Development Environment (IDE) for the new web application framework Cappuccino. Coupled with the new Aristo theme designed by Sofa I became very interested in Cappuccino when developing my 2nd iteration of TimeTable.

I wasn’t totally sold on Cappuccino at first. Cappuccino is designed to abstract you from the “web layer” you’re working on. That is, you should never use traditional web technologies (HTML, CSS, Javascript) to design your app. Instead Cappuccino actually requires you to use a whole new language called Objective-J. Based off Objective-C which is used almost exclusively on Mac OS X and the iPhone Objective-J takes a little bit to get used to. Objective-J is actually compiled down to javascript later on using either a parser on the browser or on your development machine if you’re putting out a release version. Objective-J is a strict superset of Javascript though, which means any bit of javascript you write is still perfectly valid. Because you’re sitting on another layer I wasn’t sure how comfortable I would be using it. I explored other options like SproutCore which Apple uses for their MobileMe web applications and GWT which Google uses, but each of them had their own fall backs. In the end 280Slides and Atlas sold me on Cappuccino.

I spent the next several months hacking together some ugly code. It got to the point where I began to wonder if using such a cutting edge technology was such a good idea for TimeTable. Cappuccino was obviously incomplete, specifically  missing a key component: the TableView! How could I actually choose a framework which didn’t even have a component necessary for the product I was going to ship? Well after a few days of stalling I went and looked to see what SproutCore was doing about the tableview, only to find that Sproutcore through it would be a good idea to ship a 1.0 framework without a decent method of displaying tabular data. The TableView for Cappuccino had already seen quite a bit of work from 280North, but development had kind of stalled a little bit. It was at this time that I contributed my first bit of code to an open source project. I brought the tableview up to spec enough that it could actually display data as needed and look decent too. After several weeks of work I push the new CPTableView up to my Cappuccino repository and it was merged into the main branch. Since then, several other parties have contributed features including theme-able cells (included the selected state) and inline editing to the TableView. I also added things like keyboard support, better support for scrolling to rows and columns, and automatic resizing of columns. You should see these features merged into the main Cappuccino repository come the first of the year. The TableView is a key component for many different projects so don’t expect development to stop; I’m sure many people will contribute to the TableView and TimeTable will only get better because of it.

Over the many months of working with Cappuccino I gained access to the private Alpha of Atlas. Before the beta went out I got to see exactly what Atlas could do. Again, I was impressed, but more so because of what I saw I could do with my application after I compiled it. It wasn’t until the public beta of Atlas shipped that I was able to talk about it, but I saw TimeTable running on the desktop, side by side with my native applications. It’s pretty amazing to see it in person and got my head spinning with ideas. It was at this time I knew my “gamble” with Cappuccino had actually paid off.

As the end of the year rolls around it’s become obvious to me that I won’t be shipping the final version of TimeTable by my internal deadline of December 31st.  That’s okay though because TimeTable has simply blown me away. I couldn’t be happier with my decision to move TimeTable to Cappuccino and likewise I couldn’t be happier with the way TimeTable has turned out. I planned on shipping the 2nd release candidate today however there are a couple features I want to implement. Once the 2nd RC is out the door I’ll be locking the feature set down for 1.0. Meaning, there will be no new features added to TimeTable between RC2 and the Gold Master (GM). Gold Master will be the version I ship which will be sold. After I ship the GM I will be focusing my effort on getting the TimeTable website which has been sadly neglected up to spec with the application. This includes getting pricing information, frequently asked questions, up date help files, screenshots, and screencasts online.

I’ve already begun developing a feature set for a 1.5/2.0 release, which will of course be free to most TimeTable users (more details about this when the pricing information goes up). I want to thank all of you who have supplied feedback for TimeTable. You will be receiving coupon codes when TimeTable ships for your discount. I also want to thank all of you who have provided support, you’ve been invaluable. TimeTable will ship as a rock solid product and this couldn’t have been done without the Cappuccino community, and all the support I’ve received from you guys.

I hope you all have a happy holiday season.

Thank You,
Randy Luecke

TimeTable on the Desktop

December 6th, 2009

If you pay attention to the login page of TimeTable you’ll notice that there has been a download button for Mac, Windows, Linux, and the iPhone. This may confuse most people as  TimeTable is branded a web app. The awesome thing about a web application is that you can access your data from anywhere in the world. For some reason though there is a nice feel when you use applications on the desktop that you don’t always feel when your application runs in the browser. Most of the time this is because web applications are poorly designed. Because Cappuccino makes it incredibly easy to make desktop class applications in the browser this really isn’t an excuse for TimeTable. So what is it then? Well, I tend to think people are just used to desktop applications and keep themselves on the desktop because they don’t like the change.

As of last night I was able to get the TimeTable running as a native application on the Mac. So what does this mean? Well, with a great technology called WebTop which is supplied with 280 Atlas, I was able to build TimeTable to run on the desktop. What is so awesome about this is that while I was a private alpha tester for Atlas I did not use Atlas to build the TimeTable interface. What this means is that I took my existing Cappuccino application and built it with Atlas. Albeit TimeTable failed to build with Atlas it wasn’t hard for me to take a few minutes to get it working. The problem here is that Atlas doesn’t play nice with my custom frameworks that I use for Timetable.

So lets talk about actually getting TimeTable running on the desktop. First off this is what it looks like. http://timetableapp.com/PR/DesktopVersion.png Even though I built the desktop version of TimeTable with the source code for the release candidate I wouldn’t consider this version even a beta. In order to get Timetable to work on the desktop I had to disabled all the server features of TimeTable. More specifically I turned off the ability to create invoices, sync data, access your online account, etc. This of course is not going to be ideal for a shipping product, but nevertheless the fact that it actually runs is pretty exciting.

I will make sure not to focus too much of my time on the desktop version of TimeTable yet. The most important thing is that I get a solid 1.0 release of TimeTable shipped for the browser. If everything goes as planned (I’m not really expecting it to though) I should get a desktop version of Timetable shipped within a few weeks of the actual TimeTable 1.0 release. The desktop version of TimeTable will run on both Windows and Mac OS X. I will likely drop support for Linux at this point because Atlas will not support it.

At this point I’ll have time to work on the iPhone version of TimeTable. This will complete the circle. You will have access to your work data from your work desk with a native version or web version, from your home desk with the web version, and from your location away from your home or office with the iPhone version.

The beauty of this is that because TimeTable was written a platform agnostic language (Cappuccino) via web standards what you use on Mac OS X, Windows, and in your browser will be the exact same thing.

This is an exciting era for web applications, and I am so proud that TimeTable will be with the best of the best at the forefront of this revolution.

Thank you,
Randy Luecke

Shipping RC1

December 5th, 2009

Wow, can you believe this product is almost here? I for one still find myself in a little big of disbelief. I wasn’t originally planning to ship the Release Candidate (RC) this soon, I wanted to ship out he third beta first. Problem came when I got caught up in new feature after new feature and found no reason to ship a 3rd beta. So without further ado lets list some of the new features.

  • Customizable Invoices
    • This is a huge feature. Inside of your preferences you’ll see a new tab for invoices. From here you can now upload your company logo, change the invoice colors, and set the invoice number.
    • I’ve also made the “generated by TimeTable” logo less prevalent at the bottom. You’ll have an option to remove this when TimeTable 1.0 ships.
  • Email-able invoices
    • In the previous builds this feature was disabled. This isn’t as perfect as I would like. The TimeTable email template is applied to the emails and I would rather the emails be sent in a more generic fashion. I’ll be experimenting with some options for this.
  • Invoice numbering
    • Inside your preferences I’ve added the ability to set the invoice number. This number is displayed on the invoice below your name and address.
  • Help
    • By popular request I have added documentation to TimeTable. From within the help menu you can learn about all the ins and outs of the application. It might be nice to search through this, but for the time being it is organized as is.
    • I’ll be adding more to this help over time. – feedback is more than welcome
  • Inline work data deletion
    • In past builds the only way to delete work items was to select them and hit the delete key on your keyboard. In this release I added a button next to each work item and expense item so that you can easily delete them if needed.
  • Resizing fields
    • I’ve fixed the regression with the multiline textfields. The “details” field and “notes” field from the project and clients section respectively both resize themselves if you go beyond the bounds of the field to prevent them from cutting off.
  • Client address field
    • I’ve added the ability to set the client’s mailing address.
    • My original plan was to give users driving directions via google maps using either your current location or the location you’ve supplied in your personal preferences to the client’s address. I ran into licensing issues with Google maps. For this reason I have removed this feature from this release. If you’re interested in seeing a feature like this please let me know and I’ll work harder to get it integrated. The code is basically already in place, it’s simply a matter of licensing Google Maps for a commercial product.
  • Mark clients as a company
    • If your client is a company not an individual there is now a checkbox for this. This will prevent the name order from changing on your company names if you have your preferences set to display the last name first.
  • Label bubbles next to client name
    • In the clients list it now shows a little bubble next to each client name. This bubble can be set to show either the total number of projects for a client, the total number of incomplete projects for a client, or the number of urgent projects for a client (this is default).
  • Upload Data files
    • You’ve been able to download TimeTable data files for quite a while, until now you could never re-upload them. One thing to note is that old TimeTable Data files will no longer work, you’ll have to download a new one.

There have of course been many bug fixes so I look forward to hearing your feedback. To send me feedback just use the feedback menu within the application, of you can tweet me at @timetableapp I’m not going to list any bugs for this release, bug please submit them as you see them. Remember that your feedback will give you a huge discount on the product when it ships. This will be one of the last release that will give you a discount on the product so keep it coming. The more feedback you send the greater the discount.

Thank you all for your support,
Randy

Shipping Beta 2

November 23rd, 2009

So after much feedback and many bug reports I’ve gone ahead and shipped beta 2 of TimeTable. This version consists of a few new features and bug fixes.

New features include:

  1. Client creation from projects

Bug Fixes:

  1. Invoices creation no longer fails after the first one
  2. Enter key now supported on more default buttons (please let me know if I missed any)
  3. Tab between more field (let me know if I missed any)
  4. Contextual Menu on the client no longer says “flag client” if the first client is already flagged.
  5. Entering work data no longer shows negative time if you go from PM to AM.
  6. More inline feedback submission (still needs to be built into the app)
  7. Entire toolbar item is now clickable

Known Bugs:

  1. Client name gets cut off if longer than two words
  2. [REGRESSION] multiline textfields are now single line
  3. No ability to upload company logo for invoices
  4. No ability to re-upload downloaded TimeTable data file
  5. Removing data items should have a button
    • Use the delete key right now
  6. Tables are not sortable

If you find any bugs, have feature requests, or find parts of the interface confusing please let me know.

Email outage

November 21st, 2009

What a day folks!

In the course of about 30 minutes I sent out 300 email invites to TimeTable. I’ve already received great feedback and look forward to more in the coming weeks.

Though I’ve run into a major hiccup. For simplicity sake I delegated my email for TimeTable out to Google. Unfortunately there is a quota for the number of emails you can send in one day. Needless to say sending 300 invite emails and additional confirmation emails per account has caused google to quit sending emails. After further investigation I’ve found that google limits the number of emails an account can send per day.

For this reason I’ll be working on hosting my own email as to avoid this limit.

I wish there would have been a way to test this out before sending out the 300 invites. I know many of you received your invites and others did not. For this reason I’m going to resend each of them again when I make the email fixes. If you’ve got your invite but never received your confirmation email you’re still free to login. I’ll make sure all accounts are marked as active.

Apologies for this I hope to get the invites out again by the end of this week!

Thanks,
Randy

Invites!

November 20th, 2009

Well guys, tonight is the night! I’ve spend the last week reworking some login, account creation, and logging systems for my new server. I’m very excited about this but nervous at the same time. I have no idea what the load on my server is going to do when I open it up so if something breaks send me an email or tweet @timetableapp and I’ll try to fix it as soon as I can.

I’ve also done work on TimeTable since the beta shipped but the invites will be for beta 1. I’m not really comfortable shipping the next version even though several bugs have been fixed and the user experience is much nicer. Below is a list of known bugs.

  • Invoice creation fails every other time
    • solution: reload the application and it should work again
  • Pressing the tab key doesn’t always take you to the next field
  • Pressing enter doesn’t always activate the default button
  • When you select rows in the table the text color remains black (should be white)
  • No button for deleting work items/expenses
    • When you select rows hit the delete key to remove them
  • Keyboard shortcuts are not labeled in the menu
  • Client names can only be two words long
  • no sanitation of client email/phone/fax data
  • When you flag the first client the contextual menu doesn’t update correctly when you switch back to the clients tab
  • You must click the icon in the menu item
  • Details field cuts off details if it’s too long.
  • No way to re-upload downloaded TimeTable data files
  • Project urgency doesn’t change when deadline changes until you select a different project first.

I’d also like to point out the preferences menu item in the “TimeTable” menu at the top. Please take the time to fill out some of your preferences.

I’ll try to get a more formal way to submit bug reports in the coming versions as well as screencasts and help items. Until that time feel free to email me at randyl @no-spam@ rclconcepts.com or send me a reply on Twitter @Me1000

Thank you all for the awesome support you’ve shown.

-Randy Luecke

PS: REMEMBER TO TURN ON AUTOMATIC DATA SYNCING!