Posts Tagged Geeky
PictoSense
Posted by Thomas in Computer Interfaces on September 26th, 2008
In my previous post I had mused about adding sense to the media library. I was considering how one could make a media libary - tagged for people, locations and time - available in an entertaining way. The departure point for this thought process was the growing number of family and personal pictures that I currently have and manage but for which the tools are so arcane that my family would not enjoy using them.
Since then the idea has continued to pop into my thoughts demanding refinement. As a follower of GTD principles I figured that if I was to ever stop my brain from tinkering with this I’d better start jotting things down. Hopefully that’ll save me from having to keep track of things in my head and this constrantly rummaging around up there.
Read the rest of this entry »
Adding sense to the media library
Posted by Thomas in Computer Interfaces on September 16th, 2008
I’ve had quite a bit of time on my hands the last few days - being sick tends to provide that oh, so valued commodity which tends to escape us as active adults. I’ve used the time to get through some of the backlog of my snapshot database.
The libary
As you may recall, I’m pretty anal when it comes to the family’s picture archive. When we purchased our first digital camera what feels like eons ago, I quickly realized that we would end up with fairly large library over the years. And as with any largish library it would need management. So I set about tagging the images, a tedious but necessary evil if we were ever to make sense of the thing 20 years down the line. I won’t go into the details of the workflow here and just mention that I tag pretty much anything for: who took the shot, the person in the shot and the location it was taken at.
Recently I’ve started wondering how this data can be put to good use. My current toolset can very nicely tell me what I generally need to know, where something was taken, by whom etc. It will only tell me those things because I know the tools. That’s fine as long as I’m the only user, but that’s not really the point of the library. How could this library be made accessible to others (e.g family and friends) and if so what are the salient features I would put at their disposal given the meta-data at hand?
After a little pondering a couple of things seem essential: a timeline, locations, and people. Whomever would have access would like to have the ability to sort and filter data based on these criteria. These are fairly simple features which I’m sure can be found in a number of user friendly pieces of software.
Architecting a new libary
Yet how do you bring those to the user in an entertaining way? The idea of entertainment also seems a key criteria. Whomever would view our library would likely not be looking to trudge through thousands of pictures. Rather, this person would be interested in the story that the pictures tell.
Figuring out what the libary viewer, for lack of a better name, would look like and how its usage could be desinged is what’s been prickling my mind. The way I go about figuring this out is to answer the following question: “What are the storylines one could derive from the meta-data in the library?” It’s not the easiest of questions to answer and If you’d like to participate then please feel free to comment…
Time and space:
For one we can use locations pictures were taken over time using the location information and the time a picture was taken. For this I envisage a map of the world with a bracketed timeline. The map would display pictures, or rather some form of reference to pictues for a given time bracket. These references could be bubbles which vary in size with the number of pictures that were taken around a given location for instance. The timeline would function very much like the one found on Google Finance. It would allow you to set the width of the bracket (i.e how many days, months etc. to take into account) and allow you to slide that bracket over time. When you slide the bracket the references on the map would change in accordance.
The timline and map would work in conjunction to filter the pictures to those that you’re interested in. Other features would include the ability to zoom in and out on the map and the ability to click on a reference (bubble) to further filter the pictures. The pictures themselves could be listed in several ways although my personal preference would go to a filmstrip type of listing.
Relationships
Another idea would be to use the people in the shot. As each picture has an author and one or more people in the picture one can establish a sense of relation both between the author of the shot and his subjects as well as betwen people in the shot.
The first thing that springs to mind in this regard is a graphical representation of relations between the people. The strengh of the relation would be relative to the number of times any 2 people were in the same shot together. Something like the Visual Thesaurus would be an interesting start piont The central weight points could be around the authors as they’d could be considered to be in every shot - that’s debatable though, one should see how this works out in the data representation.
One could thus navigate the picture database solely based on the relations of people. Selecting one or multiple people would filter the number of people in the shot.
A second feature which could be added is the timeline. This could be achieved in very much the same way as with the “Time and Space” idea such that selecting a time-frame would restrict the number of people shown.
Further afield
I’m sure that there’s more ways to view this information, but for now my brain is fried - I am sick after all… To be continued then.
Do leave me a comment or two in case you want to contribute
Gary’s back
Posted by Thomas in Reflexive blurbs on August 26th, 2008
After a very long absence Memoria Technica is back in the ether. Many months ago – I lost track of when and Gary’s archives have disappeared - Gary had announced he would stop updating his blog. As sad as it was I had pretty much given up on ever seeing him blog again. The enthusiasm for technology and wit with which Gary shared it through Memoria Technica was something I always looked forward to reading.
For reasons yet unexplained I plugged in his URL this morning and lo and behold there it was: Memorio Technica. Today’s going to be a good day it seems.
Words of history
Posted by Thomas in Reflexive blurbs on August 22nd, 2008

a word cloud of badsoda.com by Wordle
The future barcode
Posted by Thomas in Computer Interfaces on May 13th, 2008
Working in the transport industry I routinely come across forms of data encoding and retrieval for the purposes of tracking the movement of goods such as bar codes, RFID etc. The uses of these technologies outside of managing a supply chain have so far completely eluded me - and to be perfectly honest I was never interested in it.
That changed recently when I came across QR-Codes. QR Codes are a particular implementation of a two dimensional bar code. They are similar to a linear (1-dimensional) barcode, like the ones you find on products at your local supermaket, but have more data representation capability.
What I had failed to realize up to now is that these systems encode data, whatever this data may be. While your typical UPC or EAN barcode, which is used in retail, only has the ability to handle 12 decimal digits the more recent encoding systems go way beyond this. In the case of QR-Codes you’re able to encode over 4000 alpha numeric characters. This opens up a whole new market of possibilities.
Stop and think for a second about it. What information can be conveyed to you in 4000 characters? What are the typical things for which you re-encode information as you move from one medium to another? What information is prone to “write once - read many” situations where the medium carrying the message does not have inherent technology to support the reading?
Top of mind for me would be books. Encoding such things as title, author, year of publication, publisher, anything within the ONIX standard would be really useful. Imagine you’re a shopkeeper and you have the ability to add titles to your catalogue simply by scanning the barcode! Another example would be encoding of IPTC and EXIF information on the back of printed photos. On the more sensitive side you could imagine encodig personal details such that instead of inserting your ID card or bank card into a reader you would just swipe them in front of a camera. The possiblities are limitless.
The Walktree Function
Waltree is a simple VBScript function I devised while I was teaching myself rudimentary use of Microsoft’s XML Dom. The function takes a XML DOMDocument object as an argument and will output the XML as an indented, unordered HTML list. Walktree will not only display the content of each XML tag but also the values of the various properties if they exist.
Specifically this Function illustrates the usage of:
- Microsoft’s XML DOM implementation
- Simple Recursion
Calling the function is not difficult. You start by creating a XML object like so:
Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
Then set the appropriate XML properties and load the document you wish to porcess.
xmlDoc.async = False
xmlDoc.load(Server.MapPath("books.xml"))
Finally check if there were errors and if not run the Walktree function.
If (xmlDoc.parseError.errorCode <> 0) Then
response.Write(xmlDoc.parseError.reason & "<BR>")
Else
Walktree(xmlDoc)
End If
Walktree Source
The source below should be fairly self-explanatory if you’re familiar with VBScript. The output of the function can be easily modified to cater to other needs.
<%
Function WalkTree(objCurrNode)
’====================================================================
’ WALKTREE 1.0
’ AUTHOR: Thomas Vanparys - http://www.badsoda.com
’
’ USAGE: Pass a valid XML DOMDocument object or node and it will
’ output the entire child tree as an HTML unordered list
’====================================================================
Dim objChild
Dim objAttributes
‘Check if node passed down has children
If objCurrNode.hasChildNodes = True then
response.Write("<ul>")
‘Output each child
For Each objChild In objCurrNode.childNodes
‘While making sure they are elements and not something else
If objChild.nodeTypeString = "element" then
response.Write("<li>")
response.Write(objChild.tagName)
‘Start checking for attributes
Set objAttributes = objChild.attributes
If Not objAttributes.length = 0 then
response.write(" <i>(Attributes: ")
For i=0 To (objAttributes.length -1)
If Not i=0 then response.write("; ")
response.write(objAttributes.Item(i).nodeName)
response.write("=" & Chr(34)) response.write(objAttributes.Item(i).nodeValue)
response.write(Chr(34))
Next
response.write(")</i>")
End If
‘Output contents of current object
If objChild.hasChildNodes = True Then
‘and objChild.firstChild.nodeTypeString = "text" Then
response.Write(": " & objChild.firstChild.nodeValue)
End If
response.Write("</li>")
End If
‘Do some recursion to walk down the entire tree
Walktree(objChild)
Next
response.Write("</ul>")
End If
End Function
%>
Protecting your Image(ry)
Safeguarding a website’s look and feel is as important as protecting the content it delivers. It is important because it defines who you are to your audience. It is analogous to protecting your brand. A site is recognised through its layout, use of graphics, fonts and colours. You wouldn’t want someone else to just rip your work and use it as their own now would you?
Standards
Often enough however, layout protection of a site is either not done or poorly implemented. The difficulty lies in implementing proper protection schemes. This is mainly driven by the fact that the overwhelming majority of sites are based on HTML. The HTML standards are designed for defining layout and have little concern for security issues.
That doesn’t mean you can’t protect your site however. There’s several schemes out there which offer various levels of protection. Some are easier to implement than others and they all have their advantages and disadvantages.
Concept
What I’d like to present here is a way of protecting the imagery of a site using only standard HTML and CSS. You will learn how to use simple tricks to stop people from ripping your graphics by either saving the page or using the save image options of the browser.
Conceptually the technique is fairly straightforward: Use the HTML to define the document structure and then use CSS to apply the graphical layout layer underneath. The trick is to put tranparent images in the HTML as placeholders and then fill these with imagery defined in CSS.
To see an example of this technique simply try to save the page your’re reading to your local hard drive and then opening it again in the brower. You will notice that the page you just loaded has correct layout structure etc. but no imagery.
How this was achieved
There’s several ways you can implement the concept. For simplicity I’ll be using the IMG tag and write the CSS directly into the tag. At then end of the article I’ll give some pointers on other ways of doing it.
To follow along you’ll need two images: the one you want to display and a transparent one. For the transparent image I typically I use a gif image of 3 by 3 pixels.
Lets start with the HTML side of things. Start by creating an IMG tag as you would normally. Make sure you have the width and height set correctly. It’s important later.
| Code | Result |
|---|---|
<IMG SRC="display.gif" BORDER=0 WIDTH="33" HEIGHT="33"> |
Now lets replace the image with the transparent one. For the purposes of illustration I used a semi-transparent image. Basically the image has a line through it so that you know it’s acutally being displayed.
| Code | Result |
|---|---|
<IMG SRC="transparent.gif" BORDER=0 WIDTH="33" HEIGHT="33"> |
If you sturcture your entire HTML document in this way you’ll have placeholders for all your imagery. This is essentially what gets saved by the browser and your potential thief.
Now lets add an image beneath using CSS. For the purposes of simplicity I’ll be using the style attribute directly in the IMG tag. In a production environment I would use a separate style sheet which you call with the appropriate tags.
| Code | Result |
|---|---|
<IMG SRC="transparent.gif"
BORDER=0
WIDTH="33"
HEIGHT="33"
STYLE="background-image:
url("display.gif");"
>
|
You don’t have to set the width and height parameters in the CSS part (as long as the placeholder in HTML is correct).
And that’s all there is to it. Simple no?
Last words
You can achieve the same effects in other ways too. For example you put all the CSS in a Div and have the Div contain the IMG tag. This allows for more flexibility in the layout and actual placement of your imagery and is a techinque used on this site.
Besides copy protection, there is another great advantage to using this technique. If you ever want to change imagery or use mutliple skins on your site, all you have to do is change the CSS file, nothing else.
The technique would be absolutely perfect if you could set the width and height is CSS only. Then you would come full circle on flexibilty. Unfortunately I haven’t found a way of doing this properly yet. If you have, drop me a line.
Gary’s Geek Week
Posted by Thomas in Reflexive blurbs on April 4th, 2003
If you don’t know Gary Turner’s blog by now, you’re missing out on what, IMHO, is one of the greatest blogs around. Lately Gary’s been on a geek trip. As is not uncommon with him he seems to have had a little spark which then quickly turned into a blaze.
It started quite innocently with a pun about the Atari® logo being a religious Geek icon. Next thing you know he’s posting a 2 pager about Geek genomics. Exploring his inner geekishness inevitably leads him to ask the question: “What is a geek?”. With great wit he has today set a new milestone for defining, and by his own accord, rebranding of what a geek really is.
I applaud this effort. Geeks around the world unite! Shed your ill conceived self images. Take pride in what you are. Wear your “publicly acceptable” cloak and armour when necessary but by God, shed it as soon as you recognise your brethren. Let the light of geekdom shine us and leave the innocent to their devices.
Digital savant, your time is comming…
Jumping the gun
Posted by Thomas in Reflexive blurbs on February 19th, 2003
Last week I blogged about a little Flash application I came across. I had proposed an analysis of how this application was concieved.
A few days ago, Steve Lewis brought to my attention the following:
…you give the guys a CyberGlass far too much credit. It is a simple mathematical trick. Performing the calculation on any two-digit number always yield a multiple of 9 (9,18,27,36…). Look at the chart. Those numbers all have the same symbol, and that is the symbol that will appear in the crystal ball.
I have to admit I had not thought of the simple mathematical beauty of it. It’s true that all these symbols are the same. The guys at CyberGlass also made sure some random symbols pop up from time to time hide this. I got misled when I picked three random numbers and then tested them with the crystal ball. Oddly enough all three of the guesses turned out to be correct. The chances of this happening were less than one in sixthousand….
Anyway. Teaser solved. Thanks Steve.
