
ILoveSketch from Seok-Hyung Bae on Vimeo.
Labels: Design, GUI, Programing, Visualisation
Fama crescit eundo - Currently at Impulse Speed
Labels: Design, GUI, Programing, Visualisation
Labels: Design, Programing, Visualisation
A collaboration between Microsoft and University of Washington produced a interesting concept of how a photo collection could be explored in 3D. This is one amazing piece of programing achievement.
Labels: Design, Programing, Visualisation
In the age of Wikis, Google Earth/Mars and after WikiMapia it was just a mater of time before someone creates a Wikimapia styled web service for the heavens. It is surprising that we had to wait so log to get such web application.
Labels: GUI, Programing, Space, Visualisation
Labels: GUI, Open Source, Programing
There is always a need to reduce work and programing is no exception. Alot of times there is some algorithm or function that are simply to dirty to code, I call it "manual labor". Under "Manual Labor" I take any programing problem where solution is known but to get to that point we need to spend hours of coding.
Labels: Open Source, Programing
Past week I had a really big problem. There was a document that I needed to make each and every day.The problem consisted of having one unsorted sheet with diverse data and as it is not constant, on one day a piece of data would be in row 113 and the next it would be in row 65, it would be simply a mammoth mask to undertake each day in organizing the data to fit the table.
The picture on the left is a sample of one such table. Code column is scrambled and you have to unscramble it every day. Now imagine that there are more than 100 or 1000 such entries.
First we need to create on another sheet (in this case it will be Sheet1 and unsorted table on Sheet2) a layout of how we want our report to look like. On the right is yet again a sample of how it could look. Note that the code Column is sorted. This is our reference for extracting data from the table. It could contain any form of data (text, date etc). There is no specific need for code column to be the reference one, it could have easily been the Value or Name column.
Now comes the "Hard" part. In columns that we wish to populate we need to enter this formula:=INDEX(Sheet2!B:B,MATCH(A3,Sheet2!A:A,0))
There are two functions in this formula. First is INDEX and the second is MATCH.INDEX(Sheet2!B:B,MATCH(A3,Sheet2!A:A,0))
If any questions or comments please feel free to contact me.
Labels: Excel, Programing
Ever since I first used WinAmp plugin to turn off/on my keyboard lights I wanted to reproduce that effect. finally some time ago I found out how its done and here's how.
The image on the left is from KeyLED 0.9.3 plugin for Samurize that I made.
My programing language of choice is Delphi from Borland since its first birth as Pascal for Windows and later as Delphi 1. Never needed to change so code will be for delphi but it is such a small part of code that it could be translated to any programing language with relative ease.
The trick with controlling your keyboard lights is a very old one. Computer communicates with keyboard on I/O ports 60h which is data port, and with port 64h which is Command/Status port of keyboard. By writing to port 60h we bypass the system and change the LED indicator for eg. Caps Lock to off even if Caps Lock is on but without changing the Caps Lock status. Caps Lock stays on even if LED is off. This enables us to play with keyboard lights without any worries.
Port 64h is used to detect if keyboard is ready. We do that by waiting that status of port 64h becomes 0. Then we prepare keyboard to change keyboard light by writing EDh to port 60h and then wait port 64h to once again become 0.
The waiting for 64h port to become 0 is a safety measure that can be bypassed but I would recommend against it. You would still be able to change the LED state but by waiting for ready state you remove some unwanted artifacts like missing keystrokes etc.
After we prepare the keyboard we can turn off and on Keyboard lights. By writing to port 60h combinations of
we can selectively turn on and off lights on the keyboard without changing caps lock or numlock status.
This is all just theory but how it is applied in reality? Well, Windows XP introduced restrictive methods for accessing hardware ports so we need a library that can to that for us. In the good old Dos there was Int 9 and direct access to ports but not anymore. Library that I use is Inpout32.dll. It is open source so if you really like it you could incorporate it directly into your applications removing the need for "one additional file to carry around".
First we need to create functions connecting to DLL by
function Out32(wAddr:word;bOut:byte):byte; stdcall; external 'inpout32.dll';
function Inp32(wAddr:word):byte; stdcall; external 'inpout32.dll';
With functions for port access defined we can now proceed with writing and waiting and writing and waiting by:
PROCEDURE Set_keyboard_lights(n,c,s : boolean);
var
bErr:byte;
val : byte;
BEGIN
val := 0;
IF s THEN inc(val);
IF n THEN inc(val,2);
IF c THEN inc(val,4);
repeat until (inp32($64) AND 2)=0;
bErr:=(Out32($60,$ED));
repeat until (inp32($64) AND 2)=0;
bErr:=(Out32($60,val));
END;
Procedure presented will take three parameters that can be either true of false; NumLock Status, CapsLock Status and NumLock Status.
This small snippet is all you need to control your Keyboard Lights. Have Fun!!
Labels: Design, Open Source, Programing
Cambrian House
"brilliant ideas are submitted (by you) for the community (that's you too) to rate. If an idea gets a lot of support, Cambrian House will build it with the help of the worldwide development community (there you are again). Contributors take their pick of exciting projects, and in return, they get a piece of the royalty pie (...that's money)."Cambrian House is a part of SourceForge.org and there are currently 3288 ideas submitted.
Labels: Open Source, Programing