Since releasing the QCron Beta a couple of weeks ago, we have received several private emails with great inquiries about the product’s features, roadmap and usage. We believe that most of those questions (and our answers) could be shared with our whole community of users. Hence, we decided to install a Discussion Forums section. You can access it at http://forum.qcron.com/

Just for now, there is a separate registration for this section. We will integrate everything in the near future, but didn’t want to delay the forum launch because of this.

If you have questions, problems or feature requests that you want to share with the rest of the Qcron users, please post a note in the Discussion Forums. That way, everyone benefits from the answer. The QCron team will regularly post comments, but we also encourage existing members helping other members.

Thanks for the great feedback we’ve had these past two weeks! Please keep your comments coming. You are really helping us fine tune QCron!

We have launched the initial beta version of qCron. Please take a look at it at http://www.qcron.com.

Registration is completely free for now.

As mentioned in a previous post, we have invested great effort this product and are anxious to get it out in the public.

We are counting on your feedback to help us tune this first version of the product. Please sign up and send us your comments!

Register now for your free qCron account!

Very soon, we will start with beta testing of QCron. Some of the features that will be available are:

  • No user or project limit
  • Free trial until production version is launched
  • Very easy to use and setup
  • Dashboard, that provides quick indicators of performance
  • Time reports
  • Daily and weekly time sheets
  • AJAX based interface

Please stay tuned, as we will announce the beta release shortly!

When evaluating what technology to use when developing QCron, we decided it was a good opportunity for us to gain some Ruby and Rails experience, and do a reality check on the hype surrounding them.

We started working in Ruby with a background of developing Java and .NET applications, with the usual frameworks (Struts, Hibernate, Jasper, Display Tag, etc.), and some academic Smalltalk background, which helped us understand the dynamic nature of Ruby faster.

Now that we have used it some and know its strengths and weeknesses, we’d like to share some of the great features we liked about Ruby. So here they are.

Everything is an object

In ruby -as in languages such as Smalltalk-, everything is an object.

This means there is no distinction between “data types”, and objects. Everything -yes, I’m repeating myself- is an object.

What are the advantages to it?

Well, you can write code that reads:
5.times do { … }

Can you imagine the same other languages? (Ok, I’m thinking Java and C#).

In the same way, you can override class methods (aka static in Java or C#) since classes themselves are objects with the same properties as any other object.

Moreover, you can add your own methods to system classes! So, if you happen to design a system where a magical number is 14, you could implement a method in Number so that:
13.is_my_magical_number? => false
14.is_my_magical_number? => true

Blocks!

Again similar to Smalltalk, Ruby provides support for code blocks. What is a code block you may ask?

Code blocks are pieces of code that get executed in the context of another method. You can think of blocks as anonymous functions.

Blocks were created to be used with collection iterators. The main logic for the abstraction is:
The client code shouldn’t need to know the internals of the class so to know how to iterate it, but the collection itself should be able to yield each of its values at a time.

As Ruby’s creator said in an interview [1], blocks evolved to be used in much more scenarios than on collections, which is fantastic.

So, collections can have a method that receives a block of code, and executes it for each of the collection values. For example:
# Array definition
a = [1, 2, 3, 4, 5, 6, 7]
# Select call on the array
a.select { i i.even? }

Here the block code is the code within curly braces. As you can see, select is a method on the Array class that iterates through the collection and keeps only the values for which the block evaluated to true. In this case, the even values.

Can you think of such a small code to achieve the same in Java? [2]

Syntax (and redundant names)

I don’t see a point on arguing on whether or not a language’s syntax is better than other’s. Every language has its fans.

That said, I really like Ruby’s syntax, because it’s a simple yet very expressive one. For instance, if you were to write a full_name method, that concatenates the first name and last name of an object, in Ruby you’d do something like this:
[first_name, last_name].join(’ ‘)

This line creates a new array with first_name and last_name as its values, and join them separating them by a comma. While the same is possible in other languages (.NET has a Join method), I wouldn’t think of writing that code, because the code needed to instantiate a new array would clutter the code too much.

Another great sample of this are conditional expressions. In Ruby you have an if statement, but also an unless! Moreover, you can use your conditions before or after the code! So, instead of writing:
if not my_condition then
do_something
end

you could write:
do_something unless my_condition

Isn’t that great?

To end this post, I’ll conclude by saying that so far I’m impressed with the language (and with Rails, which I’ll speak of some other day). I’ll leave for other post more features such as message dispatching instead of method calls, and duck typing, which are core features that make this language so dynamic.

Is Ruby (and Rails) worth the hype? For me, clearly yes. Working with Ruby is a pleasure.

[1] http://www.artima.com/intv/closures.html
[2] Jakarta’s commons-collections help a lot by adding utility methods to Java’s collections. Yet, Java’s way to express anonymous functions (and C#’s), leaves a lot of room for improvement.
So, this is it. The first post in the QCron Blog.

And what is QCron? The simple answer would be that QCron is a project based time tracker. But in truth, QCron is much more. It is an application that will allow management of projects in several different aspects (time, costs, resource allocation, etc.) becoming a great tool for managers to make the right decisions based on hard facts.

QCron is a web based application that can be used from any workstation with internet access. We developed it using Ruby on Rails, which is a very flexible and exciting technology. And we are using multiple Web 2.0 features which generated a very user friendly solution.

As an introduction, here are some of the key points featured by qCron:

  • Web based. Accessible from anywhere with an internet connection.
  • Very easy to use and setup.
  • Detailed dashboard, that provides quick indicators of performance.
  • Employee utilization analysis.
  • Absenteeism analysis.
  • Budget analysis.
  • PDF and Excel exports.
  • Easy to use time sheet recording.
  • Daily and weekly time sheets.
  • Automated email remainders.
  • Client/project management.
  • Activities and tools experience recording.

As said before, these are only some of the strong points in this new product. Please stay in touch, as the development is progressing fast and we will have more news very soon!

Pages

Categories

We are an IT services company specializing in software development. Thanks to our strong business and technology insight we can turn strategy, design and software into creative
 
timely solutions within budget.
Certified under ISO 9001:2000 quality standards, we offer business consulting services, systems integration and IT and business process outsourcing to both local and foreign clients.