Saturday, December 29, 2007

rounded corners anyone?

You may notice my new rounded corners.

Well in true fashion, they're CSS corners.

Instead of loading up one of the many css corner library, i decided to take the opportunity to write my own. The other plus is that as this is a blogger account, i have no real file storage, so linking against the jquery lib makes way more sense.


//Corner rounding function
roundCorners = function( pElement, pSize, pForeground, pBackground ){
//Logging
/*
console.log( 'Corner size ' + pSize);
console.log( 'Fore color ' + pForeground );
console.log( 'Back color ' + pBackground );
*/
if( pBackground.match('none') != null ){
pBackground = 'transparent';
//console.log('transparent background');
}

//constants
containerStr = '<div class="cornerContainer" style="margin:0px 0px;height:auto;background:'+ pBackground +'"></div>';
cornerAttributesStr = 'border:none;overflow:hidden;height:1px;background-color:'+ pForeground +';';


//Reset the parent element
$( pElement).parent().css('padding','none');

//Insert container Div and set background color
$(pElement).prepend( containerStr );
$(pElement).append( containerStr );

for(i=1;i < pSize; i++){
$('div.cornerContainer').eq(0).append('<div style="' + cornerAttributesStr + 'margin: 0 '+ Math.round(pSize/i) +'pt"></div>');
//console.log('Insert element ' + pSize/i);
}

for(i=pSize; i > 1; i--){
$('div.cornerContainer').eq(1).append('<div style="' + cornerAttributesStr + 'margin: 0 '+ Math.round(pSize/i) +'pt"></div>');
}

}


Currently it doesn't support chaining, however according to my understanding, you just have to encapsulated within a jquery.extend, and change the passed object references call and your good to go.

Tuesday, December 25, 2007

New Design

Just a quick note to say here is the new design. Nice and light weight, no shiny stuff (yet). I'll add in some javascript nuts and bolts later, but now i have to set the table for christmas dinner. Btw, this took me like 3 hours, not too bad considering i have to cut and paste into the online editor.

Merry Christmas

Saturday, December 22, 2007

And to think people think i waste my time

I've been hitting the Dev Trail pretty hard over the last week or so. My fringe Cocoa/Objective-C skills are getting better each day. To give you an idea of what my Programming space looks like here's a screenshot.
The Work zone
To summerize, i'm in the middle of linking the mysql-cocoa framework into my project. Now i have hit a slight snag on that front. The snag being that it looks like i can't sell the app.

Why? Because the use of the GPL'd open source framework means that i have to release the source code. Now for a long time, i have considered releasing an application that one has to pay for, but is also open source. However with this kinda of app, my target market, most likely already has xcode installed, and would find it trivial to download the source and hit 'build'.

I'm gonna email the FSF, and find out what they have to say. But i think i might try and release this as an open source application. I love open source as much as the next guy, so maybe this is the way it should go down.

In other news i've finally popped for a Western digital 250GB notebook hard drive. After some stupidity (and a trip to Eastleigh) on my part it's churning away inside my Macbook. The old drive is now a Time machine Drive, speaking of time machine ...

Interface design at it's wildest

It's a nutty excuse for an interface, but it really is fantastic. Pre-Time Machine, i used a backup script i 'wrote' in automator, however it wasn't as flash as this. However it did zip my documents folder from almost 2GB to 700MB which always impressed me, or at least one side of me.

Well it's almost the end of another year and this blog has seen quite a few annual transitions now, 4 to be correct. In keeping with RSS tradition i'll have the usual wrap up posts, plus a 4/5 redesign. Hopefully this time done properly with more ajax than you can shake a stick at, and a cleaner ui, after all i'm a professional now ........



Quote of the Day

Caption

Sunday, December 16, 2007

One byte

Not sure what all the moaning was about, but i must say i like the look of the new iplayer from the bbc. It's not a big slab of flash. Nice ajax like effects. Works in safari. A nice job i would say overall.

I doubt it works for those outside these fair shores, but if it does work i would recommend.

Btw this is post 255, hence the title.

Merry Christmas

Wednesday, December 12, 2007

Reg Exp

In case you ever need them, here are a couple of regular expressions for dealing with dates.

For dates like this: December 19, 2008

[A-z]{3,8}.[0-9]{1,2}.{1,2}[0-9]{4}


For dates like this: 05/03/87

[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2}


They form part of my fantastic plan to .... write loads of regular expressions ^_^

Tuesday, November 13, 2007

Google's Android: My two cents

I love it. At least from a developers point of view. Now the real question is, can they get the devices with the right form factors to really complete with the big boys, MS, Symbian, and now Apple.

With HTC behind them, there is no reason why they can't. So why does a tech skeptic like me like this FOB (Fresh off the boat) platform so much. Well here's why

  • SDK for OS X, Linux & Windows (Take note Apple!)
  • It uses Java as the language of choice.
  • Each app runs in VM, they borrowed an idea from palm os(kinda)
  • They provided a C Api
  • XML GUI layouts, nice and open
  • The Platform is wide open
If you wanna look at this from a web 2.0 mashup point of view, its like the following

Microsoft's level developer support + Googles Open-ness + Apples inovation

Alternatively Lets compare it to it's rivals

Symbian - 'Modern' widely supported Language (Java vs C++).
Microsoft - It doesn't look like it was retrofitted to be used in a phone
Palm - Multiple device makers, means better form factors + it's a brand new os
Apple - It's not a Objective-C only world, and locked down like a [insert word of choice]
Others - It's got traction, and the developer community behind it, we all love google.

I'm getting to work on developing some apps for this platform. As i said it's got my support, it's solid under the hood, and i look forward to queuing for my first device. 

BTW i hate the iphone if anyone is wondering.


Quote of the Day
Red Light District

Some are more hungry than others...

Tuesday, November 06, 2007

Quick and Dirty Leopard Dock Image replacement script

This one is for all the dock hackers out there. I'm gonna try and roll this into a application during my lectures today ^_^

Cut and paste the script into a text editor of your choice, and save it as "dockSwitcher.sh"

To use this save your new dock images on the desktop and then run the script. Beware i haven't tested as i A. Use the non-glass dock, and B. didn't have time. So use with caution.


#!/bin/bash
## Quick and dirty Dock Image Replacement script
## Jonathan Dalrymple
## November 6, 2007

##Root Checking
## Thanks to
## http://blog.mecworks.com/articles/2006/02/23/bash-scripting-tip-running-a-script-as-root/
CMDLN_ARGS="$@" # Command line arguments for this script
export CMDLN_ARGS

# Run this script as root if not already.
chk_root () {

if [ ! $( id -u ) -eq 0 ]; then
echo "Please enter root's password."
exec su -c "${0} ${CMDLN_ARGS}" # Call this prog as root
exit ${?} # sice we're 'execing' above, we wont reach this exit
# unless something goes wrong.
fi

}

# Check if user is root
chk_root

##Back up dock
cp /System/Library/CoreServices/Dock.app ~/Dock.backup.app

##Remove the old files
rm /System/Library/CoreServices/Dock.app/Contents/Resources/scurve-l.png

rm /System/Library/CoreServices/Dock.app/Contents/Resources/scurve-m.png

rm /System/Library/CoreServices/Dock.app/Contents/Resources/scurve-sm.png

rm /System/Library/CoreServices/Dock.app/Contents/Resources/scurve-xl.png

##Put in the new files
mv ~/Desktop/scurve-l.png /System/Library/CoreServices/Dock.app/Contents/Resources/

mv ~/Desktop/scurve-m.png /System/Library/CoreServices/Dock.app/Contents/Resources/

mv ~/Desktop/scurve-sm.png /System/Library/CoreServices/Dock.app/Contents/Resources/

mv ~/Desktop/scurve-xl.png /System/Library/CoreServices/Dock.app/Contents/Resources/

##Remove dock images from desktop
rm ~/Desktop/scurve-l.png

rm ~/Desktop/scurve-m.png

rm ~/Desktop/scurve-sm.png

rm ~/Desktop/scurve-xl.png

##
killall Dock


Monday, November 05, 2007

Leopard Hacking : Front Row

Thanks to my coffee, i can't seem to sleep. So to pass the time i decided to do some more work on a new brain wave i just had this evening.

It centers around front row. Well actually it had nothing to do with front row, however building on top of front row makes more sense, than starting out from scratch.

Now as you may or may not know, like most of the cool gui stuff on osx front row is a closed environment. Which means it's hacking time. Something i always wanted to play with is a decompiler. Now i'm no Dmitry Grinberg, so assembly doesn't wash with me. Instead i found this little gem.

After a a brief compile it gave me this wonderful output



struct _NSZone;

/*
* File: Movies
* Arch: Intel 80x86 (i386)
*/

@protocol BRMenuListItemProvider
- (long)itemCount;
- (float)heightForRow:(long)fp8;
- (BOOL)rowSelectable:(long)fp8;
- (id)titleForRow:(long)fp8;
- (id)itemForRow:(long)fp8;
@end

@protocol NSObject
- (BOOL)isEqual:(id)fp8;
- (unsigned int)hash;
- (Class)superclass;
- (Class)class;
- (id)self;
- (struct _NSZone *)zone;
- (id)performSelector:(SEL)fp8;
- (id)performSelector:(SEL)fp8 withObject:(id)fp12;
- (id)performSelector:(SEL)fp8 withObject:(id)fp12 withObject:(id)fp16;
- (BOOL)isProxy;
- (BOOL)isKindOfClass:(Class)fp8;
- (BOOL)isMemberOfClass:(Class)fp8;
- (BOOL)conformsToProtocol:(id)fp8;
- (BOOL)respondsToSelector:(SEL)fp8;
- (id)retain;
- (oneway void)release;
- (id)autorelease;
- (unsigned int)retainCount;
- (id)description;
@end

@interface RUIMoviesAppliance : BRAppliance
{
}

+ (id)moduleKey;
- (id)init;
- (void)dealloc;
- (id)moduleIconName;
- (float)moduleIconReflectionOffset;
- (id)moduleName;
- (id)moduleKey;
- (id)applianceController;

@end

@interface RUIMoviesApplianceController : BRMediaMenuController
{
NSArray *_headerRows;
NSMutableArray *_titlesWithUnplayedContent;
RUIMovieFolderCollection *_movieFolderCollection;
BRMovieTrailersProvider *_trailersProvider;
unsigned int _hasLocalMovies:1;
unsigned int _movieTrailersPreviewRequested:1;
unsigned int _movieTrailersSelected:1;
BRDataStore *_dataStore;
Class _msClass;
}

- (id)init;
- (void)dealloc;
- (id)musicStoreBaseType;
- (BOOL)menuDisplaysLeftIcon;
- (void)networkStatusChanged:(id)fp8;
- (BOOL)isVolatile;
- (id)loadModelData;
- (void)refreshControllerForModelUpdate;
- (BOOL)shouldRefreshForUpdateToObject:(id)fp8;
- (long)defaultIndex;
- (void)itemSelected:(long)fp8;
- (void)wasExhumedByPoppingController:(id)fp8;
- (void)wasPushed;
- (void)willBePopped;
- (void)wasPopped;
- (id)previewControlForItem:(long)fp8;
- (BOOL)brEventAction:(id)fp8;

@end

@interface RUIMoviesApplianceController (AsyncNotifications)
- (void)_movieTrailersLoaded:(id)fp8;
- (void)_swapNewController:(id)fp8;
@end

@interface RUIMoviesApplianceController (DataSourceAccess)
- (id)_movieTrailers:(id *)fp8;
@end

@interface RUIMoviesApplianceController (MediaParadeBuilders)
- (id)_moviesFolderParade;
- (id)_movieTrailersParade;
- (id)_stingrayMediaPreview;
@end

@interface RUIMoviesApplianceController (MovieLoading)
- (void)_cacheUnplayedTitles;
- (BOOL)_hasUnplayedMovies;
@end

@interface RUIMoviesApplianceController (MovieSelection)
- (id)_movieSelectedAtIndex:(long)fp8;
@end

@interface RUIMoviesApplianceController (MenuBuilding)
- (id)_buildMovieTrailersMenu;
- (id)_movieTrailersController:(id)fp8;
- (id)_buildMyMoviesMenu;
- (id)_stingrayFrontPageController;
- (id)_headerRows;
@end

@interface RUIMoviesApplianceController (DataProviders)
- (id)itemForRow:(long)fp8;
- (long)itemCount;
- (id)titleForRow:(long)fp8;
- (float)heightForRow:(long)fp8;
- (BOOL)rowSelectable:(long)fp8;
@end

@interface RUISDMovieTrailersController : RUIMovieTrailersController
{
}

- (id)initWithTrailers:(id)fp8;
- (id)previewControlForItem:(long)fp8;
- (id)titleForRow:(long)fp8;
- (long)defaultIndex;
- (id)itemForRow:(long)fp8;
- (long)itemCount;
- (void)itemSelected:(long)fp8;

@end

@interface RUIMovieTrailersController : BRMediaMenuController
{
NSArray *_trailers;
}

- (id)initWithTrailers:(id)fp8;
- (void)dealloc;
- (BOOL)isNetworkDependent;
- (void)itemSelected:(long)fp8;
- (long)itemCount;
- (id)itemForRow:(long)fp8;
- (id)titleForRow:(long)fp8;
- (float)heightForRow:(long)fp8;
- (BOOL)rowSelectable:(long)fp8;
- (id)previewControlForItem:(long)fp8;

@end

@interface RUISDMovieTrailersController (Private)
- (id)_HDMovieTrailers:(id *)fp8;
@end

@interface RUIMovieTrailersController (Private)
- (id)_movieTrailersTitle;
@end

@interface RUIMovieDirectoryController : BRMediaMenuController
{
RUIMovieFolderCollection *_collection;
NSString *_path;
}

- (id)initWithMovieFolderCollection:(id)fp8;
- (void)dealloc;
- (id)moviesForParade;
- (void)itemSelected:(long)fp8;
- (id)previewControlForItem:(long)fp8;
- (id)mediaPreviewMissingMediaType;
- (BOOL)mediaPreviewShouldShowMetadata;
- (BOOL)mediaPreviewShouldShowMetadataImmediately;
- (long)itemCount;
- (id)itemForRow:(long)fp8;
- (id)titleForRow:(long)fp8;
- (float)heightForRow:(long)fp8;
- (BOOL)rowSelectable:(long)fp8;

@end

@interface RUIMovieFolderAsset : BRBaseMediaAsset
{
NSString *_displayName;
NSURL *_mediaURL;
NSString *_folderPath;
BRImage *_posterImage;
BOOL _requestedImage;
}

+ (id)assetForName:(id)fp8 folderPath:(id)fp12 andMediaURL:(id)fp16;
- (void)dealloc;
- (void)setDisplayName:(id)fp8;
- (void)setMediaURL:(id)fp8;
- (void)setMovieFolderPath:(id)fp8;
- (id)assetID;
- (id)title;
- (id)mediaURL;
- (BOOL)hasCoverArt;
- (id)coverArt;
- (id)dateAcquired;
- (id)mediaType;

@end

@interface RUIMovieFolderAsset (ArtLoading)
- (void)_loadImage:(id)fp8;
- (void)_imageLoaded:(id)fp8;
@end

@interface RUIMovieFolderCollection : BRBaseMediaCollection
{
RUIMovieFolderCollection *_parent;
NSString *_displayName;
NSString *_folderPath;
NSArray *_childCollections;
NSArray *_childAssets;
}

+ (id)collectionForName:(id)fp8 folderPath:(id)fp12 andParent:(id)fp16;
- (void)dealloc;
- (void)setParent:(id)fp8;
- (void)setDisplayName:(id)fp8;
- (void)setMovieFolderPath:(id)fp8;
- (id)childCollections;
- (id)parentCollection;
- (id)collectionType;
- (id)collectionID;
- (int)count;
- (id)mediaAssets;
- (id)title;
- (id)titleForSorting;
- (BOOL)hasCoverArt;
- (id)coverArt;
- (BOOL)isLocal;

@end

@interface RUIMovieFolderCollection (Private)
- (void)_generateCollectionChildren;
@end

@interface BRMediaCollectionType (FolderCollectionExtension)
+ (id)folderCollection;
@end

What you see here is the headers/interface & protocol files for all the different classes located within Front rows movies appliance.

If you want to see your own front row app, it's located @ /system/library/coreservices/front row.app

Now i had heard that some good folks over at Awkward TV forums have hacked appliances for the Apple TV which is basically what the new front row on leopard is, however these don't seem to work 'out of the box', and apparently Apple updated this version before the roll out.

Coupled with all the above, i have reason to believe that the new appliances are digitally signed by [chinese] ni cai, Apple.

By reasoning for this, is a did a hex dump (using 0xED) of the appliance executables, and found the following string(s) @ 135535

"Apple Certification Authority1301U*Apple Code Signing Certification Authority"

Now just after typing the above sentence, it dawned on me that this might be for the transactions with the ITMS, for movie trailers, however i checked the settings appliance and found the same thing.

Also i tried deleting the various applications from a running front row, and it handles them gracefully, and also doesn't mind having new ones dropped in. I tried droping in the rss apple tv plugin, however it didn't like it very much.

I'm a programmer, not a hacker so this is about the limit of my skill, especially if it envolves digitally signed apps. I can barely deal with the symbian signed apps, never mind about these ones. If got some ideas or feel like getting dirty and dodging some DMCA takedown notices let me know.

UPDATE

i found this URL above the previous string, http://www.apple.com/appleca/

turns out that the certificate may be freely available, which might make life a tad bit easier.

PS. to any one wanting to warn me for breaking the law, i'm not a US resident ^_^

Wednesday, October 31, 2007

Mobile Web development

In recent months I've seriously considered getting into mobile application development. My platform of choice has been symbian thus far. However yesterday something dawned on me. Most people don't understand that modern phones are miniature computers hiding in pink cases. As such the idea of additional applications is moot. However what everyone is now seeing is that the internet on mobile devices is possible. In this crazy online world of ours that means one thing web 2.0!

So from today, i'm gonna put some fuel into creating mobile web 2.0 applications. I have a vague idea of where i'm going, but only time will tell.

In other news, this is my 250th post, meh.

I'm slowly becoming myself again, best reflected by the fact that i have time to write this monologue!

Plus i got the 24" in the end, Benq fp241. ....

Well until another time




Quote of the Day

Caption

Tuesday, August 07, 2007

Database Table Size Calculations

As a professional Developer, every once in a while you'll need to create a Database, for one reason or another. It's always nice to apply structured thought to your design process and work out your proposed database size before who release it upon the unsuspecting database server.

It's kinda obvious to do, but just in case heres how i do it.

First create your data dictionary. In my case it was for a questionnaire management system, (QMS, might release it as OSS when i'm done).

i wanted to dynamically generate a new table for each questionnaire, so i need to work out the system limits before hand.

first we would have our "user id's"

id - UInt
hostName - 128 byte (unicode 64 character string)
ip addr = 15 bytes (it's ip v6)
assocQuestionnaire = 4 bytes aka 32bit unsigned integer

then depending on the questionnaire you could have upto 32 questions/ comment, (32 columns). These could then store upto 1024 characters so thats basically double in UTF-8, so 2048 bytes, bringing in each row at almost 65Kb, now the company i work for has 40 000 members of staff, so lets assume they all anwser the same questionnaire (Great advertising for me), the database would swell to 2.5 Gb!

Well i think thats sight over kill, so by tweaking the the system to only implement the larger fields when requested by a user, and assuming that they only want one comment field per questionnaire, we get a much more wholesome figure of 100 Mb.

So to summerize the formula is

sum( column types ) * num of rows.

Remember this is only an estimate, and doesn't account for the master tables or relationships or any of that other RDMS goodness. So it's a guide not, E=MC2

Jonathan

Saturday, August 04, 2007

Display Madness

For once i have a little time, which makes a huge change. In the last hour or so i've been exploring my options around getting a new display to help support my Mac lovin life style. However what should be a joy filled ride through the online e-commerce world, is turning out to be a little less simple then i had imagined.

I have a budget of around £600.
My current setup is two 19" @ 2560 * 1024

However there is a major problem with my current setup, My Blackbook only supports one display. However with a little box from matrox it can support two, but at a maximum resolution of 1024 * 768 each or 2048 * 768.

Current i share the setup with my nix box, but that is getting axed (Yes blu-ray is dead/dying) in favor of consolidating all my development onto one physical machine, and running nix, solaris, windows via parallels.

Now normally i would the following choices given the price.

2 x 22" displays (3360 * 1050)
1 x 24" display ( 1920 * 1200)
1 x 27"
1 x 26"
Now two 22's would be nice, not only cause because it's big but it's also a Jay-z song(well in reverse)!

Now based on current machine specs i've actually got three choices
1 x 24" display ( 1920 * 1200)
1 x 27"
1 x 26"

These are all below my current resolution, so maybe it's the machine that needs changing ...

Ok, lets do the math

Macbook pro (legit) £1149 with student discount
2 22" displays £ 500
matrox dual head to go £140

total £1700!

sweet price point, not. What makes it worse, is that i love the macbook's form factor and would hate anything bigger. ie MB pro.

Plus for that price i could get a mac pro which i have often considered and drooled over with phil. (the computer not phil).

The other solution is to build a osx86 machine, however as developer, and with Leopard coming doing all my work on a unsupported, illegal, in-frequently updated, hacked platform strikes me as dumb.

So that leaves the single units

All of which mean i lose about 1/2 million pixels, and a couple of inches.

Heres the price breakdown
24" £430
26" £ 500
27" £ 680

So on price the 24" is a winner models in that range, that have 8bit color panels, good response times, and adjustable stands, and multiple inputs are ...
Dell's 2407wfp
Benq's 241 wp ( HDMI included!)

On the 26"'s there is one that i know of
Acer 2604
It's got a crapy stand, and no Digital inputs, infact it's only got a VGA input

And then there is 27's

Dell 2707wfp

Which is basically the 24" dell with a phat-er panel and no rotation. And a pixel pitch closer to a 19" lcd (0.294 vs 0.3)

Now we consider the pros and cons of the 24 vs 27

1. I have personal issues with spending seven bills on a lcd display, that i don't really need while people starve to death, and go to war over food.
2. The pixel pitch of the 27 is ideal, the high pixel pitch of my 19's is why i sprang for them over the 17"'s.
3. No rotation, how do i show off those cool XGL effects without being able to rotate the display as well!
4. Both give me less working resolution then i have currently.

Conclusion...

I'll wait to see if apple brings out a super notebook next week, that razor thin macbook pro that all mac geeks dream about, and if it's what i want i'll upgrade.

BTW

i recently bought my name (www.jonathandalrymple.com) as well as a couple of domain names for some projects that are in the pipeline.

Thursday, July 19, 2007

CSS research

I'm completely knackered, but research is my life. One of my many clients wanted a semi transparent div. Now i say div, but they just want it to look shiny.

Basically then want an element with appox 20% opacity. Easy right, use a PNG. But that cancels out all ie versions apart from 7. How about a gif instead, you dont get alpha transparency! Well genius how about css, great, there are ways to do it on webkit, gecko, and ie, however they apply the same amount of transparency to their children.

the trick here is to think outside the box, literary...



Thanks to relative positioning, i made a solid div below my transparent div, and moved it over the transparent div, creating a the above effect. The cool things is that by modifing the z-index you can create a ghosting effect!

Best of all, there are no images used to create the above, (well apart form the obvious background pattern on the body), more testing is needed, but i think i might be on to something here.

The CSS
*{
text-align:center;
margin:0;
padding:0;
}
body{
background: url("pattern.gif");
}
div#wrapper{
margin:0 auto;
width:70%;
text-align:center;


padding:1em;
}
div#panel{
opacity: .50;
height:200px;
background: #ddd;
width:100%;
margin:0 auto;
}
div#wrapper p{
padding:1em;
background: #000;
color:#fff;
width:90%;
position:relative;
margin:0 auto;
top:-180px;
z-index:1;
}

The html


Transparent div

content goes here






Now if you excuse me, i'm off to bed

Introducing Absolution

Yes i'm alive, it may have been months since the grand plans of facebook widgets and such, but i'm back. Today i'm unleashing on the world something new(ish), A PHP framework. Now don't get me wrong it's no piece of cake, but it's not meant to be. Absolution place in the world is on shared hosts, and B grade websites, where speed of development is more important than MVC patterns and OO principles.

Well OO is always good but you know what i mean.

Currently it consists of 4 classes, that contain helper functions, that enable you to do things like print an un ordered list from a sql query in one line of code!, get a pre-sanitized variable from the query string with one line, even filter out bad characters with one line.

I plan to add more classes, and more functionality, as the framework grows up, however it's 0.01 alpha at the minute! Eventually i want this to grow into something like prototype for PHP, a lean, mean framework machine.

Also i think this place could do with a redesign, ajaxian styleee, now if only i had time.


Till another time

Quote of the Day
"We knew that when we gave it to him, that it was never gonna end up as just a simple webpage!"

My love of Jquery is starting to give me a reputation

Sunday, June 03, 2007

Reverse Engineering: Facebook poking

Since i declared Poking war on all my facebook friends, i've been thinking of doing some R & D. So i'm developing a Greasemonkey Script that would enable me to reply to all the pokes simultaneously.

Well thus far, heres what i've discovered.

A poking request is made by sending the user id of the person you wish to poke to a php page.

http://(networkName).facebook.com/ajax/poke.php?id=(userID)

with this request, goes a cookie with your login credentials.


Host: solent.facebook.com

User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.1) Gecko/20061223 Firefox/2.0.0.1

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Proxy-Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Referer: http://solent.facebook.com/profile.php?id=511999790

Content-Length: 70

Cookie: login=[Login credentials etc. Need to workout the encoding on these]

Pragma: no-cache

Cache-Control: no-cache

As you can see i did this on my mac, using Firefox to take advantage of firebug. If you drop in the refer url it will take you that persons profile page, i imagine that this is also checked to stop spam bots, however i plan to fake the refers in the application, so that shouldn't be a problem.

Therefore in essence to automate the process, all you need to do is create an array of the users that you wish to poke, and loop though them sending your credentials each time to ensure that it is accepted by the server.

While i was poking around i also discovered that FB uses a modified version of Apache 1.3.37 (they suffix it with "fb1"). Whether this is an edit to the string, or actual modification, who knows?

Anyways, when i stop working 7 days a week, or going to bed at 2:15 am, i'll but together a small java app to take advantage of this.

Now if you think this is a lot of work, it isn't really, i got a http request class already built and fully functioning thanks to my work on isolation. So just gotta reverse engineer some more, and apply this concept.

Let the poking war continue!


Quote of the Day

Caption

Monday, May 28, 2007

Because i have time

Remember that facebook widget i spoke of?

Well it's actually in the oven, now and should be ready soon-ish, just have to work out how to communicate with the REST API that facebook uses, and i'm quids in.

Heres a screenshot of it running live in safari, and i built it based on a dashcode generate file, rather than actually using dashcode. Always more fun getting your hands dirty.

Saturday, May 26, 2007

2006/ 2007; A year in review.

Alas the academic year is at an end, so i thought i would look over my highlights for the year. Fortunately, for once there weren't too many down-ers, which makes a change. In the last year, i've "grown" as a person, changed a lot socially. One thing i've developed is an extremely are head, the sheer number of compliments i've started getting, is messing with my head, resulting in a chemical reaction, often known as "Big head syndrome".

So what did i like about this year?
  • Facebook!!!!
  • Jaimini
  • Cooking
  • Chasing Women * (Not as bad as it sounds, honest)
  • Strictly Exclusive
  • Ocean & Collins
  • Nokia E61
  • OS X
  • Java
  • Black Macbook
  • My Poster (you know the one ;) )
  • Chocolate Bourbons
  • Group Dinners
  • Tunde (Even if he's a waster)
  • Jai & Nick's Co*K Blocking
  • Eating Popcorn for dinner
  • Plagiarism ( I'm innocent )
  • Easter ;)
  • Luke, OG
  • Stupid Flat Games
  • PHP
  • Linux
  • Comic Life
  • Steph B.
  • That Monday at OC, well both actually.
  • A night in Portsmouth
  • Working with Schuster
  • Getting my Old Job, back on both counts
  • Stupid sleeping habits
  • Erykah Badu
  • Robin Thicke
  • Mos Def
  • Dave Chappelle ;)
  • My nickname, Lawman
What do i want to improve on for next year & beyond?
  • Chasing Women (what, they're first years, they need help...)
  • My Personal Cleanliness, mainly my room
  • Number of publicly available software projects (One is a joke for a software developer)
  • My relationship with God (not the best at the moment)
  • Income (could be better considering my skills)
  • Grades (Too much coasting!)
  • Language skills, 10 isn't enough, i need more
  • Language, ones that other people know, like spanish etc
  • general knowledge, i'm getting dumb
  • Electronics , don't get it twisted with software
  • act my age, yeah i'm 20 not 30 during the day and 14 at night.
  • Stop speaking like a LDN kid
  • Remove in'it from my vocabulary
  • Improve the jokes, (long time coming)
  • Start sleeping at normal times
Favourite moment of the year
  • Coming back to uni after dropping out, or geting my macbook
Biggest Waste of time
  • Pro Evo Tournaments at the SU
  • A Certain individual(s)
Most Rewarding use of time
  • Cooking Dinner for 6 of my friends and watching them devour it with gee
Most constructive use of time
  • Building Downtime in my first week back
Biggest waste of cash/p
  • That Remote control plane
Most shocking news
  • One of my best friends coming out
Favourite Quotes (aka Tunde's section)
  • "It's all, real stainless steel" Tunde
  • "TASTE!!" Tunde
  • "Fail" Anwar/ UMZ!!
  • "Mrs. Lawman" Jai, Nick, Lester and whoever else was there
  • "Lebanon is in africa" Tunde
  • "I sleep on my stomach, with both arms under me, with my hands between my legs" Jaimini
  • "I'm in the same place(diva) every week" Steph
  • "Wasteman"
Well i'm pretty tired now, so i'm gonna call it a day. But i must say, sitting here writing this list had be cracking up, and smiling the whole way. It's been a great year and to all my people, thanks for the good times, and God Willing we will have so many more next year.

Jonathan "Lawman" Dalrymple

Friday, April 20, 2007

I know i can count, but i'm not sure about my mac

So in a moment of boredom, i opened up my trusty text viewer, and had a look at some files. Namely a RTF, and a Text File.

First off, i now understand why programmers love plain text files so much. First off, there are no bytes wasted on headers. It's straight into the data, no messing and no playing.

So here is the test stub
#!/bin/bash

## Coursework mass compilation

cd ~/Desktop/OOTM

javac TerminalInput.java

javac Deck.java

javac Player.java

javac Game.java

javac CardGame.java

## Run the application

##java CardGame

This was a little bash script i wrote to help compile my coursework.
Not to remember the basics, each character is equal to a single byte, or 8 bits. FF is therefore equal to 255.

The plain text file is 8KB, with 204 characters. My maths tells me that should be equal to 204 bytes. But for some reason, my mac accounts another 1300 + bytes!!

Mean while the Rtf file is 4KB, with 561 bytes, which is the exact number of characters in the file. But wait you say, there are only 204 characters in the file. Correct, so whats the other junk ....
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural

\f0\fs24 \cf0


I only went through it briefly, but it appears to show the font types, and colors for the file.

But my question to the world is, why on earth is the text file twice the size, but yet still halve the number of bytes in the hex editor?

Saturday, April 07, 2007

Social Discovery

Call me socially inept, but i just realized something. You can tell when someone likes you or enjoys your company, when they start doing random things, without just cause. Now depending on what they do, you can then determine whether or not they are trying to get close to you, or in fact kill you.

Ie. I do random things for people all the time, however i personally rarely have random things done for me. Which clearly shows i'm dis ... Right let me rethink that.

But you get the point, however the caveat to this, is that you can begin to think that every random act of kindness, has a meaning. If your a pretty young lady, then it generally does. If your me, then most likely not, however every other one might have some significance.



Quote of the Day
"Look, it's my favourite Drunkard, top of the evening too ya"

Can't beat viki, you really can't

Friday, April 06, 2007

Useful Email validation

Got some javascript, for the coders out there. Not my finest work but quite neat.

This validates a email field, combined with a simple input field as shown.

HTML



"<"input id="emailInput" class="halfSize" type="text" value="Place Replay to Email here" name="replyTo" onkeyup="validateEmail( this.value);" />


However it does it in a funky AJAX way, allowing the user to see where exactly they have put a foot wrong.

it checks the following

  • Address is longer than 6 characters

  • There is a @ symbol present

  • and there is a "." within the domain section of the email



The 6 character mimumim was calculated using the following logic,

1 = one character for username
2 = one character for the @ symbol
3 = one character for the domain
4 = one dot/decimal to seperate the domain from the TLD
6 = two characters for TLD and ccTLD.

First improvement, that one should make, is enable both the input field, and result field to be supplied as function arguements, however in my case (internet computing assignments), this is only getting used once.

Javascript



function validateEmail( pEmailObj ){

var pEmailString;
var retVal;
var returnObj = "emailValidStatus";
var whereIsSymbol;

//Setup
pEmailString = pEmailObj;
document.getElementById(returnObj).style.background = "#bf3a3a";
document.getElementById(returnObj).style.color = "#fff";
document.getElementById(returnObj).style.padding = "2px";

//Go Down a level after each check
if(pEmailString.length > 6){ //Check length

if( (whereIsSymbol =pEmailString.search(/@/)) > -1){ //Check for @ symbol

//Find the dot after the @ Symbol
var lastDot = pEmailString.indexOf( ".", whereIsSymbol)

if(lastDot != -1){ //Check for . after @ symbol
document.getElementById( returnObj ).style.background = "#71ba43";
retVal = "Valid!";
}
else{
retVal = "Invalid: Bad Domain";
}
}
else{
retVal = "Invalid: Missing @ symbol";
}
}
else{
retVal = "Invalid: Too short";
}

document.getElementById( returnObj ).innerHTML = retVal;
}


Last but not least it's Released under the GPL, so use it and abuse it.

Friday, March 30, 2007

Latest Project: Facebook Widget

To help me with my face book addiction, i've decided to make a dashboard widget, strangely enough it's for the said website, facebook. A bit more useful than the search widget that currently resides on the internet, and a lot more simple than the famed Isolation project.

After 20 minutes in photoshop here it is


ETA, is about a week i hope, besides how hard can it be ...

As i see it have to translate part of the current offical Java API to Javascript, and parse some xml. Thats the hardest part, the actual widget design should be simple. Development starts in about week, after the java work is done. ^_^

But i think i've announced too much vapourware so i need to start delivering

I'm off to bed, some of us have to work you know.

I love to function

While working on my piece of piss Java assignment, i came up with a neat little random number generating function. It's a mirror of a function that is commonly used by Objective-C developers, and allows you to have random numbers but within a range. I've casted the result before i return to the calling routine, so you simply change or remove the cast to get the primitive of your choice, as it's all Floating point arithmetic.

Java



private int randomIntWithinRange(int pLow, int pHighest, boolean pDebug){
boolean acceptableValue = false;
double possibleValue;
double finalValue = - 0.1;
int attemptsTillSuccess = 0;

//If the value is not acceptable continue
while(!acceptableValue){
possibleValue = Math.random() * (pHighest * 10);

if(possibleValue >= pLow && possibleValue <= pHighest){
finalValue = possibleValue;
acceptableValue = true;
}
else{
attemptsTillSuccess++; //How many times
}

}

if(pDebug){
System.out.println("" + attemptsTillSuccess + " attempt(s) till success"); //debuging
}

return (int)finalValue;
}

It's even does a little debugging line, so you can see the number of attempts till it succeeds. Released under the GPL 2.0, For use in non-commercial products yada yada. When i can be asked i'll write a Javascript, and C version, and if i feel really nice a VB version.

Update: With me having banned myself from facebook for a while, i thought i would make myself more useful and covert the java to ECMA script, of Javascript for lesser clued up, wasn't hard just replaced primitive declarations with var ^_^.

Javascript



function randomIntWithinRange( pLowest, pHighest, pDebug ){
var acceptableValue = false;
var possibleValue;
var finalValue;
var attemptsTillSuccess;

while(!acceptableValue){
possibleValue = Math.random() * (pHighest * 10 );

if(possibleValue >= pLow && possibleValue <= pHighest){
finalValue = possibleValue;
acceptableValue = true;
}
else{
attemptsTillSuccess++; //How many times
}
}

if(pDebug){
Document.write(attemptsTillSuccess + " attempts till success"); //debuging
}

//Damn loosely typed language!!
return Math.round(finalValue);



PS. I didn't test the javascript version, so don't count on it to work straight off the bat.

Wednesday, March 28, 2007

Facebook is the nuts!

Get one, i love it.

I've got in contact with people from my primary school
One of my cousins
Couple people from secondary school

Basically for someone enjoys "trying" to be social, it's amazing.

Quote of the Day
"I'm sorry charile murphy, it was an accident i'm having too much fun."

Dave Chappelle

Sunday, March 25, 2007

A Guy, A Mac, and a Linux Distro

So, it's that time of year again. Everyone's disappeared to their various corners of the uk, and i'm left here to contemplate life on earth.
So many people have asked, why have i decided to stay here on my own, simple i got a lot of work to do, plus i wanna take advantage of the gym.

Heres what i got to do in the next three weeks

  • Database fundamentals Coursework

  • Internet Computing Assignment

  • Computer Architecture Coursework

  • OOTM Assignment Assignment

  • Learn x86 assembly

  • Finish the Fat Cheetah website

  • Write & Design a reusable PHP CMS

  • Write & Design a reusable PHP forum

  • Apply for loads of Jobs

  • Do someone else's assignment

  • Cook various people dinner

  • Revise for networking

  • Buy and play with a Treo 680



Quite a lot of stuff if you ask me. I'm only working at maplin on the weekends, so i'm gonna try and give this thing my full attention. In my eyes these three weeks will make or break my course, prehaps in yours too ...


Now if you excuse i have to contemplate whether or not to get a facebook or not.

Quote of the Day
PS3 buyer"I need an optical cable for my PS3"
Me "Cool, how is it?"
Customer"Don't know didn't get any games."

Nice going sony, you get a grown man to fork over £425 quid, and then shaft him and give him no games.

Saturday, March 24, 2007

Saturday, March 10, 2007

Ones to Watch

Now that i'm back at home, if only for a couple of days, i have the opportunity to try out the finest TV shows from our brothers across the pond.

Firstly 30 Rock,

Number 1, it's got a Baldwin in it, so that caught me. Second it's got the head writer of Saturday night live, writing and staring, Tina Fey.

This two things mean that it can only be good. Thus far I've only seen four episodes, but it is very funny, clean and stupid.

I would highly recommend this if you like family guy or american dad, and no it's not a animated series.



Next up, The Apprentice Season 6 : LA

No it's not the uk version, it's Donald Trump doing what can only be described as good tv. Watching the first episode now.

Nothing like watching wasters try to shoot each other down

Wednesday, March 07, 2007

20 in 8

Nothing much to say, except that in 8 days i'll reach that milestone age of 20 years old. How about that. Jonathan at 20, i should really do the whole dave chappelle thing, and make comparisons between me at 20, 14 & 8. Would be quite funny i think, i think i'll make that bus post.

Plus i'm going back to hemel this weekend to link up with the old crew, till another time ...

Tuesday, February 27, 2007

Too Badu for you

In the last couple of days i've been listening to a lot of Erykah Badu, and man is she good. In my book shes, like the musical sister Jill Scott never knew about.

Sadly not all is well. I discovered that Ashley, from such famed posts as "meet my friends", lost his mother to Cancer, plus the ex-partner of one of my work colleagues has been in hospital for a while. To them i wish them all the best, and hope for a speedly recovery, as for Ashley my heart goes out to him, and i pray that his mum made it to heaven.

In business news, Isolation is on hold while i do some contract web design work, Ajax and the usual lark. But in even bigger news, i;ve join the "Fat Cheetah" Revolution. Fat Cheetah is a three man company destined to take over the world. It comprises a quality graphic designer; Paul, a classy Web Developer/Application Programmer; me and a Shark Tunde. The perfect blend.

If you live or work in the southampton city area, you'll be hearing from us!

Oh, while i'm here

March 13th, @ Bambuu Bar Come down and see Heartless Crew in action
A One Promotions & Fat Cheetah event

Thats about it for a round up, i'm try to save money to pop another Gig of Ram in that black plastic thing over there (writing on my nix box), Was ill for the last week, and had apple juice and popcorn for dinner, plus Jai quit smoking.
Quote of the Day
Lights dim
Anwar "Where did nikya go?"
Somone else "Don't worry i can see his teeth"

We love him really

Monday, February 12, 2007

Looking for work

Super amazingprogrammer looking for work!
i code in the loads of langauges, and i do contract work for cheap. If your interested conact me, and don't try the line that you couldn't find my email address, half the population of nigeria knows it, so for you it should be a peice of cake.

Websites
Bespoke Developement
Debugging
Scripting

what ever, call me

ps. I haven't lost my job, just looking to move up.
Quote of the Day
Yeah, because we come across 18 + digit binary numbers in our day to day lives

Computer architecture can be fun, honest.

Friday, February 09, 2007

Whats new....

Well since the data disaster, i've managed to rewrite a sizible chunk of code for isolation. However, it's hard work, considering i had done it all before. I've also gone backup nuts, and wrote a back script that i keep in the dock.

In other news, i've started on a light Cocoa project. A Cocoa version of one of my favourite games, Dope Wars. As you've come to expect here's the teaser...




Loads of work as you can see Started yesterday, while watching lost. Now although i love Xcode, i hate this whole idea of connecting the program to the UI. I can see the benefits, but i dislike the way it's done. Sure it's kind of similar to the way things are done in visual studio, but still.

Plus i've started learning about assembly on a serious level, so i'm now learning 3 languages at the same time, as well as brushing up on my C skills, to help improve my ideas on all these new fangled languages. Coupled with this i want to do some proper ruby on rails development, and see what all this crap is about in a production like environment.

Lastly, i've discovered that for all my love of computers macs, that i really don't know what i want to do after i leave university. Web development, is exciting, fairly easy and pays ok, but it's not a challenge. I write CSS in my sleep.... Writing kernel/device drivers looks cool, but how often does one need a new camera driver? Software development looks cool, but things take too damn long. And i'm not keen on all this paper designing either, wheres Visio for OS X? Although i plan to work for no one, and do my own thing, i'm not quite sure what yet.

To sumerize in Objective-C ...
Future = [Me whereIsCareerGoing:currentStatus];


Quote of the Day
Am i too nice, or do i just like thinking that?

Lets put the vote to the people

Tuesday, January 30, 2007

I'm a Retard

Why, i wiped my Mac's harddrive, every last kb. Yes i could of recovered it, but i can't be bothered to build up any hope of getting my data back.

So what happened,

I was trying to install the New Microsoft Vista(Which i'm using as we speak). I used the disk utility on the mac osx install dvd to remove my old boot camp partition. i had split it as follows 103 GB for osx, and 8 gb for linux. It had been that way since the week after i got my mac. I was using rEFIt to manage the boot partitions.

I selected the 8 GB parition plus the nix swap space, and erased them. Before i did so, i clicked the little lock, to prevent editing to the osx partition. after wiping the two, i then reformated them as fat32, and thought nothing more of it, one restart latter osx wouldn't boot. thought it must be a partition table issue. So i reboot the install dvd, and went to repair the drive/partition.

Thats when i saw it. Macintosh HD had 55Mb used, instead of 90 Gb!

So what have i lost

Isolation, and Syndication, The new company website. plus all the recent changes to the HTTP library and Diggr for the last couple months. All of my uni work for the last 3 months, plus about 2000+ tracks. And my cracked cs3.

So .... backups are a good thing.

What i can say, is that Vista isn't too bad. They fixed the performance issues that they had with the last version i tried, 5270. It's nice and shiny, and although i haven't got all the drivers, it's still not too bad. After i've reinstalled osx, i'll set up a proper boot camp partition.

Isolation will be rewritten this month (February), Syndication who knows, Diggr is on hold until i can master palm's C api.

HB HTTP lib, i'll release what i have, but it won't work until the nice folks at HB update the runtime environment or the compiler, to fix the stream writing methods.

So if you'll excuse me, i've got a hard days worth of installing and downloading ahead of me.

Monday, January 29, 2007

Finally!!

So Januarys kinda like done, and i still haven't finished my first app. But the good news, is the weirdest part is done, which was handling data/ captured requests between two servers is practically done.

hence rejoice, for i have screen shots, but no code (i kinda like trying to make money thanks)




Now if you excuse i got loads more work todo, plus i need to stare at this powerbook(not mine) in front of me...


Quote of the Day
"So he came up behind you and began kissing you on the neck, ok"

As i said on numerous occasions, teen drinking is very bad

Friday, January 19, 2007

The Bookshelf gets better




The bookshelf is getting better. Finally after a week of waiting the precious Objective C book is finally here. Time to write some real code, i'm java's slave no more.

The book i got in the end was from my favourite publishers, O'Reilly, but Addison Wesley???? It's called "Cocoa Programming for Mac OSX" by Aridian Hillegass an ex apple and NeXtstep engineer. Only up to page 13, but it's looking good.

Now if only i can get enough to a have a proper reference library...

Plus i sorted out my house for next year, 6 beds, 3 boys 3 girls. Moving in July 1st.

Quote of the Day
Steph "I need you out of the house for a week after we move in"
MeWhy should i, i pay rent too?
Steph "Fine, stay you just won't like what your'll be hearing"

This is what i'm living with... Just kidding it's not all bad

Wednesday, January 17, 2007

Deadlines; What are they & how i misuse them

For what must be the first time in while, (think 6/7) i'm performing academically the way i should be. I'm doubting myself and still getting 95% in tests, never mind completely acing others. It's a nice feeling, the torment that was A-level results left my head in a bad place, so it's great to be heading over the ridge.

I like love what i do. Writing code for me is better than ... making money. So it's great that i can use one do achieve the other. However, and employees of DSGi will know what i mean, i like setting ridculous deadlines. Heres one famed example.

A completely automated website to manage a entire retail chains intranet. A normal developer would quote a couple of months. I said 2 weeks!

So how do i make these estimates up?
Easy my calculations don't account for sleep, eating transport times etc. Why, cause i don't plan to do any of it. I'll work my arse off till, i collapse or do other injury to myself.

So where is this going?
Isolation, Diggr and the HTTP lib are gonna be late. Reasons are as follows

Isolation: - No real bottle necks just so much damn code to write; hashing controls, cache algor., multithreaded servers etc.

Diggr:- VB is like AIDS to me right now, and hint that i'm in proximity and i'm running, plus i gotta boot up windows. I'm on the verge of dumping the whole win32 thing for good, i just know its stupid to do so.

HTTP lib:- Palm OS is doing some weird stuff, and things aren't working exactly as they should be, debugging on device is like so yesterday, plus i wanna dump this whole two device thing and get me a Treo 680.

Plus i just kinda sold my beloved TX to a classmate, which technically means i can't finish the HTTP lib has it has to be tested on a device, no ifs no buts. That great treo 680 only has bluetooth (+GPRS but how the hell to i capture packets with that?) which i have no idea how to even begin to use fully. I think i would have to monitor a faux serial port!

So yeah, lifes great

If you excuse i must go food shopping instead of working to assignment deadlines.

Quote of the Day

Jai "You were doing the Carlton Dance!"

Me "Sadly, i just about remember that!"

Teen Drinking is very bad, even if you got a fake id

Thursday, January 11, 2007

TIOTI: Tape it off the internet Beta

For once i can talk about someone else's work. TIOTI, has been around for about a year. I first heard of it on Digg. As usual they was a big fuss, but as the months went by that died. Fortunately for me i have a good memory and was able to sign up for the beta program.

So for the people that haven't seen it here it is.



Thus far, it seems like a cooler version of TV.com. There are user discussion groups on various shows. You can add them to your favourites. You can get RSS feeds for various things, like group discussions etc. It's got a nice balance between web 2.0 goodness, and plain old skool web design



In fact its cross between digg and TV.com. Users swarm over tv shows, rather than stories. After that you can then paticpate in various activities related to your show and get badges and such.
Apparently was i was using was build 14


However there is one sweet addition, this thing schedules torrents, based on your favourites! But it's not only for us Fearless DMCA folks, it also checks for itunes downloads, which it lists a premium content. Please excuse my poor screen grabs, am still getting used to this sexy mac. Oh yeah, this shots are from a mac. They recommend using firefox on osx, so thats what i used. But most of it seems to javascript, css and html so safari performance shouldn't be too far away.]


This is the user account page, i just joined like 5 mins ago, so excuse the lack of friends.

Speaking of code, it's quite clean, all the javascript is placed in external files, so the actual html is very clean, (perfect for greasemonkeying ...)

The future looks bright for this service. I'm glad to say that TIOTI is not vapourware and should become a useful tool in filling the downtime of life, not that i would know anything about that kinda of thing.

Wednesday, January 10, 2007

Killing my own Ideas

Great idea, a External display via the firewire 400 port on my computer!

Lets do the math
(bare in mind that this done assuming we want 24 bit displays at 60hz)

Firewire = 400 Mbits
SXGA = 1 310 720 pixels
Each pixel is 24 bits / 3 bytes
therefore 3 932 160bytes (3.75 Mb) required to refresh the display each cycle.
average display is refreshed 60 times (60Hz) therefore 60 * 3.75
Total required thoughput of 225 Mb/s
Firewire total thoughout = 50 Mb/s

Thats why it's a express card job

Another reason why Having no express card port on this macbook is starting to suck. a 13" macbook pro would have been really nice right about now.

Another bright idea, external display via gigabit ethernet, nope only 125 MBit/s. Looks like my dream of a dual headed macbook is kinda dead. It's a mathmatical impossiblity :(

Since i was in this frame of mind i wondered, what the thoughput of a DVI connector might be

Single link
1920*1200
6.5 Mb per cycle
395 Mb/s


Dual link
2560 * 1600
11.7 Mb per cycle
703 Mb/s

A nice indication there of how much pixel pushing a graphics card really does in order to devliever a rich high resolution experience. Still no reason for crappy open source support, but it at least makes it clear why graphics cards have to be so damn powerful.

Sunday, January 07, 2007

OSS HTTP Lib is in semi-effect

After months of promises to the users of 1src, the HTTP OSS lib is operating. Most of the code has been written without ever testing it all, which is stupid, but i was too busy reading HTTP docs, to take the time to set up a testing server and go through logs looking to see it i had a hit or not.

In the end i didn't actually do that, i used ethereal, and MAMP on my mac ^_^. The point is, the OSS lib for HB++ developers is practically done. I've started the documentation ....


You might have also noticed, that that is windows. Although i've grown to dislike it, i need it. I had hoped that once i got my mac i could kiss this windows workstation good bye, but sadly not about of wine and vmware can make up for nativity. So until then, Linux on my desktop is dead, less glitz more work.

Now if you excuse me i'm off to tell the nice folks at 1src about this.


Quote of the Day
Me "Dont hit me with that"
Aimee "Why, are you gonna hit me?"
Me "No, but i'm gonna leave busies, and they won't be on your face!"

I think i'm in some sort of widthdrawl, can never get your hands on people when you want to...

Thursday, January 04, 2007

It snows in 2007

I've returned to my little hive in southampton. First thing i did when i got back, was upgrade my linux distro. I'm now running Ubuntu 6.10 with beryl, and this is what my desktop looks like.



I believe myself to be alone for the moment, but everyone should be returning in short order.

Tuesday, January 02, 2007

Happy new year

First post of 2007, Happy new year to all random vistiors.

Main reason for posting, is progress on Isolation. It's now got its icon, and is almost at a alpha stage.
The Proxy server is working, in one direction at least. The client is coming along. I've written a HTTP interface class, that allows me to do things like

makeGetRequest("/filename.html");

which would return a complete HTTP request string with line feeds and carriage returns. It also has constants of all the HTTP error codes, or at least the 4 most popular.

Sadly this is the last work i'll do for a while, as slightly more pressing issues beckon (Uni work). But all things look to be on course for my first product launch to come by the end of month, if not mid february.

Oh incase you were wondering, heres the icon


In the event that you have forgotten, what this thing is... Isolation Personal Proxy: is a multi-platform proxy server. It runs in the background and caches your content plain/text or binary files, allowing any application that supports a proxy server to get content from the cache without even knowing it's doing so, and enabling almost complete offline browsing.

Finally i've started using the tag feature that they have added to the blogger beta, i'll make a tag cloud one of these days