bsodmike's photostream @ www.flickr.com
            

The Definitive Google Nexus One Rooting HOWTO – Bootloader Unlock, Amon_RA’s Recovery Image, and CyanogenMod ROM v5.0.6

20/04/2010

This definitive HOWTO covers:

  • Unlocking the bootloader
  • Installing Superboot
  • Installing the Amon_Ra recovery image
  • Performing a Nandroid backup
  • Performing a proper wipe
  • Installing CyanogenMod v5.0.6
  • Installing the Google Addons

Here’s a sneak preview of what you can achieve with this ~ yes, Wifi/HSDPA tethering that’s reliable, and easy to connect to.

View Article

2 Comments

Noli nothis permittere te terere

19/03/2010

This has been one of my favourite sayings for quite a while and I wanted to keep this definition in an easy to find place, so here it is:

It’s kind of a long-running joke. It started with bored English boarding school students creating the pseudo-latin phrase, “Illegitimi non carborundum”, which is very bad Latin ostensibly meaning “Don’t let the bastards wear you down.” It got to be kind of famous as a kind of intellectual joke.

Somebody later came along and translated it into much more proper Latin, “Noli nothis permittere te terere,” which is essentially right. “Nothis” is literally “illegitimate children” (nothus, second declension, dative case) which is not really the intended connotation of “bastards” in this case, but it gets the point across.

It would be pronounced:

NO-lee NO-teece per-mee-TAIR-ray TEH tuh-RAIR-ay

It would be nice to get this engraved on something…hmm!

1 Comment

Prototypal Inheritance and Nerds with Superpowers…

13/03/2010

This was an example used in the article 12 Steps to MooTools Mastery over at Nettuts+. It’s an example of the prototypal inheritance model of Javascript – a great one at that!

Ohh, my sides still hurt! ROFLMAO at the IQ vs. hotness, where this equals actual hotness * ‘hotness multiplier factor’ resulting in perceived hotness!

I’ve added a few additions of my own…wish I could some how work ‘Spandex’ in there…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function Nerd(iq) {
    this.iq = iq;
    this.glasses = true;
    this.pants = 'high';
    this.hasPocketProtector = true;
    this.playsWorldOfWarcraft = true;
    this.livesInBasementWithParents = true;
}

function SuperPowers() {
    this.strongerThanLocomotive = true;
    this.fasterThanBullet = true;
    this.canLeapBuildings = true;
}

Nerd.prototype = new SuperPowers();

Nerd.prototype.willWinGirl = function (hotness) {
    if(this.iq > (hotness * 20) || this.strongerThanLocomotive){
        console.log('maybe');
    }
    else {
        console.log('nope');
    }
}

new Nerd(140).willWinGirl(10); // logs "maybe"
2 Comments

Enabling GPRS/MMS Internet in Kuwait on VIVA

9/03/2010

I called VIVA this evening to be greeted by a rather rude technician who seemed to be rather irritated that I knew what a ‘port’ was. He also seemed to keep insisting that URLs should start with http: and ‘backslashes’…*sigh*

He insisted that since I had a ‘Google Nexus One’ that they did not have the settings and it would simply not work – it was deemed an incompatible handset…right!

Since I knew I had to get the GPRS/MMS information out of him, and I really couldn’t be bothered to call back to get someone else, I told him that I had an iPhone (which I do) and that I’ll shift the SIM across.

I managed to get the following details, and a few extra bits that were not needed – at least for my Nexus One.

APN: vivamms
MMSC: http://172.16.128.80:38090/was
MMS Proxy: 172.16.128.228
MMS Port: 8080

I simply named the APN ‘VIVA’ and enabled it. WiFi was active at the time, so as I disabled it, and browsed to Google – the 3G indicator popped up with arrows depicting the upstream and downstream transfer of data. Just superb!

2 Comments

JQuery, AJAX, and PHP Powered Salted Password Hasher

28/02/2010

I decided to port the AJAX handling code to JQuery, as I have used the JQuery Validation plugin in the past and did not have to properly get to grips with the MooTools FormCheck plugin.

Ultimately, one needs to resort to using the form validating plugin’s submitHandler to ensure that the AJAX call does not go through unless the form is indeed validated.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">
$(document).ready(function(){  

    $('#myForm').validate({
        rules:{
            password: {
                required: true
            }
        },
        submitHandler: function(form) {
            $(form).ajaxSubmit({
                target: '#log_res'
            });
        },     
        invalidHandler: function(form, validator) {
        var errors = validator.numberOfInvalids();
            if (errors) {
                $('#log_res').html('');
            }
        }  
    });
});
</script>

If I wanted to stick with the MooTools framework alone, I would have had to used the FormCheck plugin and used its submitHandler as well; it will make good practice so that will go down on my ‘Todo’ list.

1
2
3
4
5
6
submitByAjax // you can set this to true if you want to submit your form with ajax. You should use provided events to handle the ajax request (see below). By default it is false.
ajaxResponseDiv // id of element to inject ajax response into (can also use onAjaxSuccess). By default it is false.
ajaxEvalScripts // use evalScripts in the Request response. Can be true or false, by default it is false.
onAjaxRequest // Function to fire when the Request event starts.
onAjaxSuccess // Function to fire when the Request receives . Args: response [the request response] - see Mootools docs for Request.onSuccess.
onAjaxFailure // Function to fire if the Request fails.

View the Password Hashing Demo.

No Comments

AJAX handling of form data with MooTools.

27/02/2010

Check this out, the first is the easiest and simplest way to go about it and then I also got it working via a typical ‘Request’ AJAX call.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
window.addEvent('domready', function() {

    $('myForm').addEvent('submit', function(event) {
        //Prevents the default submit event from loading a new page.
        event.stop();
        //Empty the log and show the spinning indicator.
        //var log = $('log_res').empty().addClass('ajax-loading');
        var log = $('log_res').addClass('ajax-loading'); //no clear
       
        /*     
            //Set the options of the form's Request handler.
            //("this" refers to the $('myForm') element).
            this.set('send', {onComplete: function(response) {
                log.removeClass('ajax-loading');
                log.set('html', log.get('html') + '<br/>' + response);
            }});
            //Send the form.
            this.send();
        */

       
   
        //alternative ajax call
        //inspired by:
        //http://www.mooforum.net/script-request12/ajax-contact-form-for-mootools-t2929.html
        var req = new Request({
            method: 'POST',
            url: this.get('action'),
            data: { 'do' : '1' },
            onRequest: function() {
                log.set('html',  log.get('html')
                    + '<br/> Request made. Please wait...' );
            },
            onComplete: function(response) { log.removeClass('ajax-loading');
                log.set('html', log.get('html') + '<br/>' + response);}
        }).send(this); 
       
       
        /*
            //if the following was used, 'this' would need replacing!
            $('submitter').addEvent('click', function(event) {
           
            //alternative ajax call
            var req = new Request({
                method: 'POST',
                url: $('myForm').get('action'), //here
                data: { 'do' : '1' },
                onRequest: function() {
                    log.set('html',  log.get('html')
                        + '<br/> Request made. Please wait...' );
                },
                onComplete: function(response) { log.removeClass('ajax-loading');
                    log.set('html', log.get('html') + '<br/>' + response);}
            }).send($('myForm')); //and here.
        */

       
    });
       
});
2 Comments

Review: El Rey del Mundo Choix Supreme

21/02/2010

The El Rey del Mundo Choix Supreme is a hand-made Cuban cigar in the Hermoso No. 4 format, with its distinctive light coloured wrapper. I personally prefer using a quality guillotine cigar cutter. This particular cigar was constructed well and lit very easily whilst maintaining a consistent, slow burn, throughout the smoke. I only needed to take a puff every minute to keep it going, and it had no signs of extinguishing; a perfectly symmetrical head of ash formed at the end – sometimes as long as about an inch.

In comparison to the Montecristo Tubos, Por Lorrenaga Petit Corona, and the Davidoff 2000 in particular, I found this smoke to be very mild yet due to the slow burning nature of the cigar, it lasted a good 45 minutes. Notes of honey, creamy tones, and a floral taste were evident with a lack of spice. The flavour was maintained throughout till around the final 1/3rd.

The nicotine high was barely noticeable and I would highly rate once of these for a casual smoke. This particular cigar was enjoyed with several rounds of Glenfiddich 15-year Solera Reserve on the rocks.

3 Comments

Installing NVIDIA driver in Ubuntu via SSH with X11 Forwarding

28/01/2010

Since my Ubuntu box has been running since 2006 (on the same install of 8.10!) as a headless terminal, I never bothered to install proper NVIDIA drivers…well, until today that is.

michaeldesilva@Ubuntu:~$ uname -ar
Linux Ubuntu 2.6.27-11-generic #1 SMP Thu Jan 29 19:28:32 UTC 2009 x86_64 GNU/Linux

I therefore downloaded NVIDIA-Linux-x86_64-190.53-pkg2.run, the 64-bit version of the driver and ‘chmod +x’ed it to make it an executable.

GDM needed to be stopped, and was easily taken care of with a ’sudo /etc/init.d/gdm stop’. This is where I ran into a problem. I am using an Apple keyboard, and could not perform a ‘ctrl-alt-F1′ to get to VT1 from VT7, since VT7 has no prompt.

This is where I had the idea of firing up terminal on my Mac Pro and SSHed in with X11 forwarding. I needed to access root quickly, so ’sudo bash’ came in rather handy. The rest was quite straightforward where I ran the executable and I was able to interact with the installer from my Mac.

Upon exiting from root, I simply restarted GDM and all was well.

No Comments

24 Season 8: Episode 5

26/01/2010

Well it seems like Renee hasn’t lost her touch and manages to convince Jack that cutting off thumbs is not a bad idea.

More boring back story with Starbuck and her ex-boyfriend……oh, no, I’ve already got drool on myself. If only she was “Starbuck”, he’d be flat on the ground by now. The plot of this side story is quite simple – squeeze the girl for inside info from CTU. Wow, like that’s never been done before.

Oh yea, what’s with the name “Arlo”? I just chuckle every time I hear it :p

Seems like Mr. Prez likes to control people with fear; he also has his first spat with MPAT. Round two is with his wife; do we care? No.

The episode finally gets to the only relevant bit – Texas Chainsaw Walker gets to meet Vlad. It seems these bad guys have PhD’s in reverse psychology. This is how it works:

(1) “Hey, you’re a rat I’m going to shoot you”. “Noooo please don’t shoot” = DEAD!

(2) “Hey, you’re a rat I’m going to shoot you”. “Oooh, please shoot me. Shoot MEEEEEEEEE, I have no reason to live or anyone to go to…so KILLLLL MEEEEEEEE”. “Oh, you’re cool. You’re back in!”

…and that’s how Renee gets back in. I think Jack let out a brick right there in the car.

No Comments

Higgs Boson Particle…

21/01/2010

This was rather brilliant!

Sheldon explains: “Hydrogen Atom, ‘H’. Three Pigs – “P” from pea = igs, Bow + General Zod stuck in the Phantom ‘Zone’, Pear + tickle.

Higgs, Boson, Particle!”

2 Comments

About

For the past couple years I lived in the UK, reading in BEng (Hons) Electronic and Computer Engineering at The University of Leeds and MSc (Dist) Mechatronics at King's College London.

My interests and hobbies include writing with Fountain Pens on various ink and paper, Swiss and German wristwatches, authoring articles in Mathematics, Physics, and Engineering, and Gundam modeling.

I have been following much Anime over the years as well as TV Shows with the likes of 24, Smallville, Dexter, and NCIS becoming favourites.