free html hit counter
Posted on: Friday, 27 November 2009 by Rajiv Popat

At work; as a labs project; Kaushik Das; who is one of our seriously talented developers has been working on studying the SQL Server Schema --- just for the fun of it. To turn this learning into practical implementation instead of just theory; we decided; to build a web based administration console which users can use manage SQL server instances that they have access to using a web based administration console. This; is how eFORCE SQL DB Administrator was born.

Put simply; the first version of SQLDBAdmin by Kaushik; in it's scope and basic philosophy is pretty much like any other web based administration console for SQL server; one common example being - Microsoft Web Data Administrator.

We do realize that this problem has been solved multiple times before; and we also realize that as of today SQL DB Admin happens to be a 'me too' product; but what we believe makes SQL DB Admin worth giving a try are the following facts:

  1. Looks and feels just like the SQL Server 2005 Database Management Studio - so there is very little learning-through-fiddling that needs to be done. 
  2. It is free and open source; which means you can not just download it but actually modify the source code for your implementations if needed.
  3. We will be working really hard to add new features to SQL DB Admin which might make it easy to do day-to-day administration tasks. Some examples include: scheduling a database backup, compressing a database, re-indexing a table. etc.

As of today you can grab a copy of the SQL DB Admin code base by visiting its codeplex site.

As a matter of fact; this is one of those projects that we just started for 'fun' and now that we have something that works; we are seriously looking at adding new features that give you; dear reader; reasons to download it and use it while comparing it with multiple other web based SQL server administrators that are out there.

If you; dear reader; have a task or a feature in mind that you or your database-administrators do regularly on SQL server administration front and you would like to perform the same tasks through a web based console; let us know about the feature and we will try out best to squeeze those features into the road map for SQL DB Administrator.

In the meantime; if you want to grab a copy of the latest code base and start using it in it's current beta stage; you can get a copy from the SQL DB Admin codeplex website.

We genuinely and sincerely hope that this product; makes your life; as a database administrator; developer or anyone who has to manage multiple remote databases behind the firewall; just a little more easier. We will continue to add new features to SQL DB administrator and then blog about those features when we add them into the product.

Wish us luck.

More open source goodness coming soon.

Stay tuned.

posted on Friday, 27 November 2009 20:44:36 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Thursday, 06 August 2009 by Rajiv Popat

A few months ago; we announced open sourcing of Crux; an application development framework and a lightweight workflow engine rolled into one; build on the .NET platform. If you want to know more about Crux; you can read more about it here.

Since it's birth and since we posted the initial code base that we wrote; the Crux development team has been putting in quite a bit of effort to roll out some fairly interesting features.

Here's a list of some features that you can try out today by grabbing a zip of the latest copy of the code base:

Application Injection

Crux is supposed to give you the basic framework to build applications on top of. A basic virgin deployment of Crux pretty much looks like this:

With Application injection; we make it easy for you to extend Crux without having to modify it's core or without having to modify the crux-code-base. By uploading one folder with custom ASP.NET pages and a single configuration file; you can extend Crux and inject your own application into it. If your application contains multiple modules or navigation items each one of them show up on crux as soon as your application in injected into Crux.

How this is different from multiple Portal frameworks out there is that while you inject Portlets into your portal; with Crux you will be able to upload full blown applications built using standard ASP.NET.

Currently you can inject just one application per Crux instance but we are working on features which will allow you to inject multiple application on Crux instance. We are also working on making Visual Studio Templates which will allow you to click File / New / Project / Crux Application - using Visual Studio - and start writing code for your custom application.

The idea of application injection is critical to the adoption and growth of Crux because we have multiple teams within eFORCE using Crux for their projects now and we want to allow them to upgrade the underlying version of Crux without impacting their own application.

The idea of application injection into Crux also becomes important because one of our ultimate goals is that developers outside of eFORCE should be able to build Crux applications; package them; share them with the rest of the community or even sell them if they want to.

We will be working on packaging this feature and will be giving you features to upload zipped installations of Crux-Applications into Crux using a web based user-interface which the Super-Administrator can use to upload Crux-Applications in later releases of Crux.

Extendable Dashboard

While the ability to inject applications into Crux is fine-and-dandy there are times when our project teams using Crux want an ability to extend existing crux screens (we call them dashboards). Here is what a typical dashboard looks like:

With crux you now have the ability to extend these dashboards and map them to parts of your injected application without touching the crux-code base. The application that you inject can contain configuration which allows it to add items to and extend the existing dashboards inside crux:

The same feature also allows you to create completely new dashboards inside of Crux without writing any code.

Other Features

Additional features we have added include Internationalization and the ability to create and manage your own roles instead of being satisfied with what Crux gives you. These came in as patches which have been reviewed; slightly modified and applied into the Crux code-base.

Crux has already seen multiple successful implementations at eFORCE.

The development cycles are fairly fast and we are adding new features.

We have not yet tagged Crux as 'version 1.0' and are going to be leaving it in pre-beta stage for a few more weeks; but we would encourage you; dear reader; to go grab the latest copy of the code base; play with it and send us feedback.

More features; posts and training videos on Crux will be rolled out as we move forward.

We will also be announcing more open source goodness around crux soon --- stay tuned.

posted on Thursday, 06 August 2009 22:29:46 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Friday, 26 June 2009 by Rajiv Popat

Free And Open Source Field Level Database Encryption For SQL Server 2005 and Later.

At work we design and build financial applications. When you are in the business of building financial or banking applications your database will contain sensitive information including account numbers and accounting information that you want to protect obsessively.

Multiple layers of security becomes important in cases like these.

The first layer of-course is the SQL server built-in permissions and security.

At a second level you want to lock out everyone's access on the production servers so that they cannot grab the data-files or access the database directly.

The third  layer is encrypting certain pieces of information at the field level and encrypting sensitive fields so data inside the database cannot be read by anyone even if he has direct access to the database --- this includes even the database administrators and the support staff who will be managing database servers.

Making your life simple with adding this third layer of security is exactly what SQLDBCrypt does.

SQLDBCrypt is an in-house SQL Server 2005 based encryption engine that we developed as a side hobby project.

Put simply; at a basic level SQLDBCrypt does exactly what commercial products like XPCrypt do; except that SQLDBCrypt is free and open source.

We have been using this product to encrypt and decrypt sensitive data that goes in an out of our applications for over a year and are very happy with the results.

The story behind SQLDBCrypt was somewhat on the lines of 'an idea conceived and implemented by a single builder'.

Abhijit Ghosh; who gives you a very sinister smile when you ask him if he has a blog or a web presence; is a very capable DBA and a programmer rolled into one; who works on my team at work.

Sometime a couple of years ago he conceived the idea and decided that he wanted to take this project up as his official assignment.

Early on in the project; we decided to give him time to do get a prototype done; get him everything he needs, wish him luck and get out of his way.

A few weeks later we were playing with a working prototype using which; we were able to get it adapted inside of eFORCE as a formal product with a formal testing and development team that would move the product forward and use it in some of flagship products.

Within a few more weeks we had a working version which was fully tested and which was being used in some of our financial applications.

We have been using SQLDBCrypt internally since then.

When you work in flat organizations where even the top most management understands software development; decisions of this sort are often done without any meetings or any committees. After more than one year of usage in production environment we at eFORCE recently discussed the idea of taking SQLDBCrypt to open source and were able to get a green signal literally in less than three days. No long-winded discussions; no meetings and no committees.

We moved the code base on CodePlex for you to try it out and give us your feedback; dear reader.

If SQLDBCrypt interests you; we suggest you start by visiting the Product Home Page on CodePlex

We're licensing this code under the New BDS license which allows you to use this product even in commercial projects without any of the typical restrictions that you get in commercial products and other open source licenses.

The source code for the project is available live; so if you really want to review the security aspects of the code and send in your suggestions; you can totally do that.

The project started as a fun project and slowly matured into something which was reliable and something we could use in our own product stack. We clearly did not have any intentions of competing with commercial database encryption companies out there but when we were done we did some basic benchmarking of the product with other commercial products like XPCrypt and in cases of huge data sets found SQLDBCrypt to be around ten times faster.

While we are talking about comparisons it might also make sense to talk about limitations of SQLDBCrypt while comparing it with other products out there.

While most commercial products like XPCrypt support multiple encryption algorithms we are starting with support for MD5 for hashing and RC4 (128 bit) for encryption.

We will be releasing support for other algorithms moving forward and are expecting community contributions for adding support for additional algorithms moving forward.

To add to that; while commercial versions of products like XPCrypt work on older versions of SQL Server; SQLDBCrypt uses SQL CLR and requires SQL Server 2005 or later.

Currently we are keeping the team size really small but going forward we will be adding team members as and when required.

We will be doing a formal series of benchmarking tests, posts and examples of how you can use the product going forward; but if you have a need for this product we would encourage you to try it out; beat it up; bench-mark it yourself and let us know your comments and feedback.

We are calling the current version a beta release for the next few days till we reach decent packaging and add all the bells and whistles of a formal product to it. Having said that; we really want you to download this version; play around with it. See if it meets you needs; if it does go ahead and use it in your projects. Feel free to let us know your thoughts, ideas or any bugs you encounter while playing around with this product at the Project Task List on CodePlex.

If you would like to start added discussions around the product or any of it's features feel free to use the product's discussion board at CodePlex.

If you like the product; and the fact that we have decided to release it as a free and open source component; go spread the word. Tell your friends; blog and tweet about it.

If you do not like the product; please do tell us why and where you think we can improve the product.

We love the idea of supporting whatever it is that we write and would love to take in suggestions on changes or features which can improve the product.

As much as I would like to recommend this product highly to everyone; the fact of life is that it addresses a very specific problem and if you do not have the need; the product in all it's glory is not going to make any sense to you.

If you are building a Library tracking system; this product is clearly something you do not want to waste your time investigating.

On the other hand is you are building a system which is going to store information worth protecting obsessively; examples being; banking applications; finance applications; or anything that stores sensitive information like account numbers; credit card information etc; --- go give this application a try before you go and buy some of the commercial products out there.

Do let us know your comparative analysis and what you think.

More announcements and open source goodness coming soon.

Stay tuned.

posted on Friday, 26 June 2009 21:50:21 UTC by Rajiv Popat  #    Comments [1] Trackback
Posted on: Monday, 02 March 2009 by Rajiv Popat

Living by my philosophy of putting myself dangerously close to getting fired; sometime late last year; I ended up taking the task of working as a single programmer on a product which had been estimated to require five programmers.

Put simply, it was an 'inventory tracking system' for one of our clients involving complex workflows. Besides having client specific requirements the part of the product that we at eFORCE owned consisted of modules which could serve as building blocks for quite a few other typical web applications.

Because it consisted of the fundamental building blocks that any web application might need, we decided to call it Crux.

When we had implemented the project using the core of the product, ended we played around with the idea of open sourcing the code base of  the base framework. We did this primarily because we believed that what we had; might be able to help other developers and organizations around the world get jump started with their web-application. 

If you've worked in a typical software development shop and have ever tried to get a piece of code for one of their products,  you are working on, to be open-sourced, because you believe it will 'help the world', you probably know the reaction. It's like dropping a dead rat on the conference table in the meeting room.

Your managers and executives will probably look at you like you're an alien with a third eye when you utter the words - 'open source' and the product name that you built for them in the same sentence.

That is exactly where working in an organization that's not a 'typical software development shop' and genuinely values in innovation and collaboration helps.

When we started talking about open sourcing Crux, I was pleasantly surprised at the level of support and understanding I received from everyone whose approval I needed to get this thing out to you, dear reader.

We got this thing open-sourced, froze on the New BSD license which gives you complete freedom to use the code for commercial purposes without any restrictions. We got our very talented graphic designer to work on the skin for the open source version. We had a couple of rounds of code review done by a couple of fellow programmers and were able to get a build rolled out to you, dear reader, in virtually no time with zero meetings and zero committees

We've just finished publishing Crux on CodePlex. It's a fully functional release ready sprint but we're going to start by calling it Pre-Beta; primarily because we would like to take some more feedback from you, dear reader. During this time we would like to have room to maneuver for relatively major changes to the database and the code-base if needed.

Crux by it's very nature is composed of multiple pieces which allows you to jump start with your Web-application using it as a foundation. Alternately, you can take individual modules or DLLs out of the Crux implementation and decide to use them individually. This post describes some of those components. Going ahead I will be working on more posts and videos on each of these individual components.

A multi-tenant authentication piece

Crux authentication, unlike ASP.NET membership supports multi-tenancy and allows drawing boundaries between multiple companies which can be hosted and authentication by the same instance of the application. 

A light weight workflow engine

Windows Workflow Foundation is great; and I've myself used it in areas requiring some complex workflows; having said that, I think it's not for a typical simple web application needing basic long running workflows with human intervention. We needed something really light weight which allows us to do simple configurable long running workflows which require human intervention e.g. approval or rejection at every step, very easily without going to a huge learning curve.

Other Pieces A Typical Web Application Needs

We have a Model View Presenter Implementation, a centralized logging piece, a centralized exception handling piece etc. These are pieces we believe all good web applications should have.

We also have a fully functional administration module with a user interface which allows you to create users, assign users to companies, departments, roles etc. Things we believe most web applications end up building with or without membership controls.

Extending the behavior or injecting different behaviors into this administration piece depending on your needs and requirements is also fairly simple. 

Going forward I will be doing a series of posts on how you can use Crux to jump start your projects and applications and we at eFORCE will also be coming out with its official website soon.

I'm also planning on using Crux as a base code base for my code related posts in future so that I can learn how to code better and share my experiences with you dear reader, using an alive codebase rather than lame examples. This blog now has a separate category for Crux related posts which you might want to follow if you are interested in the development of this framework.

The Technology Stack

Crux is built using .NET 3.5, LINQ to SQL and SQL Server 2005 or SQL Express 2005.

Ways To Participate

If you're going to be working on a typical ASP.NET web application that requires multi-tenancy, building an administration piece and involve simple manual workflows I suggest giving Crux a quick test-drive before you start hand-coding these pieces yourself.

We at eFORCE, are also working on getting a team of very talented programmers and one graphic designer, to work on this project during their free time so that you can continue to get upgrades and more features in future.

Feel free to download the code from the CodePlex-svn, play around with it and if you come across bugs, feel free to file them on the project issue tracker. Feel free to file in feature requests, any problems you might be facing with the code base on the project issue tracker as well.

Feel free to email me if you would like to participate or contribute in Crux development and make a very small dent in an unimaginably big universe.

Special thanks to the following folks in the Crux team, in no particular order, for their time, efforts and contributions: Anshuman Srivastava, Esha Patra and Amit Ghosh. Thanks to Sujith Nair and everyone else at eFORCE who has been a part of  the open sourcing decision for Crux. 

More applications, tools and frameworks to come out soon.

Stay tuned for more open source goodness.

posted on Monday, 02 March 2009 17:42:05 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Saturday, 23 February 2008 by Rajiv Popat

For quite a bit of time I haven’t been talking about TacticSheet. For those of you who do not know or have forgotten TacticSheet, allow me to begin this post by refreshing your memory. TacticSheet is a free open source Timesheet entry system which we’ve been building using Visual Studio 2008, C# 3.0 and LINQ to SQL. For more information on TacticSheet, how you can download it, try it out, participate or contribute in it's development visit this URL.

We’ve been moving slower than expected in TacticSheet because:

  1. My day time job has been keeping me busy where I’m working on getting a lot of goodness we have on the banking side released as a service for free.
  2. We’ve been busy hiring; which means lots of interviews and lots of thought provoking discussions with candidates which is just helping me realize how weird our industry is becoming. This of-course has been translating and resonating into some of my posts lately. :)
  3. Visual Studio 2008 RTM introduced a couple of minor breaking changes to TacticSheet which was originally started on Beta 2.0 of Visual Studio 2008.

Excuses aside, we’ve got back to work, slow and steady and will continue to push new features into TacticSheet and make it more and more stable and usable.

Here’s what was checked into the Source Forge SVN a few days ago:

Changes to Allow TacticSheet to build and Run on Visual Studio 2008 RTM

We started TacticSheet with Visual Studio 2008 Beta 2. Most breaking changes we encountered were in the LINQ to SQL side. As promised, TacticSheet now builds and runs on Visual Studio 2008 RTM version.

A Brand New UI

I’m no graphic specialist; having said that I’m pretty proud of my Photoshop skills. I’ve also advised programmers to learn and pickup a little bit of UI designing. This check-in of TacticSheet introduces a light, crisp and slightly more professional UI than the pinkish UI we started off with. We hope you enjoy using it.

Clear Distinction between Advanced Allocations and Simple Allocations

In TacticSheet there are two ways to allocate an employee to a project. The allocation can be a simple allocation which basically means that you want the employee to be associated with the project for the entire life span of the project. For advanced allocation you only want him to work on the project for a given date range.

The previous check-ins of TacticSheet we picked up the start date and the end date of the project and used those to determine the duration for which the employee can work on the project even in case of simple allocation. As simple as the approach was, it was leading to problems when you want to extend the duration of the project after the allocation has already happened.  

In this version we explicitly tag a simple allocation as a simple allocation. Which means a simple allocation has no start date and end date associated with it and auto extends as life / duration of the project extends.

Tons of Bug Fixing and Validations

We’re not yet as stable as I would want TacticSheet to be. I would encourage everyone to play around with it and file bugs if you find them. Our firm belief that good software is never complete drove us to keep testing TacticSheet like Crazy, fix bugs and add more and more validations.

If you’re playing around with TacticSheet or towing with the idea of using it when it goes to the Release stage be rest assured that we would love to be involved with and fix Tactic-Sheet issues as and when they found. The whole point of releasing TacticSheet is to be able to support what we build and this check-in was one more step in that direction.

We’re Far from Done

During this time when I went silent on TacticSheet multiple people (much more than I had expected) asked, buzzed or emailed wondering if TacticSheet was dead. Far From Dead; it’s alive, breathing and taking baby steps at growing.

For all those who have subscribed to our mailing list and offered help in form of participation, thank you so much for your continued help and support. We really look forward to more of it!

Continue to watch out for new features, more stability, better UI in the coming weeks.

With the release of Microsoft MVC framework we've also been evaluating and considering the use of the framework in TacticSheet but that would mean moving some bigger pieces around and a lot of playing around with the framework before we take the plunge.

I'll be writing a series of posts which will describe my evaluation of Microsoft MVC framework as I play with it and try and try and use it to address some real life problems TacticSheet needs to address.  The posts will be focused on describing what's going on in my head as I decide whether TacticSheet adapts this technology or continues on it's current custom MVP plus Ajax based implementation. Expect additional posts on these in the near future.

Stay tuned for more features, interesting technologies and more open source goodness. :)

posted on Saturday, 23 February 2008 17:46:00 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Sunday, 25 November 2007 by Rajiv Popat

For those of you who still don’t know what TacticSheet is – TacticSheet is a Free and Open Source Timesheet and Expense Tracking system. If you want more information about TacticSheet you can click here.

I've been busy at work for the last couple of weeks. I've also been traveling for a couple of days last week primarily for work but none the less, we’ve been putting in quite a bit of time every weekend on TacticSheet. I'm happy to say that TacticSheet is slowly and steadily starting to shape up decently well.  For the last two weeks we were a little slow at adding new features but we've been taking one step at a time and making sure we don't burn out in the long marathon ahead.

Here are some new features that have been rolled out based on the work we did last weekend and this weekend:

Introduction of 'Clients'

TacticSheet now allows you to add your clients to the system. Once you’ve done this, while adding a project TacticSheet will let you group and create project under a given client. In the long run this is supposed to allow us to answer multiple questions. For Example:

  1. How many clients does my organization have?
  2. How many projects are under each client?
  3. How many employees are dedicatedly working for a client?
  4. How many man-hours has the organization put in behind one client and their multiple projects?

Adding the concept of allowing you to add clients in the system and then group projects under each client opens up a host of possibilities for TacticSheet in the future. We're also hoping that it would help integrate with accounting and billing systems in the long run.

Introduction of 'Tasks'

For a day job, to earn my daily bread and butter, I work at an awesome software shop. We estimate each task for a project that we work on. Then we let folks take ownership of the task and work on the task. Once the tasks complete we go ahead and compare the estimated time with the Actual Time taken and this comparison allows us to get better at our future estimations.

Now TacticSheet allows you to store tasks under each project and allows employees to file their time against a task instead of a project.

This is supposed to open up new dimensions for TacticSheet once we move into reporting. Having this data in place will allow TacticSheet to answer questions like:

  1. How many employees worked on a given task?
  2. How many man-hours of work went into a given task?
  3. Which task in the project took the maximum amount of effort to complete?

Percentage Allocation and Percentage Criticality Captured During Allocation

In the last check-in we added the ability for enhanced employee allocation to projects into TacticSheet. In this check-in we also allow you to capture additional facts about the allocation:

  1. Percentage Allocation of the Employee – In a lot of organizations I’ve seen employees being allocated to more than one project at a given time. Now in TacticSheet, while allocating an employee to a project you can not only choose the time-line for which he will be allocated to the project but you will also be allowed to pick the percentage of his time you typically want him to give against the project.
  2. Percentage Criticality of the Employee – In a lot of organizations I’ve seen employees being assigned to a project to complete ad-hoc tasks. At times I’ve also seen employees being assigned to a project because they’re on the bench and having nothing else to do :) – Now in TacticSheet, while assigning an employee to the project for a given duration you can also choose the criticality of the employee to the project. A high criticality indicates that moving the employee out of the project might considerably impact the project and a low criticality indicates that the person can be moved to another project if he is really needed in a different project. In other words, a low criticality indicates that the employee is not critical in the project and moving him from the current project will have no or very little impact on the current project.

Minor Bug Fixes

An issue with TacticSheet with multiple connection strings being used by TacticSheet was reported in this thread of our mailing technology mailing list. We’ve gone ahead and fixed it.

What’s next?

More Features - good software is never complete and we’ve hardly started yet. More features, posts and goodness coming up! Stay tuned!

posted on Sunday, 25 November 2007 17:15:40 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Monday, 05 November 2007 by Rajiv Popat

If you are interested in a free open source Timesheet and Expense-sheet tracking system built on C# 3.0, .NET 3.5, LINQ and Orcas Beta 2, you should checkout TacticSheet. A couple of weeks we announced a development version of TacticSheet live. You can read that announcement and learn more about TacticSheet here. We also published our First New Features Announcement Last Week and announced a couple of new features which are expected to add a lot of power to TacticSheet when we move to our first release.

If you're a .NET developer you could go grab a copy of the latest TacticSheet code from TacticSheet Source Forge SVN and start playing around with it. You can also go ahead and join our General Mailing List or the TacticSheet Technology Mailing List.

A lot of new ideas have started coming. I’m bubbling with ideas myself and new ideas are also being thrown at me by folks who are interested in using TacticSheet when it reaches a release ready stage. We’re taking one step at a time and adding a few new features every weekend. Here’s what we’ve added to TacticSheet this weekend:

Enhanced Resource Allocation while Creating Projects

While allocating employees to Project it was natural for me to provide a Move-List in the Edit Project / Project Creation screen so that you would be able to allocate employees to project:

At the first glance the idea seemed good enough for the basic project allocation requirement that we had and made a lot of sense. You could allocate employees to a project and they would work on the project till the project ended. If you wanted to stop employees from filing Timesheets pertaining to that project you could remove them from the project team.

Apparently, it looks like people who have been using commercial timesheets for a long time feel that this is the biggest pain-point of some of the commercial timesheet entry systems.

A commercial timesheet entry system I looked at while playing around with the idea of writing TacticSheet seem to be doing exactly the same thing I did initially with TacticSheet, which is to allow you to either assign employee(s) to a project or unassigned employee(s) from a project.

Last week someone who saw TacticSheet and had used a couple of other timesheet entry was very helpful in giving feedback. He brought it to our notice that In reality, organizations tend to be much more dynamic. Here are some scenarios where the basic assumption that if employees are assigned to a project, they will work on the project during the entire span of that project, creates a nightmare for the administrators:

  1. An Employee will need to work on the project just for the first three months of the project.
  2. An Employee will need to join the project three months after the project started and will work only for two more months after which he will need to be moved from that project into another project.
  3. An employee will be allocated to a project and will work for two weeks in that project. Then he will be moved out of the project and will be needed again for two weeks, three months later.

A couple of commercial Timesheet entry systems I saw while playing around with the idea of building TacticSheet just allow you to either add employee(s) to a project or remove employee(s) from a project when they are no longer needed. Which means in case of the above scenarios administrators would find themselves manually remembering (or relying on emails sent by Project Managers) to add and remove resources from a given project.

One of our goals while creating TacticSheet was also to provide a Timesheet System with the Infrastructure that will allow folks integrate TacticSheet with external systems and consume the Timesheet data from multiple other systems.

When I think of a full blown Resource Management System talking to TacticSheet, the whole idea of adding resources to a project for the entire course of the project and not letting the administrator choose for how long an employee would work on a project, sounds fundamentally wrong.

This weekend we ended up addressing this issue and we seem to have solved it rather elegantly.

TacticSheet now offers a separate Project Allocation screen. This screen allows you to add an employee to a project which is what most commercial timesheet entry systems also allow you to do.

The same screen also offers an advanced allocation option - which allows you to pick the exact dates or range of dates for which the employee will be involved with the project. You can add the sample employee to the project multiple times by choosing different start dates and end dates as long as these start dates and end dates don’t overlap for the same employee.

The screen allows you to address all three scenarios I described above using TacticSheet.

The same feature is also going to allow us to give you a lot of other additional kick-ass features in the future. For example, storing this data will allow TacticSheet to look into the future and see how many guys are really busy and for what time durations. Having this data there opens up a new dimension of reporting for us and will let us do some awesome reports primarily on the Resource allocation side in the future.

More features, goodness and posts coming up in the future. We have barely started, and are far from done. Stay tuned for more!

posted on Monday, 05 November 2007 17:39:48 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Wednesday, 31 October 2007 by Rajiv Popat

A few days ago we completed building the basic framework of TacticSheet, uploaded a development sprint of TacticSheet and announced it live. TacticSheet is an Open Source Timesheet and ExpenseSheet System built on .NET 3.5, C# 3.0, LINQ and Oracas Beta 2. If you haven’t heard of TacticSheet or want to learn more about it, click here.

This weekend I worked on a couple of other enhancements to make this product much more usable in the long run. Some of the features completed this weekend include:

 

Support for Timesheet Audit Trails

Respecting the iron triangle plays a vital role in any software project. But when you are only giving time to a project only during free time, weekends and holidays this prioritizing becomes vital. Audit trails for timesheets was on my mind when I played around with the basic idea of building TacticSheet. Dropping it out of the first sprint I uploaded on source-forge, was purely a matter of respecting the iron triangle and realizing that I lacked time.

I found some time this weekend and this was one of the important features that I really wanted TacticSheet to have - So obviously it made it into TacticSheet. Today, you can see audit trails at timesheet level right on the same screen where you are filing your time using TacticSheet. We decided to draw inspiration from most commercial time-sheet entry systems out there and call our timesheet based audit trails "Timesheet History".

For audit-trail purposes we also go ahead and catch data at each timesheet line item level, but these audit trails are not shown anywhere on the TacticSheet screens because we don’t see these adding a lot of value for most organizations. Given the stage where TacticSheet stands today, we need to focus on other important features before we get carried away with making audit trails better.

We still store the trails on a line item level and keep them there because we want TacticSheet to adhere to general auditing principal - delete nothing. In future, as the application grows, this is expected to allow us to provide screens which will provide detailed audit trails and deeper insight into what happens inside each timesheet every time it changes state.

Our Database is Now Scripted and under SVN

We’ve gone ahead and brought out database under SVN by scripting it out to a proper database project. Now you can have the database created by running a command file located under the database project which is included in the code base.

Running this single command file will have TacticSheet create the database schema and all sample data needed to get the application up and running. Once the file runs successfully, change your web.config connection-string to the right database. Once done, you can launch TacticSheet and login using default credentials (username: admin password: admin).

Setting up the development environment of TacticSheet is now stupid simple! So there’s no reason why you shouldn’t try it out. Go ahead, grab the latest copy of the code from our SVN and give it a dry run. Drop me an email and let me know what you think.

Employees should not be able to Un-submit Approved Timesheets

After I announced TacticSheet live I received a few emails from folks encouraging me, congratulating me and wishing me good luck. I also got a couple of feedbacks from guys who are not into .NET, but work with a lot with timesheets. Some of these feedbacks were fairly valuable. For example, one of the observation that was made was:

“Employees should not be allowed to un-submit timesheets which have already been approved”

I looked at this one with a little bit of skepticism. So if an employee makes a mistake, how does he fix it? After a little bit of communication back and forth the person who had requested the feature explained:

  1. A normal user is allowed to un-submit timesheets which have been submitted by him till they are approved.
  2. Once approved, the user should not be allowed to un-submit the approved timesheets.
  3. The administrators however, can un-submit even approved timesheets on behalf of the user so that the user can go ahead and fix his mistakes.
  4. Once un-submitted by an administrator, the user will need to re-file that timesheet and the timesheet will have to go through approval process all over again.
  5. No approved timesheets can be deleted. Not even by the administrator. Administrators can un-submit the timesheet which have been approved.
  6. Once un-submitted the timesheet can then be deleted by the employee himself.
  7. All of this is audit trailed so there is no confusion.

In general the above rules made a lot of sense and are now a part of TacticSheet.

We have more features, goodness and posts coming up! Stay Tuned!

To stay informed about TacticSheet new features you can sign-up to the TacticSheet Mailing List. If you are an enthusiastic .NET developer and want to stay informed about the technical changes we’re making to TacticSheet signup for the Developer Mailing List. We have barely started, and are far from done. Stay tuned for more!

posted on Wednesday, 31 October 2007 10:36:17 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Thursday, 25 October 2007 by Rajiv Popat

Last couple of weekends, I started work on an Open Source Timesheet Entry System using .NET 3.5, C# 3.0 and ASP.NET, which, for no particular reason, was named TacticSheet.

In the coming months (depending on the number of free weekends I get :)) TacticSheet will have its own domain domain name, a full blown website and a steady open source life cycle but for now that I seemed to have reached a logical point where I can at-least see the basic functionality of the application taking shape. I could hardly resist the temptation of sharing TacticSheet with fellow developers and my blog readers.

If you care, here’s a quick FAQ of TacticSheet (or a list of few questions that might be going through your head right now as you read this :)):

What is TacticSheet?

It’s a Free and Open Source Timesheet Entry System which in the long run is supposed to provide the the ability to do Timesheets and Expense-sheets within an enterprise.

Can I Use TacticSheet in My Organization Today?

No. It’s far from being production ready yet. It has the basic framework which will allow people to file timesheets and project managers and line managers to approve or reject timesheets. As of Today TacticSheet is not fully stable, not fully tested and may have a lot of breaking changes in the next months as it moves towards a Release 1. Some of the very important features that most organizations would need e.g. Audit trails, email notifications etc. are currently missing. To make things worse, even our database isn’t scripted yet. :)

In the coming couple of months we’ll be working to get these issues ironed out so that you can start using TacticSheet in your organization and upgrade safely to a new version every time a new version comes out. Till then, feel free to play around with TacticSheet Development builds, but please don’t deploy them to production environments.

If it’s not fully ready why are you announcing it live?

Because good software is never complete. :) On a serious note, I’m interested in getting some feedback and contributions from the community, fellow developers and above all - you dear reader! Go to our Source-Forge Home Page, grab the source code from our SVN (or Browse our online SVN), try it out, drop a comment or email and let me know what you think about the application!

We don’t have a lot of documentation on setting up the development environment but we're hoping most folks will find it very straight forward. If you want help setting it up, please drop question(s) in the Product Forum and we’ll be happy to answer them.

If you think you’ve found a bug, please file it here.

Feel like contributing? Read on!

How Can I Contribute?

We’re looking for a few one-man-armies who are thick skinned developers and people who are into shipping good software (not just writing documents and following crazy process!). We really think the world could use one more Timesheet entry system built on .NET, especially if it’s free and open source! Do you?

Besides kick ass developers, we are also looking for UI folks and people who can test the application inside out! Interested?

If you fall in any of the above categories, are fortunate enough to find some free time during weekends and crazy enough to write code during that free time, Email me using the “mail” icon on the left panel of this page and we can discuss how you can contribute.

You can also contribute by Submitting SVN Patches, filing bugs or just participating in the forums.

What’s the Technology Stack?

We’re starting out with .NET 3.5 and Beta 2 Release of Orcas. Of course whenever Orcas RTMs, (end of this year / next year), we will be working to ensure that TacticSheet migrates over to and works with the RTM version. For the enthusiastic and passionate .NET developers here’s the technology stack TacticSheet uses:

  1. Orcas Beta 2.
  2. .NET 3.5.
  3. C# 3.0.
  4. LINQ to SQL.
  5. XLINQ.
  6. ASP.NET Ajax and ASP.NET Ajax Toolkit.
  7. SQL Server 2005. (But there’s no Reason why you couldn’t make TacticSheet work in SQL Express!)

How Can I Stay Informed about the Project?

We have 2 different mailing lists – depending on the kind of involvement you want to have to the kind of information you want to stay updated with feel free to join any one of our mailing lists.

  1. The General TacticSheet Mailing group – Users who are interested in staying informed about the new features of TacticSheet can sign up for this mailing group.
  2. The TacticSheet Technology Mailing Group – We will be discussing most new technologies we use in TacticSheet here whenever we decide to use a new technology. We will also be discussing the design and technical changes that TacticSheet undergoes in the future in this mailing group.

When will TacticSheet Development Complete?

As of now, I don’t think I’ll ever be ‘done’ with this project, which is the whole point! I’m a firm believer of supporting everything I write. I intend on extending and supporting TacticSheet for years to come. Watch out for a lot of new features and version, year after year!

Why are we writing TacticSheet?

This calls for a long post, but for now let’s just say - Because, we can. (You can expect another detailed post on this topic in the near future :))

What’s the TacticSheet License?

The product is currently under GPL. Also, we do not allow or encourage forks of TacticSheet for the time being. I personally feel that the product is too premature for now and forking will add to confusion. As the product grows we plan on moving to a much more liberal license like FreeBSD.

Even though the license is strictly GPL we are fairly liberal towards the use of TacticSheet – it’s primarily written for a hobby and not with an intent of making money – so if you want to do something crazy with the code-base please email me and we’ll see to it that you can do whatever you are trying to do without being charged or sued :).

So, now that TacticSheet has finally been born, wish us luck and growth! Stay tuned for more posts, features and goodness.

posted on Thursday, 25 October 2007 18:30:46 UTC by Rajiv Popat  #    Comments [4] Trackback