Latest Entries »

This happened quite a few years ago, as a my Computer Science bachelor’s final paper.
I built what started as a database monitoring tool, to help manage an Oracle 8i instance. At the time there were not may easy-to-use tools out there, and Oracle wasn’t so ‘hands-free’ either.
As implemented, it could be used as a dashboard to display any data (financial, production, etc.), as long as you could query it through an odbc driver. One of the graphs was real-time, if that was needed.
Here’s what it looked like (labels in portuguese, mostly showing used/free resources).


I named it ‘HoloDB’, because it gave you a holistic view of your data.
While I was happy with the results so far, I wanted to take it a step further. At the time, VRML was around, and I decided to see what it would look like in a 3D VR ‘world’ that I could walk around in.


Now, VRML wasn’t supported directly by any browser, and you needed a plug-in in order to view and navigate.
A few I used:
Cosmo player:
A few features of a VRML ‘world’:
You can walk, which keeps you on the ‘ground’, or fly, which lets you move around more freely.
Sky/ground can have specific background pictures.
To diminish impact of overlapping objects, you can turn on a ‘fog’ effect that increases as objects move farther away from you.
Iterators are activated when you get close to an object – I used it to animate a color change on the objects.
While you can zoom out to figure out where things are, I spread them around in ‘islands’ in concentric circles, and defined specific viewpoints – that way you can move directly to the best viewing position for any defined object being monitored.
At the time it was a fun experience, but it suffered from VRML 2.0 not being a true standard yet. Each plug-in implemented it slightly differently. No built-in browser support either.
With VRML evolving into X3D, one day I may go back and play with it, especially if I can get to view/navigate within a browser without needing any plugins.
You can download the files and view them with the cortana plug-in. The .wrl file will not open with the windows 10 3D Builder app without some editing. Some of the features are not supported by the current standards.

You can grab the holodb.wlr file (and top/bottom .jpg) here:!AsLcnPt58gPPuZM2wtHou-ra8svYXw

Just save them somewhere, install the Cortana plug-in and open it with a supported browser.


I have a Nokia Lumia 1020, with the charging back, and while their own wireless chargers are great, they not exactly cheap, so I went to amazon and bought a generic Qi charger for around $10 at the time.

Now, I could leave the phone flat on top of the charging plate, or up in a holder, but it was hard to fit the charger there as well.

So I decided to build my own.

At first I used some craft board, and while it worked, it still could be improved.

Then I found out our local library had a 3D makerbot printer available for patrons – best library ever!

They have 3D education programs for teens, so if you’re in their district, check it out.

Here’s my homework:

  1. Download sketchup, watch the tutorials and build a model
  2. Export it as a .stl file – requires a free extension
  3. Load it to the makerbot desktop app, which makes a couple of extra verifications
  4. Email it to the library
  5. Drive over to pick it up, and for $3.50 I had a custom built holder.

Here’s how it looked like – I printed it flat – MUCH easier on the 3D printer



WP_20150127_10_02_19_Pro 1

With the Qi charger added to it:

WP_20150127_10_25_05_Pro 1

Normal use:

WP_20150127_10_26_54_Pro 1

My project was specific for the Qi charger I had – you may want to reposition the support ‘pins’ to match whatever you have.

Now that I have an idea of cost to get these things printed, I’ll probably spend some time designing a few new toys.

Feel free to use my design as a starting point, or just to give you ideas:


I had been reading about Kanban and how to apply it to a software maintenance team when Microsoft released all their new software, including Sharepoint 2010 and SQL Server 2008 R2.

I thought it would be a good idea to build a Kanban board using Sharepoint, Access Services and SQL Server Reporting Services – this would give me something objective to do with the new tools.

Don’t take this as a recommendation or best practice, but rather as a proof-of-concept.

If you already have a project management system / task list / bug database available, you can use it as the source of the Kanban / SCRUM board. To avoid ‘religious’ discussions, I won’t compare Kanban to SCRUM or any other specific technique – I only want to show you how the tools can help you build whatever you decide is best for your team.

And thought Access has its own reports, SSRS has gauges and other advanced features. Besides, if you already store your task/issues within a database, you could skip the whole Access application build and go straight into building the reports with SQL Server Reporting Services.

There’s plenty of examples out there of management boards, some very simple, some amazingly complex. I’ll show you a basic one, and you can enhance it to your needs.


You will need:

    • Sharepoint Server Enterprise Edition, with Access Services
    • SQL Server 2008 R2 Reporting Services (though 2008 would probably also do, the whole point was trying out R2)
    • Microsoft Access 2010

SSRS can be either run in integrated mode or standalone – it’s up to you. My example is set up for integrated mode, so I store the reports in a library that includes the report content types.

Building an Access Web Application project

The web application template

Since I don’t intend to teach anyone to create an Access app from scratch, we’ll use a template already available: the Issue List Web Application.

A web application has some limitations compared to a traditional Access database / project. Mostly it has to do with how Sharepoint stores lists – they are not really tables, so the first requirement is that all primary keys are just sequence numbers – no compound or character fields allowed. There are many other things to watch out for, but the publishing process will put the app through a verification step first, and you will receive a report with any issues that need to be corrected.

The templates are a good way of learning ‘tricks’ related to new features.

So let’s get started: open Access, go to File / New , click on sample templates, and select the  ‘Issues Web Database’ template. You may give the file any name you want – I used  ‘Issues Web Database Demo’.


You will be prompted to create a user, which can be mapped to a domain\username, so it automatically logs you on when you start it up. If you’re testing this outside a domain it will still work, but you’ll have to select the user every time you start it up.


You will see the welcome page, and all other pages are organized in tabs. The links available can give you a better idea of how the template works.

Click on ‘Open Issues’, then on ‘New Issue’ to add some test data.

I recommend adding at least 5 items so our board will have multiple items under a few columns.


You should also have at least one item for each different status: New, Active, Resolved, Closed.  New items are automatically assigned a ‘New’ status. image

You will need to click on the link (the item ID) to edit it and change the status.


Modifying the application

My biggest issue with this template is that fields like status, category, etc. are mostly hard-coded, instead of being reference tables.

If you decide to use this template as a starting point, I suggest correcting this, which will require you to edit the macros behind the table / form so the logic doesn’t get broken. For instance, whenever an issue changes status, it may trigger specific updates – these macros are similar to database triggers, but are implemented in Sharepoint as workflows.

Since I wanted to use gauges in my report to show progress on a task, I need a place to store that info. This is the only change we’re making to the database at this point.

You need to close all forms, edit the ‘Issues’ table, which should be showing up in the navigation panel in the left. Scroll to the end of the table, click to add a number field, and name it PercComplete, formatted as ‘%’.



You could now enter the percent complete info directly in the data grid, but if you want to actually use this app you’ll need to correct the data entry form named ‘Issue Detail’.

Just add a text field, map it to the field you added earlier, and you should be able to edit the items to enter meaningful numbers.


When you’re done, New tasks should be 0% complete, Active can have anything up to 100%, and Resolved/Closed should be at 100%. Different values will help test the gauges later on.


The ‘Open Issues’ grid can also be changed so you can enter the percentages right there. Right-click in a column, select ‘Add Existing Fields’, and drag the PercComplete right after Status.image

This is how mine looks like:


Publishing the app to Sharepoint Access Services

This is when the magic happens. Your Access app will become  a web app – the whole thing will run off a browser, your tables become lists, macros become workflows, and your reports will actually be converted to SQL Server Reporting Services reports.

One great benefit of Access Services is you can save the access web app to your laptop, take it on the road with you, enter changes off-line, and once you’re connected back to your office network, they get synced with Sharepoint automatically. This ‘occasionally connected’ type of app is much harder to implement by hand, but they make it transparent.

In case you’re wondering how it’s done, they basically use negative sequence numbers while off-line, that get converted to proper sequence numbers during syncing.

Go to File / ‘Save and Publish’, and select the ‘Publish to Access Services’ button. You will need to fill in your Sharepoint web server address, and pick up a name for the app:


If you made significant changes, or this is the first time you are publishing a web application, it’s recommended to run the compatibility checker, and Access will let you know of any issues that need to be corrected. After being published, the application will open in the browser, but leave the original project open, so we can return to it later.

At this stage, anyone can use it from the browser, without having to open Access anymore.

Creating the Kanban Board

Creating the item report

Go to the report library (or the report server folder) where you want to create the reports under, and start the Report Builder.

Select a blank report, and create a new dataset that points to the ‘IssuesDemo’ Sharepoint app you created above.


The dataset query will point to the Issues list (equivalent to the Access issues table). Select a few (or all) fields, and add a filter on the Status field, marking it as a parameter. You may default it to ‘1’, meaning  ‘New’.


The report layout

Fist add a new list to the report, then 2 large rectangles, one slightly smaller. Color the inner one similar to a sticky note (or whatever color you like – they could even be conditionally based on categories, for example). The rectangles are just there to let you tweak the spacing between the notes, or add a border if you like.

Inside the innermost one, add a few fields, like the summary text, priority, category, percent complete, and status. You may style it any way you want.

If you run the report now, you can try it with different status codes (1 through 4)


Enhancing the design

One of the new features from SSRS are the gauges. Let’s add one to indicate progress. Insert one of the Radial gauges in the layout, then drag the PercComplete field into it. The report data panel needs to be visible for you to do this.


Now you will probably need to adjust the gauge to the correct scale – completion goes from 0% to 100%, meaning 0.00 to 1.00.

Right-click the gauge, select ‘Gauge Panel’ / ‘Scale Properties’, and make sure the scale goes from 0 to 1, and multiply scale labels by 100.


You can preview the report now, and adjust fonts / styles to your liking. When you’re done, save it as ‘IssuesByStatus’, and make sure to note the location.

This is what mine looks like now:


Putting the board together

The board is simply a collection of subreports, organized in columns per status (or rows, or other field – your board is your creation).

Start by creating a new blank report – you don’t need any datasets for this one.

Add a text field for each status to the top, formatting it with some background color. The width should be matching the report – you may need to tweak this a bit to make sure they align.

Below each one, add a subreport, select the ‘IssuesByStatus’ as the subreport source, and pass the specific status to each one (1 through 4).



This is what the design should look like (4 subreports, organized in columns):


If you execute it, the board should show with all of your issues categorized by status:


If you play with this solution, the first thing you’ll notice is the board will stretch forever – you should limit the completed items by adding some filter (maybe only show tasks completed for the past 10 days). The problem is the issue list does not include a  ‘completed date’ field. If this is to be used as a real app, it will need to be corrected. Other improvements could be coloring the label/backgrounds depending on category or priority.

Most boards will have some ‘banding’ or highlight ‘frozen’ tasks somehow. That can be done by using conditional formatting or some indicator (flag, traffic lights, etc).

Adding the board to the web application

While you could just run this report from the folder / library where you saved it, it’s nicer to have it integrated with the Issues Web application. This isn’t hard either.

Go back to the Access application (or if you closed it, navigate to the web app, click on the ‘Options’ drop-down at the top, then select ‘Open in Access’.

Add a new web form named ‘IssuesBoard’.


Insert a  web browser control to the body.


Set the hyperlink properties to the ‘IssuesBoard’ report’s url. Once you paste it, the builder will parse the distinct properties.

It’s a long url, so just copy and paste it. I won’t go into it, but there’s more than one way of asking the server for the report – it depends on being integrated with sharepoint or not, but you could even do things like setting up the default zoom to ‘fit width’.

You can preview the subreport now to make sure it’s ok. You will need to play with the size a bit to get it right.

All that’s left to do is add it to the navigation.

Enter layout mode, click on the ‘Add New’ to the right of the tabs, and add a ‘Board‘ tab. In the navigation target name property, pick up the subform: ‘Form.IssuesBoard’.


Now, even if you save the changes, you’ll notice the web app hasn’t been refreshed.

Go to file / info, and click on ‘Sync All’.  This will update the form/report changes.

You may now open the app in the browser, and your brand-new board should show up:



As you could see, the example is far from complete, but it touches on some tools you can use to get your work started. As a challenge, you could change the summary text block to a hyperlink that sends you to the item’s maintenance form within the application.

I hope this will give you ideas, and I apologize if you suddenly have an urge to work your weekend building geek stuff.