Author Archives: garreth

Link

Just a super-quick post here.

If you’re looking for addons or plugins for Microsoft Outlook to help you organize your emails and extend the functionality of Outlook

(note Outlook is very extensible, as with all Microsoft Office applications you can write Visual Basic code for Applications to hook into it’s functions. Absaloutely fantastic for hacking excel as I have been doing for the last few weeks – my work needs to invest in a proper database program for sure *sigh*)

You’d do no better than looking here

Snapfiles Outlook Add-ons

http://www.snapfiles.com/freeware/comm/fwoutlook.html

 

They have addons that are useful – and unlike most of the sites on i’ve found so far – up to date and compatible with recent versions (2003+) of Outlook.

Hope this helps folks!

 

Rfduino Chip vs Thermometer

Well, I’ve now debugged a few issues with my scripts from my last post.
(made them a bit more fault tolerant and actually take notice of $? exit statuses) .
Recap: Temperhum (USB) -> Raspberry Pi -> Xively chart, now also
RFDuino (bluetooth wireless) -> Raspberry Pi -> Xively chart

Tip:  If you’re struggling with the bluetooth on linux giving rx timeout errors (check the syslog if it’s not in the console),
update the software with the following commands:

sudo apt-get update
sudo apt-get upgrade

The Rfduino has been sitting next to my usb Temperature and Humidity sensor for a few weeks collecting data.

IMG_20140514_223244041r

RFDuino and Temperhum

Since it had been both collecting data for a few weeks and sending them to Xively / Pachube / Cosm, I had a quick look to see how closely the readings match.

Rfduino vs thermometerr

The graphs do show correlation, thank goodness, but it looks like the RFDuino’s temperature scale isn’t right. The RFDuino is only updating the graph once a minute whereas the Temperhum is 2x a minute.

I didn’t really expect great accuracy for the RFduino thermometer seeing as it’s measuring from the chip. But this would still be useful in some more basic cases.

I think next on the roadmap for the RFduino is connecting sensors/remote controls (it would be cool to attach my RelaySockets to this and control the 2 connected relays via bluetooth from my Pi and Android smartphone!

 

My Humidity and Temperature sensor

A Temperhum from PCSensor.

A great little bit of kit – once you work out the conversion values for the C++ USB/i2c/HID code that lets linux talk to the thing!

Getting Rfduino working with Linux

Intro:

I ordered this nifty ‘RFduino’, an arduino-compatible device which was also my first ever kickstarter purchase over a year ago now.
However, when the device arrived, the company behind it seemed exclusively interested in the iPhone handset to the detriment of all other platforms.
Personally, the lock in monopolistic attitude of Apple and its customers really gets my goat, but I digress.

The lack of support and that the device arrived half a year late left me with a sour first taste of Kickstarter.

Since then, I’ve played with the Rfduino using JT’s iGear (no, I don’t know why fell into the Apple pit either) using the only app available to use the sketch it comes with – the internal thermometer

But that’s rather limiting!! I bought this device with plans to build a Wireless ‘Internet of Things’ sensor network for my house.

I have designs on talking to every platform available using protocols such as mqtt, backends like rrdtool and web interfaces for my housemates to see and control the action.

This is something I’ve been dreaming and sketching out  for years, because lets face it, who doesn’t think having the lights turn out when you leave is super cool?

So without further ado, how do we get the RFduino to talk to a linux machine, in my case a Raspberry Pi running Raspbian.

Ingredients:

Hardware:

You will need

  • Internet connection to download tools
  • Bluetooth packages installed (bluez-tools)

Howto:

Power on the  RFduino and linux machine. I used two Alkaline AA batteries to power the RFduino although Rechargeables do work.

Install the Bluetooth 4 usb adaptor on the linux machine
Install the necessary bluetooth programs:

sudo apt-get install bluetooth bluez bluez-utils bluez-firmware

(you may need to reboot the machine afterwards, I don’t believe I did)

Bring up the bluetooth interface:

sudo hciconfig hci0 up

Run a Low Energy scan to find the address of your RFduino:

sudo hcitool lescan

Should elicit results similar to this:
EA:BA:20:48:37:80 (unknown)
88:D8:CD:08:12:FA (unknown)
99:D8:CD:10:66:FA (unknown)
DD:AF:13:17:23:80 RFduino

Select and copy the MAC address given for the RFduino on your system.

(I have no idea why you have to scan as root, someone please leave a comment if you do, and if theres a way to run as a normal user…groups?)

 

Read the temperature attribute from the RFduino using gatttool. Paste your devices MAC address in instead of mine of course.

sudo gatttool –device=DD:AF:13:17:23:80 –interactive
[   ][DD:AF:13:17:23:80][LE]>
[   ][DD:AF:13:17:23:80][LE]> connect
[CON][DD:AF:13:17:23:80]][LE]>char-read-uuid 2221
[CON][DD:AF:13:17:23:80][LE]>
handle: 0x000e value: 00 00 a8 41 00 00 00 00 00 00 00 00
[CON][DD:AF:13:17:23:80][LE]>disconnect
[   ][DD:AF:13:17:23:80][LE]>quit

Now from that exchange with the RFduino, we have gained a long hexadecimal string.
From a post on the RFduino forum, I learned that the value we want is always after the ’00 00′ string (in bold above).
This is the temperature read from the RFduino’s internal sensor * 8.
So we need to convert this to Decimal and divide by eight to retrieve the temperature value in celsius (American readers, why aren’t you on SI units yet? :P).

Convert the hex value to decimal temperature

decimal=$((0xa8))
decimal=$(($decimal/8))
echo $decimal
21

The above method returns an integer value. This is because Bash has limitations working with numbers that are not whole (decimals).
Workarounds use the command bc to interpret string inputs as decimal numbers. I think there is a method to define variable types in bash, but I didn’t get very far with this.

My attitude is that once you start hitting the limitations of a shell scripting language, it’s time to migrate to a proper programming/interpreted language (at least python).
Spending hours and using multitudes of additional programs make it work is often pointless.

Just think, if you had to run the script on a embedded system without most of those commands, wouldn’t it just be better to do it in C++?

 

Next time:

Now that I’ve successfully read the values being sent by the RFDuino I need to figure out how to automate the process – in non-interactive mode.

These commands do the same thing but respond differently

sudo gatttool -b [MAC] –char-read  –handle=0x000e
Characteristic value/descriptor: 00 00 a8 41 00 00 00 00 00 00 00 00

sudo gatttool -b [MAC] –char-read –uuid=2221
handle: 0x000e   value: 00 00 a8 41 00 00 00 00 00 00 00 00

Simple bash script to read temperature in celsius (accuracy is lost here as the decimal is converted to an integer)

#!/bin/bash
stringZ=$(gatttool -b [MAC] –char-read  –handle=0x000e)
stringZ=${stringZ:39:2}
hex=$((0x$stringZ))
decimal=$(($hex/8))
echo $decimal
exit

don’t forget:
chmod +x [whatever you called the script]

and run it as root:
sudo [whatever you called the script]

Afterword:

I won’t pretend to understand the naming conventions of Bluetooth 4.0/LE.
I don’t! I spent a whole day looking into it and could not find a single source that easily explained the structure, naming, and profiles. If someone has seen something good, please post in the comments!

It’s frustratingly close, like I can see there is a neat logic to it, but I just don’t care to spend any more time trying to figure it out, when all I want to do is use it. This does make it slightly more hacky and less neat and quick of course, but that’s life!

 

Sources:

gattool commands to read the sensor:
Bluetooth Low Energy: Read-Write to Sensor Network from Raspberry Pi

howto convert hex to decimal on the command line:
http://linuxcommando.blogspot.co.uk/2008/04/quick-hex-decimal-conversion-using-cli.html

howto do calculations on the command line:
http://www.tldp.org/LDP/abs/html/arithexp.html

Hacked up way of using gatttool non-interactively, using ncurses and a python script:
http://thomasolson.com/PROJECTS/BLE/RFduino/LINUX/

Bash string manipulation:
http://www.thegeekstuff.com/2010/07/bash-string-manipulation/

Others:

http://joost.damad.be/2013/08/experiments-with-bluetooth-low-energy.html

Android budgeting apps

So I’m trying to find a decent android application to help me budget and figure out where my cash goes.

Requirements / what I want it to do:
Receipt scanner / photo of item bought
At least the ability to enter in the total for each receipt
Ability to OCR the scanned receipt to scrape information (again, at least the bill)
Ability to tag / categorise spends

So far I have Money Owl:

image

And also wave receipts
image

wave has the ability to scan and OCR read the totals from receipts . it does this via the cloud, so it does require a data connection. At present it is FREE for personal use.

Id definitely recommend this app. Most 21st century way of capturing where your money is going. Just what I was looking for!

Apparently, google drive has the ability to ‘scan’ receipts. I have to try this one out!

Linux Beep Music #2

So I just noticed that our beep music post has become popular enough to have been reddited, and used as a source in a video!

So thanks for that guys and girls of the interwebs! I almost feel appreciated!

In recognition, I thought I’d list our referrers, and possibly some beep music. Maybe we can become a repository for this kind of stuff.

 

#0 So you have a shiny new Raspberry Pi, and you want to make some noise?

You can in fact make beep music on the raspberry Pi!
All you need is a Piezo thingy (transducer or beeper or whatever it’s called)
(Available from Maplin in the UK: 3v ceramic Piezo transducer only £1.29 as of 2/2/14!!)


Thanks to Kronalias (is that a linux reference there? `alias kron=’crontab’`)?

 

#1 Here’s a video from smeezekitty on youtube:

From the comments: running beep music on a 486!

Yep that’s code from our last post being run!

Reminds me of this old beastie of JT’s:

IBM Thinkpad 380z

Still working in 2014! I am in fact a IBM Thinkpad 380z with a PII processor, 64mb of ram, and most inexplicably a 40GB hard drive. I also have a very loud beeper which will hurt your ear if you are next to me when it goes off. Lucky i have a volume knob.

I will definetely try all the beep codes that have been submitted in the comments so far on this awesome machine, and I promise to make a video of it if I get three more beep-songs to add to our beep music tracks. (I might even make an Album…on tape cassette [if i can find one haha], or maybe just put it onto a floppy disk if and mail it to you guys [if i can find one that works ROTFL])

#2 The redditors of the web have heard of us!

It must be true if there’s a screencap of it!

Popularity!! and i'm certainly condering repository of beep music. Probably a wiki though.

Popularity!!
and i’m certainly condering repository of beep music. Probably a wiki though.

#3 We were linked to on Stackoverflow

I can’t be figged to give you that link or clip an image, so here’s a link to another source posted.

Ubuntuforums: What is your favourite ‘beep’ song?

#4 Bleep music in the Blogosphere: Blog post: Davidak is playing with beep music

I have no idea what he’s playing as my laptop speakers are bust! I can’t be held responsible it’s rude, honest!

Musik mit BEEP (Linux) from davidak on Vimeo.

 

#5 Axel Foley – Beverly Hills cop

Credit to ? Øyvind Hvidsten at Bolt Blog for his post – fun with beep
He has both the Axel Foley theme tune (listed below) and also Beethoven’s Für Elise.

beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 1047-l 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460

 

#6 And finally, some beep music. From the comments on Linux Beep Music, ‘Easy Mitrontix Billing’

(I have no idea how that passed the spam filter, but I’m glad it did).
He submitted the following, including note frequencies – now I can translate any song!!!
Maybe I’ll write a bash script to automatically do that given the notes interactively.

“Mission Impossible Song.

#Note Frequency
C=261.6
C1=277.2
D=293.7
D1=311.1
E=329.6
F=349.2
F1=370.0
G=392.0
G1=415.3
A=440.0
A1=466.2
B=493.9
C2=523.2

C22=554.3
D2=587.33
D12=622.2
E2=659.26
F2=698.46
F22=739.99
G2=783.99
G22=830.61
A2=880.00
A22=932.33
B2=987.77
C3=1046.50

#First

beep -f $G -l 250
beep -f $G -l 500
beep -f $G -l 250
beep -f $G -l 250

beep -f $A1 -l 250
beep -f $C -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $F -l 250
beep -f $F1 -l 250
beep -f $G -l 500
beep -f 10 -l 500

beep -f $G -l 250
beep -f $G -l 500
beep -f $G -l 250
beep -f $G -l 250

beep -f $A1 -l 250
beep -f $C -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $G -l 250
beep -f $F -l 250
beep -f $F1 -l 250
beep -f $G -l 500
beep -f 10 -l 500

#end”

Conclusion:

(i’ve been writing too many technical document recently!)

I couldn’t find Chop Suey in beep music, but with the work done in #3, it shouldn’t be too hard to translate!

Next time I’ll have to compose something entirely new!!

 

 

[UPDATED] G Projects

My friends Pi, after repairs to the sd card holder.

[purple means updated on Sunday Feb 2nd 2014]

My pi in its latest incarnation:
image

The other day a good friend and fellow geek of mine acquaintance was reminding me that it’s not possible to do everything we want to do, and actually harmful to try and shoehorn everything in. Someone told him this, and he passed it along.

It got me thinking (and googling – what doesn’t these days?)
Are you a Perfectionist? Do you find yourself telling yourself this: ‘I can’t relax till i get it all done’?

If so we are kindred spirits!

Anyway, here’s all the projects that I’d like to complete:

Raspberry Pi

WebUI

V2 of the User interface.

  • Prettify
    • Layout does not work in IE9. – Who cares?! No one likes IE9 anyway!
    • Embedd/add link to xively
      • Can we get image of all feeds on one graph?
      • Change layout to 4 column 3 row to add this?
        • enough space?
    • apply css to sockets page
    • get that annoying favicon to work! (maybe it doesn’t like the filetype?
      • save as gif/make it smaller and reupp/change mimetype
  • Test – new squeezeplayer page needs testing
  • Develop ?python? code to allow setting of Home Automation parameters
    • E.g. on/off times per DOW

Pressure sensor:

  • Write Exponential moving average code to smooth the values. I found the code somewhere…refind and figure out
    how to store the data to be ema’d
    variable – can bash hold arrays?

    rrdtool – effort bruv
    use xively api to read old datapoints – ditto
  • Descriptive weather prediction – e.g. ‘rain coming’ [Just today it rained, so I have worked out the min time resolution needed to predict/try and deduce if it is raining]
  • Absolute Humidity calculations – output moisture density of air to see how much has been added(RH% is not a good measure of the amount of water bc it’s relative to temperature, and I want to find how wet the air is!)
  • Solder to Slice of Pi board

i2c LCD Screen:

  • Connect to Pi on fly lead (attach to pibox?)
  • Output status – e.g. current sensor data
  • Output interpreted status – e.g. ‘it’s getting hot in here’, Nice weather coming etc
  • Implement a simple UI with pushbuttons ->gpio
    I actually designed the UI while in a meeting!
    functions like shutdown, remote power control, network configuration/join wifi,slimclient/server control?

RFM12b 433mhz wireless transceiver module:

  • Connect to pi (on fly lead? bad reception has been problematic on the transceiver according to susa.net
  • Implement data decoding from CurrentCost transmitter
  • Control remote sockets ala home automation

Streaming Music Server – Plug and play, wireless capable – Using Squeezebox/LogitechMediaServer

Remit: To be able to rock up somewhere, plug in power, and then play music wirelessly from my collection
(Extra: stream from the internet if connection available)

  • Stream music from Pi
  • Control Music from Nook using Squeezebox Android app
  • Stream music to my Hauppage MediaMVP (wirelessly [using WEP])

Progress: 

  • Got MediaMVP to boot from Pi when pi was using wired network
    • tftpd-hpa (modify to port 16869)
    • compiled mvprelay.c 
    • wrote init.d script for mvprelay to startup and point to ip address of pi
      • Need to find a way of dynamically setting ip
      • (altho when setup on wifi, up of pi will be statically fixed)
    • downloaded mvpmc image to boot on the MVP
    • wrote a dongle.bin.config file for the MVP to load it’s config at boot and start the squeezebox ‘mclient’
      • this should enable headless playback, so won’t need a tv screen for Video
    • made a dongle.bin.ver file using dd
    • booted it

Issues/todo: 

It wouldn’t boot over the network bridge. It talked to mvprelay using UDP; tftpd-hpa gave ‘ACK connection refused, could not read’ weird errors when it tried to download the files.
My laptop however could suck the files up no problem. Weirdness!

Todo: investigate settings on Bridge AP looking at what happens to BC packets. And also check DHCP relay settings.
I think they might be flooding the network somewhat.

  1. Setup Pi hostapd: Configure the dhcpd config file
  2. Repair the wifi dongle: The usb socket is no longer solidly connected!! Need to dremmel the plastic off and resolder, then melt and reattach the plastic, (it’s meltable) but a lot tighter this time!
  3. Get the donle working ok in debian/raspbian. (haha, good luck)

 

I can’t do it all………………….

at least not all today!

Actually, part of me likes it going slowly (certainly a surprise to the rest of me!). Time to mull things over, make decisions, come up with sketched designs and sometimes even pseudocode/real code.

Seems to have it’s advantages not trying to do everything right now at least haha.

On that note, bed time! [ 2:03 am this time]

[UPDATED]Useful Firefox addons

2009 vs 2013 Useful Firefox [Browser] Addons

Originally I wasn’t really into add ins then i got into trying loads of add ins and eventuallyi have whittled it back to the few firm favourites/favorites for the americans.
[i was going to del fav bit but then I noticed that my firefox dictionary is still set to US because of it (which is what happened back in 2009 too haha)

ubiquity beta addon for firefox – run, send email, new calendar event, update twitter.
have not tried this yet. Read about it here:
http://www.ghacks.net/2008/08/26/mozilla-labs-ubiquity-is-a-firefox-killer-application/
or at mozzy labs: http://labs.mozilla.com/2008/08/introducing-ubiquity/
[2014 Ubiquity has died, but you can still install the addon (download using the bitbucket link)]: https://addons.mozilla.org/en-US/firefox/addon/mozilla-labs-ubiquity/

Favourites/remember this website

Tag sifter

Taboo – one click remember this, timeline

Readitlaterlist.com Now Getpocket.com – my cuurent fav  [2014: Still using it today]

Foxmarks

Tabs

Duplicate tab

Tab kit [Plus]- organizer of tabs

[2014 I haven’t used this in a while]

[New for 2013: Firefox: TooManyTabs                                            https://addons.mozilla.org/en-US/firefox/addon/toomanytabs-saves-your-memory]

Testing this one right now!

[2014 Tab Manager]

Awesome enables Tabs of Tabs (another tab bar above so you can group tabs into projects, subjects etc)
however not available for latest firefox and the other versions are buggy/not working. 🙁

[New for 2014: Chrome: OneTab                           http://www.one-tab.com/ ]                           

There really is one tab to rule them all!Fold all open tabs down to one and free all that memory. Edit what’s ‘open’, leave it just as a single tab, or reopen (one by one or all).

I NEED to test this one when I switch back to Chrome!

Session Manager – protector and saver of tabs! [2014: integrated session managers are pretty comprehensive now!]

 

Download Them All

[2014:Still very useful last time I used it a few years ago, but internet speeds have increased monumentally since 2009, so much so that download managers are not needed for that anymore. It’s still a brilliant tool for downloading all images from a page for example]

Mythubuntu 12.04 and Radeon 9200

Hi all, I was having trouble installing Mythubuntu 12.04 on an old PC I had lying around.
Mythubuntu is based on Ubuntu 12.04 so if you’re struggling with the ATI Radeon 9200 on there these steps should help.

(Since I have a Hauppuage Nova-T 500 dual freeview pci card from old projects, and a 2tb drive from new ones, I wanted to see about recording some films!)

Basically, when booting it would come up with a garbled, black or blank screen.

If this happens during the livecd boot, preventing you from installing, when you see the logo:

Logo that appears when first booting ubuntu from livecd.

Logo that appears when first booting ubuntu from livecd.

Hit enter, and F6 for other options, select nomodeset, hit enter to enable then Escape and enter to boot.
If operating from a laptop, you might want to try noapic too.

 

In the latest grub setup – grub 2 – the boot menu is hidden, making it near impossible to access.
Might make it look pretty but is major frustrating for troubleshooting!
The script /boot/grub/grub.cfg it uses is supposed to boot in textmode if it has failed to boot, but this does not work.

The fix:

Note: you can login, type

sudo su

and then skip typing sudo with every command below (it gets quite annoying I know!)

  1. To access the grub bootmenu, hold down shift – after all your pc’s bios and add-on cards bios screens have disappeared and until it pops up – it takes a while to appear!
  2. To access the console – textmode, insert the word text and remove ‘splash quiet’ from the kernel options,
    also insert the word nomodeset
    then press F10 or Ctrl-C to boot with the new settings.
  3. Connect to the internet, if using Wired connection you may need to connect (hopefully you connected ok during the install)

    sudo nmcli -p con up id “Wired connection 1”

    If that doesn’t work check your wireless connections names with and edit the above command appropriately

    nmcli con

  4. Install xserver-xorg-video-ati

    sudo apt-get install xserver-xorg-video-ati

    (don’t freak out when you see ‘Removing Mythubuntu-desktop’ it seems to come right in the end.

  5. Create a new link for the X server
    (Not sure why this breaks after the upgrade but it won’t work without this step!!)

    sudo ln /usr/bin/Xorg /usr/bin/X

  6. Edit the default bootmenu script
    Add nomodeset to the default grub bootmenu

    sudo nano /etc/default/grub.cfg

    Change this line near the top:

    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
    to
    GRUB_CMDLINE_LINUX_DEFAULT=”nomodeset”
    #”quiet splash”

    The # tells it to ignore this bit, it’s a backup so that we can make it quiet again later. You’ll notice text streaming by as the system boots instead of the cute (Myth) Ubuntu …. logo

    Ctrl-X to exit, type s and Return to save

  7. Update grub

    sudo update-grub

  8. Reboot and Revel in the shinyness

    sudo reboot

I actually ran this command to to start the windows manager, (and I haven’t tried rebooting yet, shhh)

sudo start lightdm

If you have any extra trouble, comment below, check the ubuntu forums and google.
I managed to work this out on my own as I couldn’t find the answer!

 

I also created a script to set the resolution of lightdm at boot, following the guide here:
LightDM Resolution

This did not work as when I started lightdm, the resolution was set higher than I’d set in lightdm, so I don’t think this was part of the fix.
Thankfully it was within my monitors capabilities. I think I set the output name wrong.
I need to figure out the display outputs are available but couldn’t query it from the command line without x running, which seems kinda silly.

Hope this has been helpful!

USB Key reminder script

Here’s something for all you windows network admins out there.
(I apologize in advance to Johnathon’s linux followers)

Here’s a little script I wrote to be used as a group policy logoff script to remind users to remove their USB memory sticks/keys when logging off.

I wrote it while working in IT Support for a High School, to help out our IT teachers and ourselves as we were weekly gathering a collection of various USB Memory Sticks and memory keys (and since i was the one trying to reunite them with their owners each week.)

It’s written in VBS so it’s perfect for using as a group policy in active directory on say a Windows 2003 server/XP network. I haven’t tried it on Vista, Windows 7, or Server 2008 because I wasn’t using those technologies at the time, but it will most likely work with Vista and Windows 7 when deployed from a 2k3 or 2k8 server.

It detects removable drives (the type it looks for can be modified) that are connected and won’t pop-up without a drive detected.

If a USB drive is connected, it pops up a dialog reminding the user to take their memory stick with them and then auto-closes after a few seconds (as not to hang the logoff procedure).

I hope this is usefull to someone. If you use it, please leave me a comment.
[LICENCE GPL? NC-SA?]Also, feel free to modify and redistribute this script, but please don’t remove my details, as I’d like to know if it gets used and of any usefull additions others can think of.

[code]

‘ Script to display a list of drives connected to this machine
‘ http://authors.aspalliance.com/brettb/VBScriptDrivesCollection.asp
‘ MODIFIED to detect only removable drive. GTinsley 2008 @ Wallington County Grammar School.
‘  May cause false positives on some SATA ‘puters.
‘  Tested working on ‘puters with card readers.

Set FileSystemObject = CreateObject(“Scripting.FileSystemObject”) ‘Create a filesystem object
Set Drives = FileSystemObject.Drives ‘Create a drives collection

‘ Step through the drive collection, and get both the drive letter and the drive type.
‘ There are 6 distinct types of drive:
‘Select Case DriveType
‘   Case “0” DriveType = “Unknown type of drive”
‘   Case “1” DriveType = “Removable drive”
‘   Case “2” DriveType = “Fixed drive”
‘   Case “3” DriveType = “Network drive”
‘   Case “4” DriveType = “CD-ROM drive”
‘   Case “5” DriveType = “RAM Disk”
‘End Select

For Each DiskDrive in Drives

DriveLetter = DiskDrive.DriveLetter
DriveType = DiskDrive.DriveType

‘ Check for a removable drive connected that:
‘     Is not the drive letter A B or C
‘    Folder exists (proves the drive exists)
IF Drivetype = “1” and not driveletter = “C” and not driveletter = “A” and not driveletter = “B” and FileSystemObject.FolderExists(driveletter & “:\”) then

‘ Old method. Waits until user has clicked OK before logoff completes.
‘WScript.Echo “The removable disk drive ” & DriveLetter & ” is a still connected. Don’t forget your USB drive!”

‘ New method waits 5 seconds then logs off.

time_out = 5      ‘ wait max. 5 seconds
title = “Forgetting something?”
button = vbOKonly  ‘ vbOKOnly
message = “The Removable Disk (” & DriveLetter & “:\) is a still connected. Don’t forget your USB drive!”

Set objWSH = WScript.CreateObject(“Wscript.Shell”)     ‘ create object
objWSH.Popup message, time_out, title, buttons     ‘ popup
end if
Next

‘ Clear objects and collections
Set Drives = nothing
Set FileSystemObject = nothing

[/code]

Web 3.0

Web 3.0 is coming soon…

Linking
IMHO the Web 3.0 revolution will consist of websites and web apps from the 2.0 era becoming closer.
I think that it will become easier to link together content across web sites to create new forms of content.

In the Web 2.0 revolution was helped by blogs with authors linking together information in posts. (This I might add has been very useful to combat the slew of dodgy sites that  sit high in Google’s results but just spit back the search terms as results, nullifying your search. Nowadays I find use ‘blog’ in search terms, especially when looking for reviews.)

I can’t wait until someone puts together a really good way of visualizing all this data. As the internet grows the importance of being able to sift through the available data and collate it into collections on particular topics is becoming paramount.

I have been looking out for a system to visualize my internet links in some kind of subject oriented way with a timeline / time axis. So far the only thing that comes close is Basket Notes for KDE (screenshots). If only that were a web app! (if i had the motivation and focus, I’d turn my meagre php programming skills to that task myself, but alas like my sketched design for a social networking site written in my design book pre the advent of facebook, I think I’ll leave it to someone else!)

I guess the closest web based similar system (I’m aware of) currently in operation is Wikipedia!

Retrieval
Look at the useful plugin Ubiquity, and the fantastically useful cross platform application and search launcher, Launchy for example. Both of  these are designed to give us quicker access to and search abilities for our data.

Workflow
Making computers integrate seamlessley to our lives rather than inturpting them.
Today the focus of computing is shifting from _ to the workflow -how we get things done. I think this is essential because your average end user doesn’t care how things get done, just as long as they can get done.

Digital Photographers often use a prescribed workflow when working on digital photos – ‘developing them’ as it were to bring out the best. PCPro Magazine suggests 1. Levels and Curves then 2. Colour adjustment followed by Sharpening. But I’m talking more than just the best sequence of events to achieve the best quality output. I’m talking about the process itself.

Our brains think sequentially, each action is broken down step by step and steps performed one after another. A break in our concentration, or ‘flow’ impacts our effectiveness. This is especially true for people with ADHD (like me). Reducing the need for context switching.

“Consider that it takes 15 minutes for a developer to enter a state of flow.  If you were to interrupt a developer to ask a question and it takes five minutes for them to answer, it will take a further 15 minutes for them to regain that state of flow, resulting in a 20 minute loss of productivity. Clearly, if a developer is prevented from flowing several times during the day their work rate declines substantially. “

(Retrieved from http://softwarenation.blogspot.com/2009/01/importance-of.html)

For example, downloading pictures from your digital camera and uploading them to facebook. Recently I’ve been using ‘Windows Live Photo Gallery’. Ugh, I know, but the point is it that Vista offered it to me, and it was an easy to find and add plugin that allows me to upload direct to facebook, where most of my photos end up these days.

To download the pictures I simply flip out the SD card from my camera, and insert it into my laptop (useful laptop buying advice)’s SD card slot

And that’s the point, people will take the path of least resistance/effort.

Path of least effort Principle
According to my observations
like people walking down the high street striving to avoid collision with other pedestrians, my observation leads me to believe that everybody is operating on the principle of least effort, where the person you are approaching will attempt to take a path that will need the least amount of diversion from their original path in order to avoid collision, while you yourself will attempt to do the same thing.

how does this come back to web 3.0?

How many clicks does it take while searching for some long forgotten but relevant piece of information before a user will get bored and move on? [research advertising, google hotspots, number of clicks] Could it be as low as 3, and as high as 8?

Unified User Interface
Facebook for example. I was trying to find my note on laptops to include a link in this article, but alas my click on Notes from the home page only brought up a ‘feed’ of Notes. Where I ask is the Filter options that preside on everyone’s profiles? Why can’t I select ‘Just Garreth’ here too?

If something like that is useful, it should also be Unified, that is available everywhere!

In the time it took me to discover the ‘workflow’ to access my notes in this ‘fast/bitesize/information obsessed’ age my poor overloaded ADHD (video: ADHD impact on life) brain might easily have become bored frustrated and more importantly distracted and moved on…

Availability
Cloud computing and Rich Web Applications (Blog: Google and Rich Web Application)

Organisation of Data
TOC

Concise
It’s an inverse law – As our attention spans decrease, so the conciseness of the data we consume must increase ceterus paribus.

Why do my spidey senses tell me facebook, not google may be the winner in the Web 3.0 revolution?

  1. Reduce the need for context switching
  2. Make data transfer between devices, programs and operating systems simpler and more unified
  3. Make data easier to locate and retrieve
  4. Make locating an open program/context switching easier and more natural – in doing so reducing the impact on flow by automatically knowing how to get back to the other program/where it is.
  5. Design and create more natural interfaces – e.g the Apple’s iPhone and iTouch.
  6. Consider how context switching works in our heads and apply this to UI.
  7. Work on unified User Interfaces as not to interupt flow

What do you think? Leave some comments of your vision, and what you think of my ideas.