Posts Tagged ‘restrictions’

TimeTable 1.0 is a go!!!

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

Ending a year and missing deadlines

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

Shipping RC1

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

Saturday, October 31st, 2009

Not too long ago I was able to pridefully ship the first alpha of TimeTable. This is a major feat because of all the rework that I’ve had to do on it the past summer. I’m happy to say that last night I was able to complete the seconds alpha and am currently in the process of prepping it for shipment.

So without further ado here are the additions to TimeTable in the alpha 2 release.

Preferences. That was my focus for the 2nd alpha. I’ve added the preferences window to TimeTable to give you even more control over your projects and your data. There are also preferences for your account and for the personal/contact information that will be seen by clients when you create read-only links and invoices. Probably the most exciting preference is the ability to set a “auto sync”; a feature that will keep your data in the cloud up to date without you having to sync it manually. I’m currently experimenting on time intervals to see which works best. The options currently are to auto sync every 30 seconds, every minute, or every five minutes.

Data persistency was something that was required before I was willing to ship the first alpha. It seems a little pointless to ship a product that doesn’t retain its data. With the first alpha you were required to go to the “File” menu and save your data manually before you left the page. One issue with this is that you had to actually remember that your data needed saving. With the addition of autosyncing in Alpha 2 I have also added an alert when you try to leave the page while there is data that has not been updated in the cloud. The solution isn’t the most elegant, but it is probably about all I can do given the limitations of running the application inside the browser. Nevertheless I’ll continue to research and see what more I can do to improve the user experience.

In Alpha 1 I was so excited to get it out to the public that I hacked together I login system, the downside to this is that I didn’t create any way for user to change their password. With alpha 2 I created a rudimentary system for changing your password. This will be a huge focus for the beta releases when they ship providing a consistent user interface through the application.

You can now download a TimeTable file with all your data from the file menu. Over the course of the testing process I’ll add the ability to re-upload this file. This is a feature provided for ease of mind, so you don’t have to trust the beta/alpha servers with your data; I should make it clear that before I ship a new release I do extensive testing on the data storage system making sure this feature will likely never need to be used for backup purposes.

The last feature that was added with the 2nd alpha was a visual representation of urgent projects. In your preferences you have the ability to set when a project becomes urgent. For example if you set the value to seven days TimeTable will change the display of the project in the sidebar to let you know that the deadline for your project is less than seven days away. This of course only displays for “work in progress” projects, and will return to normal once you mark the project as complete.

This is a very exciting release, and I’ve already got big plans for the 3rd alpha.
As a bit of a teaser, alpha 3 will focus on the clients half of the application.

I few new alpha invites will be going out this week. I hope you all enjoy TimeTable and I look forward to hearing your feedback.

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.

The Future of Applications

Monday, July 20th, 2009

Applications have come a long way in the last 30 years. From punch cards, to a simple command line interface, to the first graphical user interfaces, to high end editing of photographs and videos. We said “wow” when we watched Steve Jobs introduce the Macintosh in 1984 and we said “wow” when we saw Steve Jobs demo the iPhone in 2007. What makes hardware great is not how fast the processor runs or how shiny the box is. Software makes hardware worth spending money on. Software engineers have been through it all: punch cards, the command line (we’re still there), the mouse, pretty animations. It really is amazing how quickly things have changed but what’s even more amazing is how quickly things are still changing; it’s exciting! So where is the future of applications? Why is the future so exciting? What does the future have in store for individuals, businesses, and enterprises?

(more…)