The 2007 iMac is really a funny machine. On the one hand, it’s a relic. It’s nearly 7 years old, and in computer time, that’s an eternity. So many things have changed since 2007. Yet, at the same time, it has a 2.4ghz Core 2 Duo, which is dual core and 64 bit, plenty powerful for most tasks. It also has a beautiful 20” monitor. The disk situation is a different story. The default model came with a 500GB sata drive, and the DVD superdrive is actually connected via PATA.

When my dad told me that the iMac was running slowly and needed a tune-up of sorts, my initial instinct was, “Dad, this thing is 7 years old. Let’s get you a new one.” However, when I played around with it, I found slow shutdown, slow bootup, slow opening of programs. This told me that the disk was the weakest link in the machine. I told my dad that I would try to replace it with an SSD to see how that would work. I told him that if it worked, it probably would breathe another couple years of life into the computer, and if it didn’t, I could eBay my recent purchase and he wouldn’t be out much cash for the attempt.

I got a great deal on the 480GB Crucial M500 SSD. I also ordered a bracket that would be used to mount the 2.5” SSD in the place of a standard 3.5” hard drive.

Screenless iMac

...continue reading


FreeNAS is awesome. Also, FreeNAS is hard... I recently switched from a Synology device, and while I am already appreciating the increase in functionality and power, it's certainly not as easy to do some basic tasks. One of those tasks is setting up a Time Machine share where all of my household Macs can back up. Between reading the tutorials and giving some trial and error myself, I think I have come up with a good solution.

And before I get started with the step by step guide, let me reiterate one thing: Permissions, Permissions, Permissions! If you ever find yourself banging your head against a wall because something in FreeNAS isn't working as you expect it to, the likely culprit is permissions. Once you wrap your brain around them, though, things become more simple. Hopefully this guide helps put a foundation around that.

The Default FreeNAS Home Screen

The Default FreeNAS Home Screen

...continue reading


I had been thinking about getting a network attached storage system for years. Even before the Snowden controversy, I didn't love the idea of my files being stored in a cloud like Dropbox. I also wanted to have some kind of home theater strategy with my ripped media. I pondered the options for a long time, and my final decision came down to buying a Synology device or building my own device with FreeNAS.

I chose Synology for a multitude of reasons

  • Their DSM software looked awesome.
  • I like to tinker. Having a commercial product would keep me from being able to constantly open the NAS up and mess with it.
  • They have a suite of applications that can run on DSM.
  • It's easy to set up, and Synology Hybrid RAID is auto-expanding and very cool, a la Drobo.

I've had my DS1513+ since it was first released, and while it has definitely done its job, there are some things that bother me about it. First of all, bugs...

There have been some major security bugs with Synology. For example, how about that time when everyone found bitcoin miners running on their boxes? Their CloudStation solution is great for sync'ing files, but there are still loads of bugs with it, especially on OS X. I have reported these bugs repeatedly, and they still don't get fixed. For example, iWork files are treated as folders, rather than files, and the internal package contents get updated separately, causing iWork to constantly ask you to re-save the document during use. Cloud Station creates conflict files all the time, it often freezes Finder, etc. They either ignore bugs or introduce new ones with every release, it seems. It's great that Synology has so many mobile applications, but these are buggy as well. They are supposed to keep me logged in, but I continue to have to re-login on my own. Their UIs aren't great, and the functionality isn't killer.

Speaking of security, all remote NAS access with Synology is being migrated to quickconnect, their solution of giving you a unique ID that lets you acccess your NAS wherever you are, without setting up port forwarding on your router. This is theoretically a great solution, but the service goes down from time to time. And furthermore, I got a NAS so I could get away from being dependent on a hosted vendor for my data. Even though all my data is on-prem with a Synology NAS, I still depend on their external service to access it via quickconnect. With the development process for DSM being closed source and them not fixing bugs I submit, I don't really feel like I can trust their device with my data. Synology still doesn't support volume-level encryption either. And if you do encrypt a shared folder, some features like NFS are disabled.

In terms of applications I run on my DiskStation, I really only use CloudStation for file syncing across all my devices. I tried to run Plex, but it requires transcoding to be super useful, and the CPU on the DiskStation isn't up to the task. Thus, I built my own dedicated Plex box. I also use my DiskStation as a TIme Machine destination for all the Macs in the house, but that can be done with any NAS.

So... Why FreeNAS? FreeNAS is open source, and I can build my own box. While being open source doesn't guarantee security, the open transparency and development process certainly makes me feel better about security. Because I can build my own box, I'll build one that is silent and uses less power than the combination of my Plex box + Synology NAS. It'll have more RAM and be faster. It will be fast enough to do the Plex transcoding. Furthermore, rather than depending on a black box Synology Hybrid Raid solution, I'll be on the tried and true ZFS, which I have far more trust in. For sync'ing my files, I'll use bittorrent sync, which is a P2P sync'ing solution. I won't need to depend on Synology's Quickconnect service.

Thus, it's decided! I'm excited to have a new geek project! I'll be buying all the parts for my new FreeNAS box, and then I'll sell my DS1513+ and my M93P Tiny machine soon after. Watch this space... I'll be documenting my build!


Are you familiar with Plex Media Server? If not, you should be… it’s awesome. Well, it’s awesome assuming that you either take the time to rip all of your media (me!) or you’re okay with pirating content from the internet. Once you get all of your movies, TV shows, music, pictures, etc, nicely organized, Plex Media Server is a tool to stream that content to a variety of devices, whether it’s the family TV in the house or an iPhone on the go. It has the ability to transcode media on the fly, adaptively taking a 1080p blu ray rip and streaming it at a lower resolution / bit-rate to your phone on the other side of the country. It can process multiple streams at once, assuming your hardware is capable of handling it. Plex makes clients for iOS, Mac, PC, Android, etc.

I bought a Synology network attached storage device some while back, and I started experimenting with running Plex on the NAS itself, but the NAS doesn't have the CPU power to do any sort of intense real-time transcoding. I decided to build a small server to handle all of my Plex needs. I wanted the server to be small, I wanted the server to be silent, and I wanted it to be powerful. I spent some time putting together some potential custom mini-itx builds, but in the end, I couldn’t quite find the right combination of components that would be small and light enough and still powerful. None of the cases out there would fit just right in my small apartment. I somehow stumbled upon the Lenovo M93P Tiny. This is a pre-bulit machine, and it’s quite compact. It has room inside for a 2.5” drive and runs Intel’s most recent Haswell chips. The version I sprung for had an i5 4570T. I could have opted for an i7 CPU, but I thought that might be overkill for my needs.

... and I have a small hand!

... and I have a small hand!


The M93P Tiny doesn’t appear to use a standard motherboard / power supply, but that’s part of the reason it’s so small. And while it doesn’t use a standard mainboard, the components are still easily accessed and swapped. Rather than paying Lenovo to upgrade the internals, I purchased a Samsung 840 EVO SSD and 16GB of RAM. I chose that particular SSD because at the time of purchase, it was widely considered to be one of the fastest SSDs out there. As my media resides on a separate network attached storage unit, there’s no need for much storage space on my actual server. I just need an SSD for the operating system and any applications I add.


Opening up the M93P Tiny is quite easy, and thankfully once, open, all of the components can be easily accessed and removed.


Swapping the hard drive for an SSD and upgrading the RAM was easy. As much as I love the M93P Tiny hardware, I was annoyed that it didn’t include a manual. I had to go online to download the manual in order to learn all of the BIOS commands. I was also annoyed that it didn’t include a Windows 8 CD. I wasn’t planning on running Windows. I was going to run OpenSUSE on it, but I still technically paid for Windows 8. I need to follow up with Lenovo and see why a copy was not included.


After I swapped out the components, the unit booted up without issue. I created an OpenSUSE USB installer, and I installed the operating system from there. I plugged the system into my HDMI port on my TV, and I installed everything that way. This was just a temporary solution as once the operating system was installed, I planned on administering the system via SSH and VNC, rather than with an actual dedicated screen, keyboard, and mouse. This will be a headless server.


If you’re looking to build your own Plex Media Server, I really recommend taking a look at the Lenovo M93P Tiny. It won’t be cheaper than a DIY build, but there’s a good chance that it will be smaller, quieter, and more powerful. I’ll create future blog posts about how I configured this tiny machine to be my perfect little Plex Media Center.

Last Christmas, my wife and I went with her family on a trip to Mexico. We wanted to make sure we had internet connectivity the whole time so we decided to give TEP Wireless a try. TEP Wireless is an international hotspot rental company. You let them know what country you're going to, you pay a fee, and a device gets sent to you. When you land in your international destination, you hook up to the device, rather than using your expensive cellular roaming, and just like that, you should have internet.

Needless to say, I had a *very* rough experience the first time around. I won't recount the entire thing here, but the original post is here.

That experience happened almost a year ago exactly, and a few months ago, I was contacted by Jordan Frank of TEP Wireless. He told me how bad they felt for my original bad experience and asked me if I was willing to give the service another shot. At the time, I didn't have a need for the service, but when my wife and I ended up planning a trip to Australia, this seemed like the perfect time to give it another go. ...continue reading


UPDATE: I have given TEP Wireless another try, and it worked just fine for me the second time around. Please see my new post here. I am leaving my original post intact, though, as it is an accurate telling of my previous experience.

I'm not sure how long this post will be, but I'll just start writing about the whole experience. My apologies in advance if it turns into a bit of a rant, but case it does, let me give you the conclusion up front. DO NOT RENT A WIRELESS HOTSPOT FROM TEP WIRELESS! With that out of the way, let's continue. ...continue reading


I really wanted to love my Simple.TV. The premise behind it was so simple, just like the name. The premise of Simple.TV is to essentially create a DVR server that can serve up television to any device with a web browser or a Simple.TV app. It's just a standard tuner. No cablecard or anything like that. Also, bring your own harddrive. It can stream in HD quality to your local network or anywhere else, bridging functionality of a TiVo and a Slingbox together, except... more simple... That would be great if it worked, but it actually doesn't work. By "it doesn't work," I don't mean that it isn't good enough. I mean it actually doesn't work.

I really wanted to like Simple.TV. I backed them on Kickstarter, ordering two units. I live in San Francisco, but being a Los Angeles native, I wanted to install one of these in my parents' house so I could stream Lakers games up here, and I planned to install one here. When the Engadget review came out, I thought they were way too harsh. Heck... I was so excited to receive my Simple.TV that I even made an unboxing video. That's how lame I am!

After I unboxed it, it was time to set it all up! The process of plugging everything in is quite simple. It has a coax passthrough so if you're already using something like a TiVo, which I am, you can pass coax into the Simple.TV and back out to the TiVo. That worked just fine. There are two ethernet ports. I believe the second one is for passthrough of ethernet, but it is labeled only as Ethernet2, and I can't find any documentation about it. There isn't a product manual for the Simple.TV, not even in PDF form online. There's a power port, and then there's also a USB port for the external drive. That's where I hit my first snag. ...continue reading


I love Apple products, but mostly, I love technology. I love playing with new gadgets and staying on the bleeding edge of what is new and fresh. I have had every iPhone since the original, and I currently own the 4S. My wife has the iPhone 5. If this were any other year, I'd just go and buy an iPhone 5. But while the iPhone 5 is by far the best iPhone of all time, it's also the one that has me least excited to upgrade.

I already have iOS6 on my phone, and after using my wife's phone pretty frequently, I can say that the extra bit of vertical resolution doesn't make much of a difference in day to day usage. I don't care that it's even thinner. The iPhone 4S is thin enough for me. I do need LTE, though.

Oh another thing - I hate Android. It is the least elegant operating system out there. I can't believe that I have a quad core CPU on my Nexus 7, and I still can't get perfectly scrolling menus like I can on my iPhone 4S. Every time I use an Android device, I never feel like it's fully utilizing the hardware, and the software is always a bit sluggish.

Windows Phone 8, on the other hand, is really intriguing to me. It's exciting. It's new. It's fresh. And the Nokia Lumia 920 looks like an excellent rendition of that platform. I've placed a pre-order, and my experiment is to see what it's like to switch from a 64GB iPhone 4S to a 32GB Nokia Lumia 920. I'll do my best to blog about the delights and downfalls.

I ordered an unlocked, contract-free version. If I end up hating it after a year, I'll be contract-free, and I'll get the next iPhone, and I'll move to Sprint for their unlimited data. Wish me luck!

1 Comment

I gave a webinar about building your first application on MongoDB on May 15, 2012. The presentation began with a brief overview of MongoDB, jumped into a possible use-case (creating a metadata catalog), and then I jumped into the MongoDB shell to show some live CRUD operations. My slides are posted below, and I've also added some of the sample queries you can run with the MongoDB shell. Let me know if you have any questions!




...continue reading


These are the slides from my presentation on schema design in MongoDB. I presented them at MongoSF 2012. The full video can be found here. Let me know if you have any questions!