Upgrading SSD in Apple MacBook Pro Retina (Late 2012)

For some time now, I have hit the storage limit on the 256GB SSD in my Late 2012 Apple MacBook Pro Retina. I’ve needed to move a significant chunk of data to external drives, which impedes access and frankly is a pain in the butt. I’ve considered a number of methods to upgrade the SSD, but Apple decided to use a proprietary connector for the SSD (rather than using the mSATA or, more recently, the M.2 standards), which has made upgrading more difficult/expensive than it should be. However, even though there were a few minor roadblocks, I ended up successfully upgrading the SSD using a combination of 3rd party modules. Since I could not find anecdotal reports of similar upgrades, I wanted to throw mine out into the ether.
Read More

Magic Lantern HDR video to tonemapped video with MATLAB scripts

I have a Canon T3i with a Canon EF 50mm f1.4 lens that I use for the gross majority of my day-to-day photography these days. I’ve been using a custom firmware for the Canon called Magic Lantern that provides a some interesting (and useful!) functions. One of them is HDR video. Here’s a beautiful example of what can be done:

I tried my hand at processing the HDR video output and was able to get a reasonably nice tone-mapped video:

After the break, you’ll find how I processed the initial Magic Lantern video using MATLAB and exiftool and tone-mapped the output using Luminance HDR.

Read More

Preparing a “Blobby” Object for Printing with Shapeways

I have been working with a 3D blobby object for some of my pilot studies on shape from shading and texture that I would like to 3D print. Back at Rutgers University, we had a MakerBot Cupcake, but now that I am in Germany, I need to find alternatives. I have been looking into getting the 3D object printed using Shapeways.com but there have been a few hiccups along the way, so I wanted to describe my experiences in the hopes that it might help someone else avoid these issues in the future. The object was generated in MATLAB using a simple script (see 3D “Potato” Generation using Sinusoidal Pertubations) and rendered in our 3D environment:


So the question is: What do I need to do to get this 3D object printed at Shapeways? Click through to see the steps that I took to get this 3D model printed economically.
Read More

Effect of repeated JPEG compression on image quality and content

There are a number of videos online illustrating the effect of increasing JPEG (JPG) compression on both file size and image quality (see example 1, example 2, or example 3). I wanted to try recompression on my own data because the effect can be recreated quickly using a simple MATLAB script. It is a very simple demonstration of the effect of lossy image compression. For a simple demonstration of the effect of compression, I load an image into MATLAB and then progressively increase the JPEG compression (by decreasing the ‘Quality’ parameter in imwrite), saving each incremental image as a frame. I then load all of the frames and assemble them into a video file. Here’s an example of increasing image compression at 10 frames per second:

In addition, I tried recompressing the image to see the effect of repeated JPEG compression on the output. An initial image is loaded, it is compressed, then that image is loaded and compressed at a lower quality, then that image is loaded and compressed at an even lower quality, and so on and so forth. Here’s the output at 10 frames per second when we do this from the least amount of JPEG compression (‘Quality’,100) to the most amount of compression (‘Quality’,0):

Just to be artistic, we can then repeat the cycle 10x and observe the effect of repeated compression. Here is an example at 30 frames per second with 10 loops of the repeated recompression:

Click through for the MATLAB code and a couple more example videos.
Read More

PIC16F628 Serial 4 LED PWM DR1r6

I’ve been working on a project in my spare time with two friends to create some ambient light controllers, so I thought I’d just post two short videos to demonstrate the current state of the project.  In the current iteration, they can be used as wall-washers or they can be enclosed to create ambient light cubes/spheres/pentagonal cupolas/rhombo-hexagonal dodecahedrons/etc.  Each module is addressable and uses a PIC16F628 to control each of the RGB LEDs (which were purchased from the eBay seller jeledhk with the description “Superflux RGB 5mm R/H LEDLamp 8Kmcd COMMON CATHODE”).  The PCBs were created using BatchPCB.com for $5 each (+ ~$15 total for S&H and setup) and are beautifully etched, drilled, and silkscreened (although it took about 1.5 months to receive them).  Ok, less talk, more videos; one video on the front page and another after the jump:

Read More

Boodle – A stolen iPhone locator

I recently purchased an iPhone and have wanted software that not only gave location information, like Erica Sadun’s wonderful findme software (or my, ahem, GPS projects), and sent phone information, like Fuel’s great WeeGee anti-theft package, but combined the tools into a more robust tracking utility. In other words, I wanted both location and information tracking in my iPhone. So, I set about combining the utilities into a script that will send location updates periodically to twitter and will email me with call history, SMS history, web history, location, and pictures if it is stolen. Cool!

Read More

Connection Cloud Back Up

Ok, so my last post was a little premature. I was able to modify the source code to get Connection Cloud back up and running! If you use Facebook, I always appreciate individuals trying out my applications (such as Connection Cloud) and giving me feedback.

Connection Cloud Back Thumb

A snapshot of my social network on Facebook.  Red circles are girls, Blue circles are boys, and Black circles are undefined (i.e., the individual’s privacy settings disallow 3rd party information acquisition)

Connection Cloud Down

Unfortunately, there was a code change over at Facebook and my Connection Cloud application was broken. It was causing errors left and right, so I disabled it so that I could try to debug the problem (hence why it is no-longer accessible). I have had so much work as a first year graduate student that I have been unable to focus on the Connection Cloud application and fix it. Hopefully I will have some time this winter break to look at the code (along with focusing on other prior commitments); however, I cannot guarantee that I will have the free time to get it fully debugged and working in the short-term.