Posts Tagged ‘advanced’

Don’t Stand Still

Wednesday, 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

3… 2… 1… SHIP!

Saturday, 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

The Future of Applications: Part 2

Tuesday, September 22nd, 2009

A few months ago I wrote a rather extensive blog post about the future of applications. With a few recent announcements in the industry and a newly discovered HTML5 API I thought it prudent to revisit this subject.

Of course the recent announcement I am talking about is WebGL implementation in both the latest nightly builds of WebKit and Firefox. WebGL, if you’re not familiar with it, is short for Web Graphics Language. WebGL provides access to OpenGL ES 2.0 from within the browser using javascript. OpenGL ES 2.0 is the graphics engine used on the iPhone and the iPod touch (and other mobile devices). This gives you an idea of the possibilities WebGL is opening up.

The new Canvas element (as well as SVG) in HTML5 adds a vector graphics layer on top of HTML lifting dependence on bitmap graphics. Canvas isn’t new though. In fact, many web applications today use the canvas element today. The CoreGraphics frameworks in Cappuccino is written using the canvas element. For performance reasons the TableView in Cappuccino relies  on canvas to draw the table. I bring canvas up because this is exactly what WebGL uses for rendering 3D graphics in your browser. To draw on your canvas you select a context for which you will be using. Traditionally you will be using the 2D context giving you a “surface” to draw two dimensional primitive shapes. WebGL opens up the 3D context of the canvas element to developers. Actually, WebGL takes it to the next level by more or less “bridging” the 3D context of canvas with OpenGL ES 2.0.

I’ll come back to WebGL later but I want to touch on an API in HTML5 that I had forgotten about when I wrote my original post about the future of apps. I’m talking about Web Workers. First off, you must understand how javascript works in the browser. The javascript in your browser (generally speaking) runs on the same CPU thread as the browser itself. The Google Chrome browser has actually abstracted the webpage and makes it run as a separate process from the browser. This means if your javascript freezes the browser only the page you’re looking at crashes, leaving the other tabs in tact. This however doesn’t solve the problem of a multi-threaded like implementation in javascript. To solve this problem Web Workers were introduced letting parts of your javascript run independently of others. A great example of this is found on the prime number calculators on this page. One version will actually hose up your browser while the other brings the javascript into a new thread preventing the browser from hosing up.

To recap I’ve talked about hardware accelerated graphics and multi-threaded javascript running from within the browser. Now lets take a look at what I said just two months ago.

A few exceptions do come to mind. We currently don’t have support for things like hardware graphics acceleration, extensive support for multi-core processors, standardized local storage solutions, and standardized personal identification.

Now, multi-threaded does not necessarily translate into multi-core but once the javascript is threaded the browser can easily assign different tasks to different cores. So it looks like high performance demanding applications are no longer a problem with HTML5. That just leaves the standardization of access to your personal identity on the web. I am obviously not the only person thinking about how to bring all my desktop applications to the browser. The future is already here, now we must jump ship or waste time catching up.