Dashboard – Vacation

Posted on by jjacob

Here’s a quick illustration of what can make happen when you tie together various systems into a meaningful application.

We don’t have a fancy HR system so most people have to keep track of their vacation days themselves. When I first started digging into creating a dashboard I took a stab at using systems already in place to do the manual work of this. We have a time tracking system so we know when you already took a vacation. And, we have a resource planning system to know when you plan to take your next vacation. This was a good start.

The “glue” of the dashboard consisted of the following:

  • The “principal map” that tied together the user’s accounts in the various systems. Access to the dashboard is controlled by Active Directory which is the anchor system. The time tracking and resource planning accounts are tied to the AD account.
  • A place for the user to enter total vacation days. Our time tracking system doesn’t keep track of this so the dashboard has an expanded profile of the user that keeps track of total vacation days along with the complete principal map.
  • Also added in was some basic logic about planned vacation days past the current date and planned days vs. days already in the time tracking system.

The result was a clean and simple display of vacation information for all employees:

Charting and table display is done with the ZK Java/AJAX framework. More on that later.


Posted in Dashboard | Tagged

Dashboard – Overview

Posted on by jjacob

Although my place of employment has been around for a long time it’s an organically grown company. I started 14 years ago as a developer when the place was a video production company and the number of employees was in the single digits, now we’re just shy of triple digits with most of those people in interactive production. Slow and steady growth through various ups and downs in the online/interactive industry. With that organic growth came a suite of business tools that grew organically. Finding a way to connect those various tools was a side project I started a couple years ago.

The majority of our financial backend is on a system called Clients & Profits. It’s a time/billing/accounting package grown out of the advertising world and we’ve used it for over a decade. The first version we used ran on a proprietary file-based database. Getting data in and out of the system was near impossible. An upgrade to a SQL Server version allowed us to dig into the data and pull out bits we needed. My original queries for pulling out time tracking information grew into a web application for everyone in the company to use for custom reports not available in the Clients & Profits front end, and more importantly, seeing that data alongside other sources data.

Where the dashboard stands today is a far reaching web application employees can use on a daily basis with these major features and integrations:

  • Microsoft Active Directory – web app security using domain credentials and directory information (phone numbers, extensions, etc) display.
  • Clients & Profits – access to complete historical cost and time entry data for all clients and projects.
  • Atlassian Jira – access to bug tracking system showing open tickets per employee.
  • Microsoft Exchange – display of personal calendar per employee as well as calendars for conference rooms and other common calendars.
  • Taskjuggler – import of company resource plans and vacation schedules.

My one sentence description to new employees is: it’s where we’ve been (Clients & Profits job data), where we’re going (Taskjuggler resource plans) and what gets in our way (meetings in Exchange and Jira tickets).

Building a custom web application allowed importing or direct access to all the above systems. It’s a true “one stop shop” for vital business systems used by the majority of the company. The system is forever evolving adding new features and reports and uncovering new ways to look at various sources of data together. In future posts I’ll dig into the various aspects of the dashboard and how it was built.


Posted in Dashboard | Tagged , ,

Presentations – Retro Computing

Posted on by jjacob

As Director of Technology at an interactive company I’m always evangelizing new technology. Sometimes it’s technology I’m looking at, and sometimes it’s technology that someone else in the engineering group is researching. Part of this evangelizing process is giving presentations to the various teams. It’s at times like this when I have to start up PowerPoint that I get a shiver up my spine.

It’s not like PowerPoint is bad, it’s just so often boring and uncreative. Like many of you, I’ve seen my fair share of cheesy presentations and bad templates. In a challenge to myself to be more creative I really strive to make the presentations as interesting as possible. I also try to use traditional presentation tools as little as possible. But when I do, the quirk factor is dialed up to 11.

This set of actual slides (and by “actual” I mean film) from a 1975 IBM presentation fit the bill. Here’s a sample: http://blog.iso50.com/2193/ibm-slides-1975/. Seems the original site (http://www.squareamerica.com/ib.htm) is down at the moment but you get the general idea from the samples. Just an awesome retro look! Although in order to use these in my own presentation, I had some Photoshopping and font research to do.

I went through the whole list and found about a dozen slides with blank areas big enough for text messages. Sometimes the areas could only hold a couple big words like the original, others had enough for a couple bullets. As a rule I don’t often put a lot of text on my slides so I could identify with the original style. I tried to get a good mix of the older gentleman and the other people for variety.

For the font I wanted something similar and ended up with Folio Standard Bold Condensed which had that great classic “IBM” look. As an added bonus, I traded out my company’s logo font for Motter which is reminiscent of the Apple II logo. Here are a few clips from the presentation. Cheers!


Posted in Presentations | Tagged

QR Directory App – Generating Codes

Posted on by jjacob

So, I created the app to read tags for employees and conference rooms and show schedules, now I just had to create all the tags. Although creating them manually was an option, I had 100+ to create so wanted a quicker way. Thanks to MacPorts and some scripting I was able to come up with this:

#!/bin/sh

# get list of persons through a very long command
PERSONS=`/usr/bin/ldapsearch -x -LLL -E pr=200/noprompt -h ldapserver -D "ldap.account" -w "password" -b "CN=Users,DC=domain,DC=local" -s sub "(memberOf=CN=All Employees,CN=Users,DC=domain,DC=local)" mail | grep "mail:" | sed s/"mail: "// `

# start the HTML file
echo "<html><head><title>QR Codes</title></head><body>" > images.html

# loop through all the persons
for person in $PERSONS
do

	# diagnostics
	echo "Processing: $person"

	# print HTML
	echo "<div style='float: left; text-align: center; margin: 30px; font-family: Helvetica, Verdana, Arial;'><img src='images/$person.png'><br/><b>$person<b/></div>" >> images.html

	# create QR code
	qrencode -s 10 -o "images/$person.png" "$person"

done

# finish the HTML file
echo "</body></html>" >> images.html

# all done.
echo "DONE!"

The script relies on two core commands: 1) ldapsearch to find people in LDAP (in our case Active Directory) server and 2) qrencode which takes a string, encodes it as a QR code and writes out a file.

The script dumps all the QR code images into a directory and all writes out an HTML file which references the images and puts the person’s email address under the image. Not necessary but when you’re printing out a lot it serves as a check to make sure your putting the right picture on the right office.

References:
ldapsearch – Part of OpenLDAP http://www.openldap.org/software/man.cgi?query=ldapsearch
qrencode – Part of liqrencode http://fukuchi.org/works/qrencode/index.en.html


Posted in iPhone, Scripting | Tagged ,

QR Directory App – Overview

Posted on by jjacob

Last year when all our clients began talking about QR codes and applicability to their business I took some time to play around with some existing scanning libraries. I ended up finding some great sample code for the ZBar reader (http://zbar.sourceforge.net/) and put together a proof of concept.

I was really looking for an application beyond the marketing use of embedding URLs. I chose to tackle the common problem of walking over to someone’s office only to find an empty chair or finding an empty conference room and wondering if someone has it booked. The app reads a QR code which is the encoded email address of the person or room/resource and then overlays the schedule. Here’s a before/after screen shot:



A QR code of my email address has been added to my office badge. When the app scans the QR code it detects the “josh.jacob@…” email address and then overlays a web view. The web view calls an internal web app which has my directory picture and schedule.

Using an email address is a great fallback for general QR code readers. The privileged schedule information is only available to internal users who have the app. Visitors using a general QR code reader simply see an email address that they can save. More detail in a future post.


Posted in iPhone | Tagged

Hello world!

Posted on by jjacob

So a decade or so after this whole blogging thing took off I finally have something to say. They say everything comes around in time…

I’m a full time engineer at an interactive marketing services company. I (occasionally) release software on my web site. I also do lots of other development for internal purposes at my day job or on the side that doesn’t appear on this site or isn’t paid for by a client. Instead of letting those development efforts stay hidden, I’ll be writing about them here.

Comments are off to start with as I find a rhythm with everything else on my plate.


Posted in Misc. | Tagged