What time is it … it is time for Quartz.NET

Hi all -

Wow it has been a long time since I have posted on here and thought I would get back into blogging as I miss doing it and sharing my knowledge with the world about my love for computing..

I have been super busy these past few months working at the startup of Indigo with our clients and growing its business as well as growing the Software Development Community.

I am super excited to share with you a technology called Quartz. We are currently using Quartz at work to solve some of our complex data problems we face.

1) What is Quartz?
So Quartz is simply put a job scheduler framework. Just like UNIX cron jobs it can execute simple jobs or complex jobs at recurring set time interval. Quartz was originally written in Java by its founder James House.

2) Why can’t I just use Windows task scheduler?
Well windows task scheduler works well but what if the server crashes, or you want the scheduler integrated in your services that do specific work in your application…you can’t integrate this. Plus how do you handle Windows task scheduler across multiple clusters — forget it you need something more powerful as your application grows ins size as Quartz can support a clustered environment.

3) How is Quartz licensed?

Well Quartz is open source…you can download and look at the source code to learn how to use it. I actually was able to find great examples in the unit tests of the original source code.

4) Is Quartz being actively developed?
Yes it is. It is supported by an active development.

5) Can I use Quartz in embedded?
The size of the Quartz.dll is actually quite small and could be used in small-scale embedded applications.

So what does a basic Job look like.
In Quartz all jobs implement the IJob interface. In here you would define the specific work that needs to be done in the job.

After you have implemented your job, you need to attach it to a JobDetail.

Once attached to a job detail, you can attach a Trigger.

The Trigger is important as it defines the type of recurrence you can schedule. A SimpleTrigger allows the job to occur every so many N nanoseconds where a CronTrigger allows it to occur every “night at midnight for three consecutive weeks in a month” type requirement.

Once your trigger is defined you simply add this to the Quartz scheduler and it will run the job when you start the Quartz scheduler.

 

How cool is that … now you run that job that makes a 1000 record insert quickly in the background.

 

More to come on Quartz so stay tuned.

 

Jeff

Get In Touch With Silk

Recently I have begun investigation of the silk framework from Microsoft to build exciting HTML5 based websites. Silk comes from the Microsoft patterns and practices group and provides an interesting reference implementation to follow to build a modern web application.
Silk’s main selling points are the following:

Creating modern web applications.
A modern web application must be:

  • Immersive
  • Responsive
  • Contains a feature set
  • Desktop client-like

However the web poses many challenges. Consistently developers must rethink the way they approach these ever growing challenges.

Specifically, developers must understand these challenges:

  • Page Layout and Navigation Style
  • Support of Browser Standards (mobile or desktop web)
  • Progress Enhancement vs. Graceful Degradation
  • Client vs Server Organization (work load more on server or more on client)
  • Designer Developer Workflow
  • Testing & Debugging

Silk is a reference implementation that shows how handle this with the Mileage Stats web app that is used to track mileage, fuel consumption and service reminders.
It utilizes a single-page UI approach and implements RESTful data services that are built using the Entity Framework Code First approach.

The downsides to Silk is it is not a complete app. This set aside it should help a development team design and architect a real world web solution.

To get more in touch with Silk, please check it out on Codeplex at silk.codeplex.com

From Qt to Web

I have had the opportunity to work with the Qt framework this past year at a client.
I have learned a lot and found it to be one of the best C++/UI frameworks to do cross-platform development with. 
I want to spread the news about Qt and have started a Qt developer group here in Chicago. Our goal will be to expand our knowledge in the Qt, QML and Qt Quick frameworks.  Going forward I will be investing my time into HTML5 and Qt Webkit. This is the future for Qt and HTML5 will be bringing us the next generation of UI.

I hope Qt will remain strong, but the web has really taken a hit on desktop UI development. More and more forms based applications are being moved to the web (easier to maintain, more platforms) and more startups are using web technologies over traditional thick desktop clients. And the break from Silverlight to HTML5 is ever so apparent…we must embrace JavaScript and HTML5

As technology and client demands changes, I will be taking a lessor role in Qt and focusing my career transition to web dev. I have started out with ASP.net Web Forms and MVC 4 JSON and jQuery for starters. There is a lot to learn and this is a huge change in direction for my career, but is needed given the change in dynamics for consulting. In the end the web is the most interesting and hottest areas of technology to be working in. I hope my expertise in all will be a tremendous benefit to the clients I work with in the future.

HAML

I just had an opportunity tonight to attend a presentation on web development about using HAML to write better HTML.
I was quite impressed and in the future plan to write a post about what I learned.

Chicago Hackathon

I will be competing this Sat and Sun at the thatConference Chicago Hackathon conference being held in downtown Chicago at TechNexus 200 S Wacker Drive.

The Centare Chicago team will have at it in creating an app for a mobile target on this upcoming weekend. The Centare team is hard at work ready to compete. Let the hacking planning and app creation begin …

Chicago Code Camp

Chicago Code Camp had a great turn out this past Saturday and I had an opportunity share Qt and Qyoto with the fellow developers who had attended my presentation on Building Cross-Platform Apps with Qt and Qyoto.

As promised I have attached the slide from the presentation.

Getting Qyoto set up on your Linux Box

Getting setup on Linux: (Ubuntu)

Step 1: Ensure g++  compiler is installed on your computer.
If not sure, open a terminal and try g++. If command isn’t found, you need to get it.
simply sudo apt-get install  g++

Next get cmake: (Used version 2.8)
sudo apt-get install cmake

Step 3: Get Mono and MonoDevelop installed

sudo apt-get install monocomplete

sudo apt-get install monodevelop

Step 4: Download and install the QScintella library for Linux.
You will need to untar this and follow the install structures. I had to compile the source code to be able to create the libs. Instructions for compiling and installing are included in the download. http://www.riverbankcomputing.co.uk/static/Docs/QScintilla2/index.html

Step 5: Pick up the phonon libraries.

sudo apt-get install phonon

Ref: http://phonon.kde.org/
Step 6: Install Qt if not already installed This can be downloaded directly from Qt Website.

Step 7: Install the qtsmoke-dev lib

sudo apt-get install qtsmoke-dev

Step 8: Install qyoto

git qyoto
cmake CMakeLists
make
sudo make install
ldconfig

Step 9

Open up MonoDevelop and reference the qyoto libs in your C# project.

Step 10: Hack: J

Reference Link:  http://zetcode.com/tutorials/qyotosharptutorial/introduction/