A Universe in Fireworks, originally uploaded by johnflan.
A Universe in Fireworks, originally uploaded by johnflan.
After seeing the 37signals.com homepage evolution blog post published last week, I thought it would be interesting to record the evolution of some of my own sites. For this project I used wkhtmltoimage which is a fork of wkhtmltopdf.
wkhtmltoimage runs on the console and renders either a jpg or png of the page. I have limited this to 1000 pixels vertically in order to keep the file sizes down.
Below is the bash script I created to read a list of sites from a file and save them into a directory which is named after the site, with each image been titled with the date and time.
#!/bin/sh
FILENAME="sites.txt"
while read URL; do
#generate the current date + time
DATE=`date +%d_%m_%y_%H%M`
OPTIONS="--height 1000 --crop-h 1000 --quality 80"
#if the directory does not exist create it
if [ ! -d "$URL" ]; then
mkdir "$URL"
fi
./wkhtmltoimage-amd64 $OPTIONS http://$URL ./$URL/$DATE.png
done < "$FILENAME"
Recently I became aware of how fractals are used in random terrain generation which is historically used to generate realistic looking backgrounds on the fly, particularly in older games. Below is a video example of such a terrain.
Generating Random Fractal Terrain – Paul’s article is a little old but walks through the algorithms demonstrating their results in a well written piece.
What if… your social network was not defined by your on-line activity, but was generated from the people you meet daily, taking into account how regularly you meet, the time of day, location and duration.
As surprising as it sounds the technology for a network of this type exists today, not in some shady lab run by Google, Facebook or even Microsoft, but in our pockets.
Recently I toyed a little with the Facebook Open Graph, and since then I have been considering how these Object ID’s map to the real world. Everything in the Open Graph is an object in the software development sense and Object ID’s are used to represent individual people, businesses, events, places and activities.
So how can we exchange these ID’s quickly and invisibly?
A number of methods exist today to integrate this functionality into say the Android or iPhone Facebook applications. For example a handset could broadcast a Wi-Fi SSID of “FB-ID:XXXXXXXX” where X’s would represent the users Facebook Object ID. Bluetooth radios could also be utilised to transmit and receive this information, offering an advantage of a shorter range (10m or so) enabling the software to understand that this person was in close physical proximity.
Concurrently, your device on say a thirty-second interval could perform a scan looking for other devices broadcasting an SSID with a “FB-ID:” prefix. With this data the software can trivially discover if the detected Object ID’s around you resolve to existing Facebook friends. If they turnout to be valid object references then record the duration, the location (from GPS) and time of the meeting, and if the Object ID’s dont match existing friends store them for later analysis.
We can build systems that can dynamically partition these aquantances into categories like close friends, co-workers, business contacts and others. And importantly, manage how these relationships change over time representing your current real life social network.
Whether or not current wireless technologies are up to this task or if users would be happy with this level of invasion remain to be seen, but I am confident that this is how the Facebook of tomorrow will function.
Thoughts or comments are appreciated.
It seems that the Android debugger (adb) has problems on Ubuntu when trying to connect to a physical device, a Nexus One is this case. The issue is relating to user permissions with the debugger being unable to access the usb device. I have seen a number of solutions for this with the most common being simply killing the adb process and restarting it as root.
cd android-sdk-linux_x86/platform-tools adb kill-server sudo adb start-server adb devices
But unfortunately this was not sufficient to resolve the problem for my configuration and also it would be necessary to restart adb on every system restart. A more permanent solution appears to be adding a rule to udev to permit usage of the device.
sudo gedit /etc/udev/rules.d/51-android.rules
and paste the following lines
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE:="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE:="0666"
The 0bb4 in the idVendor property identifies the device (Nexus One), you can list the currently connected usb devices on your machine running the command lsusb, from here you will be able to identify the vendor id for your android device.
sudo restart udev cd android-sdk-linux_x86/platform-tools ./adb kill-server ./adb start-server ./adb devices
Even with this second solution be sure to physically disconnect and reconnect the handset.