# Tuesday, 30 March 2010

All of these hold about 32GB of data.


Tuesday, 30 March 2010 21:38:12 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Saturday, 27 March 2010

So I decided to make a trip down to Putrajaya during said fiesta, mainly because I wanted to try and take some pics of the fireworks. Boy was there a LOT of people when we got there.


A LOT of people.


Seems like they were all crowding around on the path of the marching band.


The traders around were selling LED decorations, and also.. umbrellas since it looked like the sky was going to open up.


But likely it didn't actually rain... phew. And the most interesting thing I saw during the event was a pair of blimps. But as you'll see in the video below. The way they moved around I'm pretty sure they're remote controlled camera blimps.

As the time for the fireworks drew near, I could see people setting up their tripods and getting their cameras ready for their shots. I didn't bring a tripod as it'd be hard for me to setup and move around with WZ around. And I was there to test something else anyway. The Sony CX-150 I newly bought that day.

The launch started BEFORE I could set the scene mode to fireworks display, if I did, I think the autofocus would do less hunting around, and also exposure would be controlled to catch more of the fireworks color. But the results were still not too bad lar.

The funny situation was AFTER the fireworks display, everyone left AT THE SAME TIME! So the traffic situation was like everyone in Putrajaya deciding to leave at the same time. Very very chaotic.

Saturday, 27 March 2010 16:40:34 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Friday, 26 March 2010

Maybe it wasn't such a good idea leaving all these Nerf guns around the house.

Friday, 26 March 2010 23:04:53 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Wednesday, 24 March 2010

As I posted before I was looking for a bicubic resize algorithm for images to be used in Silverlight. I thought I ported the code properly from C# to VB but then yesterday when I was testing the code some more, I realized that there was a weird pattern of noise present in the picture. It looked like a square grid of sorts being overlaid onto the image. My experience told me that, that's because something screwed up when interpolating the pixel values (duh!) I didn't notice it previously because my previous test images didn't cause it to show up.

So what was I left to do? I had to port over the C# version to a lib on it's own then.

Bicubic Interpolation
/// <summary>
/// Bicubic resize algorithm suitable for use in Silverlight
/// </summary>
/// <param name="src"></param>
/// <param name="dest"></param>
/// <remarks>Original Source For This Function - http://www.codeproject.com/KB/recipes/aforge.aspx</remarks>
public static void resizeBicubic(System.Windows.Media.Imaging.WriteableBitmap src, WriteableBitmap dest)
    int height = src.PixelHeight;
    int width = src.PixelWidth;

    int newHeight = dest.PixelHeight;
    int newWidth = dest.PixelWidth;

    double xFactor = (double)width / newWidth;
    double yFactor = (double)height / newHeight;

    // coordinates of source points and cooefficiens
    double ox, oy, dx, dy, k1, k2;
    int ox1, oy1, ox2, oy2;
    // destination pixel values
    double r, g, b;
    // width and height decreased by 1
    int ymax = height - 1;
    int xmax = width - 1;

    int p;
    // RGB
    for (int y = 0; y < newHeight; y++)
        // Y coordinates
        oy = (double)y * yFactor - 0.5f;
        oy1 = (int)oy;
        dy = oy - (double)oy1;

        for (int x = 0; x < newWidth; x++)
            // X coordinates
            ox = (double)x * xFactor - 0.5f;
            ox1 = (int)ox;
            dx = ox - (double)ox1;

            // initial pixel value
            r = g = b = 0;

            for (int n = -1; n < 3; n++)
                // get Y cooefficient
                k1 = BiCubicKernel(dy - (double)n);

                oy2 = oy1 + n;
                if (oy2 < 0)
                    oy2 = 0;
                if (oy2 > ymax)
                    oy2 = ymax;

                for (int m = -1; m < 3; m++)
                    // get X cooefficient
                    k2 = k1 * BiCubicKernel((double)m - dx);

                    ox2 = ox1 + m;
                    if (ox2 < 0)
                        ox2 = 0;
                    if (ox2 > xmax)
                        ox2 = xmax;

                    // get pixel of original image
                   // p = src + oy2 * srcStride + ox2 * 3;
                    int srcPixel=src.Pixels[ox2+(width*oy2)];

                    r += k2 * ((srcPixel>>16) & 0xff);
                    g += k2 * ((srcPixel >>8) & 0xff);
                    b += k2 * (srcPixel & 0xff);

            dest.Pixels[x+(newWidth*y)]=(int)(0xff000000 | ((byte)r<<16) | ((byte)g<<8) |(byte) b);


public static double BiCubicKernel(double x)
    if (x > 2.0)
        return 0.0;

    double a, b, c, d;
    double xm1 = x - 1.0;
    double xp1 = x + 1.0;
    double xp2 = x + 2.0;

    a = (xp2 <= 0.0) ? 0.0 : xp2 * xp2 * xp2;
    b = (xp1 <= 0.0) ? 0.0 : xp1 * xp1 * xp1;
    c = (x <= 0.0) ? 0.0 : x * x * x;
    d = (xm1 <= 0.0) ? 0.0 : xm1 * xm1 * xm1;

    return (0.16666666666666666667 * (a - (4.0 * b) + (6.0 * c) - (4.0 * d)));

Pretty much a direct port of the original code since it was in C# already previously, just changed the way pixels are read and set. Same caveat applies as the previous code, no alpha premultiplication done yet.

The C# code didn't produce the weird grid like overlay pattern. So... what happened? Well my guess would have to be that I haven't properly ported the code to VB, and somewhere there's a fractional number being cast to a whole number causing some problems.

I'll have to be more careful when porting code that involves fractions in the future then.

Wednesday, 24 March 2010 10:08:14 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Monday, 22 March 2010

Additional 32GB storage, an extended battery that's HALF THE SIZE OF THE CAMERA, and a Gorillapod to be used in a manner which I don't really want to.


Yup... I'm all ready for the big event.

And then there's this.


Who would even guess that there's a hacked up mobile internet router in this thing?

Monday, 22 March 2010 00:31:05 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Sunday, 21 March 2010

The Sony CX-150 has a few nifty tricks up it's sleeve. First of all if you buy a cable from Sony, you can directly plug a HARD DISK into the camera and back up the internal memory's contents to said hard disk. Great for transfers during a vacation. Not so great since I tried using my own Mini-B to A Female cable and it didn't work, means the connection is proprietary and I don't want to pay a few hundred bucks for a simple cable.

The other trick the CX-150 can do is while you're recording a video you can just push this little button here.


The photo button, and it'll capture a photo while you're recording video. I'd have love to say you can capture a USABLE photo but I can't... heck I'm not even gonna justify it's existence by putting a sample photo here. It's VERY VERY BAD. It's great for people who aren't sure how to capture a frame off recorded video but other than that.. nope.. not usable at all.

The one last trick the CX-150 can do is pretty nifty... it can take high speed shots for roughly 5 seconds. It basically tries to be one of those high speed cameras. Problem is... you have to switch to this mode, and it can only take 5 seconds, and after taking the 5 seconds, it needs some processing time to make the video. Not so good for spur of the moment clips.

Great if you can setup a scene properly!

After taking the above video, I realized that the Vulcan couldn't fire fast enough (I was happy with the effect of course!) So I gave my brother the Raider to shoot with, but he wasn't experience enough to fire it fast enough. So I offered to shoot him instead, but he declined. I stared at my wife holding the camera but she scowled at me. Where would I find someone who takes delight in being shot by rapid firing Nerf darts? Oh... right... (Warning... scenes of offspring abuse follows)

I was aiming below the head! So I know I won't hit him in the face. :P

Sunday, 21 March 2010 21:51:00 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [1]  | 

I own 2 dedicated video cameras. My first true digital video camera was the Sony SR60.


I got it because at that time I knew as a father I would WANT to have something that can record proper video. And that the SR60 was pretty much the first camera I knew that was spitting out VBR MPEG2 files that I could just easily copy off the camera and manipulate. I definetly DIDN'T want to deal with tape, and I didn't want to deal with direct DVD cameras as well since I knew my videos final destination is the computer and NOT a DVD player.

My other video camera is the Creative Vado.


I grabbed it because I realized the need for a dedicated compact video device which I might want to carry around easily in my pockets. And I have used the Vado in EXTREME situations, I've taped it to a paintball gun before and I've also used it when I went for the SkyTrex experience, it's small size makes it easy for me to consider carry it wherever the need arises. While video is of usable quality, the mic pickup left a lot to be desired.

So I've bought tickets for a legendary musical event next month. And they WELCOME video recordings of their show, and I plan to make FULL USE of that invitation. But I don't know how thrill the venue people might be at the sight of a camera, so I thought about bringing the Vado, but considering that the Vado's audio pickup sucks and I couldn't afford stage side seats, I'd have to bring the SR60 then. But then I told myself, well... it's been awhile since I got the SR60, and there's this whole HD thing going on now. Why don't I indulge and take the opportunity to find a HD camera. I didn't want to spend too much on a pro grade video camera cause it's not like there's a reason I need CRYSTAL CLEAR video, so I was actually thinking of the Creative Vado HD 2nd Gen since from some sample videos it seemed to have better audio pickup.

Then I found this today...


This is the Sony CX-150, yes... I just bought YET ANOTHER Sony camera. This has EXTRA impact when I say it because nearly all (with the exception of the Creative Vado up there) of my Digital Cameras which I have used throughout my life HAS BEEN A SONY! Their cameras just have that extra something which I prefer I guess. So why did I pickup another full blown handy cam instead of my initial mini cam idea? Because the CX-150 is SMALL.


It's almost as long as the SR60 but the CX-150 is much thinner, the only reason it is as thick as it is seems to be to accommodate the lens assembly. Another reason why I choose this over a mini cam is that this is a FULL BLOWN video camera, means it comes with all the frills of a proper video camera ie. Decent audio pickup and OPTICAL ZOOM capability. So I don't sacrifice performance for size with the CX150. And for those of you complaining that it ain't THAT small. Well my definition of portable is that I can stick it into my Dockers Mobile Pant's pocket. ;)

The reason the CX150 can be so small is because it uses Sony Memory Stick Pro DUO (!) or SD HC (phew... class 4 and above only though) media cards for writing it's video to.


But the camera doesn't come with any card because (as you could see in the first photo) it has an onboard flash memory of 16GB. Pretty decent, but it can only hold about 85 minutes on the camera's HIGHEST (it's some weird 1920x1080 24Mbps video, I say weird because it talks about video compatibility issues with hardware players when you switch to that setting) quality setting. Dropping the quality down one notch gives you 115 minutes, and dropping down another notch gives you 230 minutes. At the lowest setting the onboard memory can hold 6 hours worth of video.

But you wouldn't need to worry about that too much since the bundled battery...


Is good for about 125 minutes of continous recording time, LESS if you zoom in and cause it to auto focus during the recording of course. I guess I can force more usage time by turning off the screen during recording.

There's nothing much to talk about the design of the CX150, it's your typical fold out video camera design.


There's really nothing much to say about it. I do need to comment on one thing though. Even though the CX150 is very light, at no time does it feel CHEAP. In your hands it feels like a solid well made gadget. Wish Fujitsu paid attention to this detail when they were making the UH900.

One welcomed change from the SR60 is the fact that the CX150 has all important connection points on the camera itself. The power and analog video sockets on on the right.


Where as the STANDARD mini USB and HDMI connectors are on the left.


They didn't use any flimsy or removable rubber flaps to cover the ports, they made actual doors! I like this because my main gripe with the SR60 was that if I wanted to get files off the camera, not only did I needed to bring the docking station where the mini USB connector was. I also needed to bring the power adapter cause the SR60 won't power up without it! The CX150 has no problems acting as a mass storage drive when connected to the PC without the adapter. Though I don't think it actually draws any power from the USB port so if it's battery is dead you won't be able to connect it to your computer.

One welcome feature that DIDN'T change from my SR60 is the lens.


The CX150's lens design and heck.. I think the lens itself! Remains the same as the SR60. This means that the old wide angle lens I got for the SR60 fits like a dream on the CX150.


Obviously image quality suffers, but it's not like I care anyway I just want to be able to capture WZ when he's standing right in front of the camera! :P There is one little change to how the lens works though. The lens cover has to be MANUALLY opened and closed by a switch on the side


The SR60's lens cover was automatic, so I now need to remember to close the cover or risk lens damage!

I'll upload some video once I have more time to work on it (I managed to capture the Putrajaya Hotair Balloon Fireworks Display!) But I'd have to say the CX150 is a medium quality HD camera, so it can't hold a light to the video quality of higher end cameras. But I don't mind because I'm happy with the performance vs size that I'm getting.

Here's some advice to all of you planning to get a HD video camera.

  • HD files are HUGE! For example, at the highest quality setting 27 seconds of video resulted in a 75MB file.
  • Dealing with HD files are a NON TRIVIAL operation. Your computer might not have the right video codecs to decode the file, and even if you DID have the right video codecs, decoding H.264 requires a pretty beefy system, or a codec that performs very well.

I don't think I'll upload any FULL SIZED sample video (30 secs already = 75MB, I'd think I'd go over most 100MB limits). Just likely edit it and throw it up to YouTube.

Sunday, 21 March 2010 01:35:50 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Friday, 19 March 2010

UPDATE : This code doesn't work properly, go here for a properly working one.

I needed to resize an image in Silverlight and then save it out as a JPEG. I could have just used a transform on it then rendered it to a WriteableBitmap but the transforms were optimized for realtime performance and doesn't work too well when you need to maintain quality.

I stumbled upon a Bicubic Resize code in a library called AForge.Net and it was in C#, so it was simple enough for me to convert it to VB for me to use it in Silverlight. And since I DIDN'T find a lot of Bicubic Interpolation .Net resize code on the net, I'm gonna just put this copy up here.

As a bonus I kept on my comments in so you guys can see what was going through my head as I was working my way through the code.

Bicubic Interpolation
''' <summary>
  ''' Bicubically resize the src bitmap to the dest bitmap
  ''' </summary>
  ''' <param name="src"></param>
  ''' <param name="dest">Destination Bitmap, should be initialized to the requested size.</param>
  ''' <remarks>Original Source For This Function - http://www.codeproject.com/KB/recipes/aforge.aspx</remarks>    
  Sub Resize(ByVal src As Imaging.WriteableBitmap, ByVal dest As Imaging.WriteableBitmap)

      Dim startTime As DateTime = Now

      Dim srcwidth As Integer = src.PixelWidth
      Dim srcHeight As Integer = src.PixelHeight

      Dim destWidth As Integer = dest.PixelWidth
      Dim destHeight As Integer = dest.PixelHeight

      Dim xFactor As Double = srcwidth / destWidth
      Dim yFactor As Double = srcHeight / destHeight

      'Coordinates of src points and  coefficients.. WTF?
      Dim ox, oy, dx, dy, k1, k2 As Double
      Dim ox1, oy1, ox2, oy2 As Integer

      'new color values
      Dim r, g, b As Double

      Dim xmax As Integer = srcwidth - 1
      Dim ymax As Integer = srcHeight - 1

      For y As Integer = 0 To destHeight - 1
          'this is getting the original Y pixel if I'm not mistaken
          oy = y * yFactor - 0.5F
          'WHY is this necessary?
          oy1 = oy
          'WTF? It's getting the FRACTIONAL difference between
          'oy and oy1?
          dy = oy - oy1

          For x As Integer = 0 To destWidth - 1
              'same WTF as with the Y values,
              'maybe will make more sense later?
              ox = x * xFactor - 0.5F
              ox1 = ox
              dx = ox - ox1

              r = 0
              g = 0
              b = 0

              'this loop is to gather the interpolated
              'values of 2 pixels surrounding the current one
              For n As Integer = -1 To 2
                  'this gets the Y coefficient

                  k1 = BicubicKernel(dy - n)

                  'this seems to be getting the new
                  'Y pixel where the interpolated
                  'value comes from
                  oy2 = oy1 + n

                  'this is to ensure we're in the right spot
                  If oy2 < 0 Then
                      oy2 = 0
                  ElseIf oy2 > ymax Then
                      oy2 = ymax
                  End If

                  For m As Integer = -1 To 2
                      'for X coefficient
                      k2 = k1 * BicubicKernel(m - dx)

                      ox2 = ox1 + m

                      If ox2 < 0 Then
                          ox2 = 0
                      ElseIf ox2 > xmax Then
                          ox2 = xmax
                      End If

                      'get original pixel color
                      ' Dim origColor As Color = source.GetPixel(ox2, oy2)

                      'writablebitmap pixel is AARRGGBB
                      Dim srcColor As Integer = src.Pixels(ox2 + (srcwidth * oy2))

                      'set interpolated values
                      r += k2 * ((srcColor >> 16) And &HFF)
                      g += k2 * ((srcColor >> 8) And &HFF)
                      b += k2 * (srcColor And &HFF)

              'after calculating coefficients we have our new color               
              dest.Pixels(x + (destWidth * y)) = &HFF000000 Or (r << 16) Or (g << 8) Or b

      Dim endTime As DateTime = Now
      Diagnostics.Debug.WriteLine(String.Format("Time taken to squish {0}x{1} to {2}x{3} : {4} seconds", srcwidth, srcHeight, destWidth, destHeight, endTime.Subtract(startTime).TotalSeconds))

  End Sub

  Shared Function BicubicKernel(ByVal x As Double) As Double

      If x > 2.0 Then
          Return 0.0
      End If

      Dim a, b, c, d As Double
      Dim xm1 As Double = x - 1.0
      Dim xp1 As Double = x + 1.0
      Dim xp2 As Double = x + 2.0

      If xp2 <= 0 Then
          a = 0
          a = xp2 * xp2 * xp2
      End If

      If xp1 <= 0 Then
          b = 0
          b = xp1 * xp1 * xp1
      End If

      If x <= 0 Then
          c = 0
          c = x * x * x
      End If

      If xm1 <= 0 Then
          d = 0
          d = xm1 * xm1 * xm1
      End If
      Return (0.16666666666666666 * (a - (4.0 * b) + (6.0 * c) - (4.0 * d)))

  End Function

There's one caveat though, I didn't do any Alpha premultiplication with this code, which basically means if your images have a non FULLY opaque region, the results won't be pretty. Here's your homework assignment if you want to have that functionality.

I learnt 2 things while porting this code.

  1. Don't use Math.Pow() if your code is time sensitive, ie. it needs to work REALLY REALLY fast. Like in a game render loop. Takes a bit longer to run math.pow(x,3) instead of x*x*x. Not saying you shouldn't use it, just don't use it when MILISECONDS matter.
  2. Visual Basic's IIF statement isn't good for performance as well since BOTH true and false statements seem to be evaluated and does execution time is wasted when execution time matters. Better to use the usual IF..ELSE..ENDIF construct.

After my little exercise in dabbling with this, THEN I find a WriteBitmapEx library which pretty much seems to be a very useful class for raw manipulation of images in Silverlight, check it out!

Friday, 19 March 2010 00:24:20 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Sunday, 14 March 2010

Now that I've made my mobile hotspot belt, and then having everyone say... it's a terrorist's suicide belt. My aim was now to make the thing NOT look like I want to blow myself up with it. So again I head down to Daiso to see what kind of weird shit I can find and use.

Why do I love going to Daiso? Because for a crazy person like me, it's a supermarket filled with things I can use for my ideas and all going for a single price of RM5 so I don't have to think too much about how expensive the item I'm cutting up. And also, when I buy something I can think of it's FUNCTION and not of it's PRICE. So.. from today's shopping.

First of is a open ended measuring tape on belt carrying case.


Which I turn into my mobile router carrying case


COMPLETE with easy access holes for the power and USB ports.


A closed version of the measuring tape carrying case.


Is used to house the smaller 6V battery.


An old MiniDisc belt case.


Due to it's stretchable nature, can be used to carry the bigger 6V SLAB.


This is what the belt now looks like when multiple components are attached to it.


More like some dumb ass wearing way too much on his belt, less like some house made explosives. Some wiring is still exposed but most people wouldn't notice it unless they stare at it for too long.

The back of the belt where the power wires run along is covered by some felt and held in place with some velcro strips.


So, less exposed wiring means less people freaking out. :P While the belt works and looks proper now, I found a problem with the construction. The power jack that connects to the mobile router is too loose, it's easily jostled and causes the router to loose power long enough to cause a reset. I'll need to way  of securing the power plug to the mobile router if I want to use it this way.

Then I took a quick look back at my little insect cage layout.


And I realized that it's actually a pretty good configuration. First of all, as the components are more or less secured in the cage, they don't jostle around that much and thus the power jack stays put. The reason the router stays put is because of this.


The USB modem almost touches the edge of the cage, so it acts as a support and stops the router from slipping around in the cage.


While the larger 6V battery does slip around if there's too much movement, it's cushioned from the router by the strap securing the router. Unfortunately during my latest testing I noticed that when the router get's uncomfortably hot, heat is transferred to the top of the battery. Not very cool since there's a "Do not overheat above 60 degrees Celsius"  warning on the battery. Must see if I can do anything about that.

The cage design also allows for me to reach the power switch to turn the whole system on or off.


I guess I should stop trying so hard to make a wearable mobile router solution, and work more on how to make a proper transportation case for the whole setup so I can just throw it into a bag. :P

Sunday, 14 March 2010 19:52:38 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [2]  | 
# Saturday, 13 March 2010

Today I went to pick up some parts to complete my Mobile Hotspot Project, first of all I decided to get a smaller sized battery since the one I had original, is big and bulky. So I wanted to get something that's smaller and easier to carry around.


So I got this, 6V 1.2AH battery. My first surprise was that while the battery capacity was about 1/4 of the big battery, it costs TWICE as much! While I was soldering the connection wire I learnt something new. I should solder the connector first, before soldering the wires to the battery. Because I soldered the wires to the battery first while I was soldering the connector... I shorted the connection with my soldering iron, sparks flew! Good lesson...

So after the smaller battery was completed and tested to be working I created the other component which I wanted to make.


A 4AA battery holder, with normal alkaline batteries these would theoretically give out 6V of power which should be more than enough to power the router. I measured the current with a multimeter and got a nice reading of 6.6V, So I went ahead and plugged it to the router. And I was happily surfing the net with AA batteries.... for about 10 minutes. Then the router started flickering on and off, a good indication of low power scenario. I unplugged the batteries and measured the power output and I got... 5.5V!?!?!?

I figured it's because that when an alkaline battery is used out the voltage gradually decreases on a slope. Unlike a rechargeable battery which is at the same voltage for most of it's usable lifespan and then drops. I guess the way is to introduce more power into the loop.

Luckily I was prepared for this scenario. While I was thinking of using AA batteries to power the setup, I was planning to use rechargeable batteries. But.. a rechargeable AA battery only has a voltage capacity of 1.25V, 4x1.25V = 5V. Cutting it a bit close so I thought of an idea, which is to make a power booster to bump up the voltage.


This battery case will be linked in series to the power source it's connected to, boosting the voltage of whatever it's connected to by 3V. Once I plugged this in I can again power the router... for a while, once again I could see a very drastic drop of power in the alkalines once hooked up to the router. It's obvious that alkalines aren't the best source of power to be used in this scenario.

I then decided to work on a power switch so I can turn power on and off when I wanted to without having to disconnect the power source to the component.


You might have noticed that each piece is more or less interchangable. This allows me to have some form of extendable system, for example I can have the router powered by 4AA batteries, as well as controlled by the power switch.


Then if needed to, I can plug in the booster pack.


Depending on the situation, I can plug in an extension wire, and then the lightweight 6V battery.


The reason I needed this extensibility was because I had a crazy idea, and it involves this thing.


A belt strap... cause I want to try and do this.


Hook everything up to it and really carry it around in a portable manner, the problem of course is that if people saw a SLAB strapped to someone, they probably would think that I'm a suicide bomber or something!

Anyone have a good idea to make a belt like this look less like a suicide belt?

Saturday, 13 March 2010 21:51:42 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Friday, 12 March 2010

There are times when I wish I had more training and understanding about how to build electronic hacks. Especially at times when it involves AC current.


Here I've taken an AC/DC adapter, replaced it's head with a composite jack.


Just so I can charge the SLAB I gotten for my portable hotspot project.


And I don't think I chose a safe spot to do it too!


Well, power should flow from the higher 7.5V of the adapter to recharge the lower 6V of the battery.. I THINK! The charging method matches what Adrian used in his battery extender project. But heck, I'm not sure if I done everything right!

Also, the power adapter is FICKLE!! Sometimes when I turn it on it pumps out 3.5V, sometimes.. it pumps out 7.5V.. it's weird! And... how do I know if the battery is being charged? Well... the adapter was hot for a while. And I think at charge the battery has a 6.5V rating.

Maybe I should abandon project Mobile Belt?


Friday, 12 March 2010 22:26:41 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 


Just one more!

Friday, 12 March 2010 09:50:27 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Sunday, 07 March 2010

Got a new toy recently. This here is the Sapido GR1102


It's basically a compact internet router.


So you can use this to share a hotel internet connection and what not, just like a normal router. But of course if it was just another compact router, I wouldn't have gotten it. :P

Along with a couple of other features which you can find out about on the product website, the 1st reason that I got the Sapido is that you can do this.


You can plug in a supported USB 3G modem which can then be shared wirelessly. This is especially handy when you got to meetings in other people's offices and you'd rather not (or are not allowed to) connect to their office network to get internet connectivity. You might argue that you could just connect the modem to your notebook and do the same thing, but what if you had multiple people from your office attending the meeting? Even though you can use internet connection sharing in Windows to share the connection, a dedicate device offers better performance... and your machine doesn't wait cycles trying to act as a router.

All this is fine, WHEN you have a power plug to connect to though. That's why here's the other reason I got this nifty little thing.


The GR1102 is able to be powered by 5V delivered via a USB mini cable. Or if you swap out the AC plug with the supplied connector.


You can then power it with DC current ranging from 5V ~ 12V. It sounds GREAT in theory, all I have to do is bundle this along with any one of my USB power supplies and I can be a mobile hotspot wherever I go. But what you can't see is the current requirements. Let me adjust the image so you can see the writing on the power socket more clearly.


It says "5-12V Min 10W". Now how would you go about getting 10W from 5V? It would mean that the power supply would need to be able to deliver 5V 2Amps(!) Checking with the Sapido website I found out that you don't actually need 2A, but rather just 1.5A. This is still a VERY high current requirement. As I mentioned in my car charger article previously. Sometimes it's not just a matter of volts but also amps in order to power your devices. Let me give you some examples of 5V power sources you have access to. Your computer's USB port is rated for 5V 1A, so the Sapido can NOT be powered by just ONE USB port, so you'll need to use a Y cable to power it. A typical USB battery source like what I have, outputs 5V but in varying current ranges from 500MiliAmps (apologies to people who actually know how to write the proper current notation, cause I CLEARLY DON'T!) to 1A. This is because they typically use some form of a 3.7V LiIon battery in them and then boost the voltage to 5V lowering it's current capability as a result.

So after futilely trying out a few other external batteries in the market, I figured I needed to build my own power source, a battery that clearly delivers the required voltage without passing through any voltage converters. I did the math and decided that I could build a battery pack out of EIGHT AA BATTERIES (8 x 1.2V = 9.6V, y 1.2? Rechargable batteries mar!) But I decided to try this first.


This is what we call a SLAB (Sealed Lead Acid Battery), You don't usually see one on it's own like this but it's used in thing's like UPS's, Motorcycles, and other equipment.  It's a good choice for powering the Sapido because SLABs have (AFAIK) high current capacity, It's NOT a good choice for portability because SLABs are HEAVY! This one weighs errr.... more than 500 grams less than a kilo.

While SLABs are rechargeable batteries, I don't have any experience in building whatever that will recharge the battery so I referred to Adrian's old battery extender guide since he used a SLAB before. So half an hour later and again reminding myself I have no idea how to solder connector plugs properly I ended up with this.


And it works perfectly!! The battery supplies enough power to the router and I have my mobile hotspot. Or do I? I realized that not many people have actually seen a SLAB before, in fact I'd think that most people would have seen SLABs being used as bomb triggers in movies or TV shows. So I told myself carrying a SLAB with wires and tape all over it might not be such a good idea right now. I head on over to my favorite place for finding weird shit nowadays – Daiso. And I ended up with this.


For those of you who are thinking WTF? This is an INSECT CAGE, I decided to get this one instead of other normal cases because the router can get QUITE hot when in use, so the open ventilation should be sufficient to cold it off. I used the straps from my previous attempt at a car pc to secure the devices.


The 2 things just barely fit into the case itself, I haven't really done a proper test run yet cause I haven't been able to obtain a proper adapter to charge the SLAB and thus I don't know how long the power will last (Unless someone tells me that it's ok to pump 9V into the SLAB to charge it even though it says it's charging voltage is 7.2V) I'm really interested in seeing if the router will melt the cage after prolonged use!

Sunday, 07 March 2010 21:27:32 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 

I still remember taking this picture.


This was in 2008, WZ was just slightly over a year old then but he wanted to try and drive. And now...

Soon... soon...

Sunday, 07 March 2010 00:26:10 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [2]  | 
# Friday, 05 March 2010

Just wasted my time paying attention to the #WP7Dev hashtag on Twitter just now, I (as well as other developers I think) thought it was to coincide with the announcement of the available frameworks on Windows Phone 7 Series done here. Another interesting thing to find out was that MS is still gonna push WM6.5 hmmmm, most likely WM6.5 is gonna become the preferred Enterprise App developement platform for writing company specific applications and the like, and WP7 for end users. That'll make for an interesting split... we'll see what happens.

So I was right about my predictions on XNA support in Windows Phone 7, I wouldn't call my prediction that Silverlight 4 support is right until they announce it at MIX, this is because from my point of view. The SL4 beta that we have access to is not fully suitable/capable of being an actual client framework yet. Hopefully something will change at MIX '10

Which was my main peeve about the Q&A session just now. They called it a Q&A session, but when most questions could not be answered, or had to be answered with a WFM (Wait for MIX) remark. WHY DID THEY EVEN BOTHER TO CALL IT A Q&A!!!

Just make the announcement on Twitter about the frameworks and leave it at that then, then people won't be pissed when they can't actually get any answers out of you since you never said you'd answer questions!

Friday, 05 March 2010 11:24:36 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  | 
# Thursday, 04 March 2010

Kids around my part of the world most likely would know about Masked Rider, basically it's a super hero that fights monsters on a weekly basis, and it has been around for a long long time. The main thing that made it cool for us kids was the transformation belts which the heroes wore, or drivers as they are called. So anyway here's a video of the latest Kamen Rider Double's transformation sequence.

And now... this is how the TOY works.

It pretty much works EXACTLY THE SAME!!! I was really surprised as to how similar it was compared to the one depicted in the show. And then there's the detail of the thing.


It looks almost exactly the same to me. Even the memory modules in the show also look just like the toy. Down to the visible speaker at the top of the unit.


Such good design and detail leads me to one question.


Which came first? The toy or the prop? Cause I think it's sure possible that they designed the toy, ensured how it works. Then made use of the thing in the show. What an impressive way to make a toy which every Kamen Rider watching kid would want!


It's not like I can wear the thing!

Thursday, 04 March 2010 23:32:34 (Malay Peninsula Standard Time, UTC+08:00)  #    Comments [0]  |