Macbook Pro with Retina Display


Yeah, I couldn’t believe it either. Never thought I would ever buy a Mac. That makes it the 3rd Apple product I’ve ever bought – first was a 1st gen iPod Shuffle circa 2005, and second was a 1st gen iPod Nano circa 2006.

Couple months ago I gave my laptop to my dad (who wanted an upgrade from his 6 years old laptop to my 3 years old laptop) because I didn’t think I would need it for at least a year or so since I have graduated… and then of course I decided to go to grad school, meaning I still need a laptop! So I started looking for a new laptop.

I’ve bought a few laptops over the years, so I have pretty much figured out things I liked and hated. When I started looking this time I already had a PRETTY good idea of what I am looking for – long battery life, relatively light, and not a Mac. I don’t really have anything against Macs (unlike iOS, which I have many things against), just that they had always been overpriced, and I could never afford them. This time I am almost completely ignoring performance because I realized that I don’t play games on my laptop enough to worth sacrificing weight and battery life for a fast CPU and discrete GPU. That pretty much puts me in the “ultrabook” segment… whatever that’s supposed to mean.

There were quite a few laptops I was looking at – Lenovo t440s and Asus UX302 being the most likely candidates. They both have around 7 hours of battery life, and are relatively light, so they do fit the bill.

And then, for some bizarre reason, I decided to check out just for lols.

I was surprised!

Macbook Pros now start at $1,300, compared to around $2,000 just a year or 2 ago. These machines do have very good specs for the price – very nice display, 700MB/s SSD, Intel Iris (5100, which is significantly faster than Intel HD 4400 used on most Haswell laptops), and 9 hours battery life claimed. So I started reading reviews, and became even more impressed.

Most reviews were very positive, and they all mentioned that the battery life is actually closer to 10-11hr than 9, which Apple claims. I won’t bore you by quoting those reviews further, since if you are considering MacBooks, too, you have probably also read those reviews already.

So I’m just going to write about the things most of those reviews didn’t mention, and I thought were important in making my decision –


  1. The screen is 16:10, instead of the much more common 16:9. Whether that’s a good or bad thing depends on what you use the laptop for. 16:9 is better for watching movies, and 16:10 is better for work (at least for coding). Vertical space is very important because a few lines of extra screen space means much less scrolling up to see function definitions, variable declarations, etc. On the other hand, horizontal space is not very useful unless you write code in very long lines.Another thing to note is that since 16:10 is closer to square than 16:9, the same diagonal length in 16:10 equals more area than a 16:9 screen with the same diagonal length. In fact, if you do the math, you’ll see that 13.3″ in 16:10 gives you an area that is almost exactly half way between 13.3″ and 14″ in 16:9, and the same vertical space as 14″ in 16:9.
  2. The 13″ MacBook Pro has a 70 WHr battery. That is larger than almost all other ultra ultrabooks including the ones with longest battery life – t440s (47 WHr), UX302 (50 WHr) and HP Spectre 13 (51 WHr). That’s where the battery life came from. There are no weird secret software optimizations or anything. If you have a battery twice as big, it will last twice as long.

    Sorry software guys… this one is a solid hardware design win for Apple. Software optimizations may have helped a little, but no doubt most of it is because of the much bigger battery, that hardware guys managed to design in.

    Modern lithium polymer energy density is about 160 WHr/kg according to Wikipedia, which means an extra 20 WHr would weigh about 125 grams more.

    With 125g more weight in battery, and a 5% bigger screen, it’s understandable that it’s very slightly (about 0.1-0.2 lb) heavier than the other ultrabooks, and I think it’s a very good tradeoff that all the other manufacturers seem to be very reluctant to make. I would take 3 more hours of battery life over a slightly lighter laptop any time, especially since the charger weighs way more than the difference, and I would have to carry that, too, if the laptop can’t last a whole day. This is probably the single biggest reason I chose the MBP – that it has about 2 hours longer battery life than the next runner-up.


  1. Thunderbolt ports are useless, and the MBP has 2 of them. It’s something Apple has been trying to push for couple years, and has obviously failed to compete with USB 3.0, for a variety of good reasons, like insanely high cost for similar performance. Yet, they stubbornly still waste a bunch of valuable IO space on the MBP to put in 2 of them, which results in the elimination of the RJ45 (ethernet) port, as well as possibly another USB 3.0 port, both of which would be much more useful. The only use for a Thunderbolt port is with a gigabit adapter that converts Thunderbolt to RJ45… why not just include a RJ45 port instead?They did similar things with Firewire. Now it’s Thunderbolt. Why can’t they just use industry standard connectors?
  2. The machine is completely un-upgradeable and un-repairable. CPU and GPU are not upgradeable as always, RAM is not upgradeable because it’s soldered onto the main board, SSD is not upgradeable because it uses a proprietary (PCI-E) connector, and battery is not replaceable because it’s totally enclosed and attached to the rest of the machine with strong adhesives. The use of proprietary connector on the SSD MAY be justified – since the performance we are getting from those SSDs is much higher than SATA 3 limit.

    This kind of designs may be necessary to achieve the size and performance they are aiming for (70 WHr battery in a chassis this small), and is definitely an engineering feat, but it’s pretty clear that it’s not all out of necessity – for example, the use of non-standard screws is totally unnecessary. This I consider a serious downside of this machine, and almost convinced me to not buy it.

    Being able to repair my laptops is very important to me, and the MBP is very bad in this department.

At this point I was still undecided, so the next day I went to an Apple Store and played with an actual machine for about an hour, and had a few more discoveries.

  1. The screen is gorgeous. This is something everyone says… and it’s true. The viewing angle is also very close to 180 degrees. That said, I also looked at the MacBook Air 13″ to compare the screens (MBP has 2560×1600 resolution, and MBA has 1440×900), and I did not notice any difference. I don’t believe “retina” (the Apple term for high resolution apparently) really helps. It’s just a marketing thing. Though, if you are planning to sell the machine later, it can significantly affect the resale value of your machine, since many people do care about that.Also worth noting is the way OSX handles these insanely high resolutions.

    If you have tried to use Windows with this kind of resolutions, you would notice that everything becomes painfully tiny, because everything in Windows is based on absolute pixel counts. Sure, you can increase font sizes, but then everything looks ugly and now fonts and other UI features are out of proportion.

    The way OSX handles it is very similar to the way Android handles it (I’m not sure which one came first). Basically they define a concept of device-independent pixels. So basically developers would design UIs based on, say, 300 DPI screens, and the device would automatically scale everything at runtime based on the DPI of the actual device, so UI features will look the same on all resolutions. In the case of OSX, most applications would design UIs to be scaled up (in pixel count) on high resolution displays, with only some parts of the UI using the screen’s full resolution (eg. the image display region of Photoshop, or the preview screen of iMovie). For scaling of UI features, it’s unclear if the scaling is done on the geometries before rasterization (and rasterization happens on the high resolution surface), or if they are rasterized then scaled (blurry). I imagine it’s the former case since that makes more sense, but I don’t know.

    So then instead of choosing resolutions, the user chooses the scaling, to make the screen “look like 1280×800” or 1440×960, or 1920×1200, etc, and all that affects is scaling on UI elements. Very neat.

  2. The trackpad is also very nice. Probably the best trackpad I have ever used. It’s roomy, and the lack of right button doesn’t bother me nearly as much as I had imagined (by default, a 2 finger click is right click, but it can also be changed to a region on the trackpad). I am using the default 2 finger click setting right now, and it didn’t take me long to get used to.

    There is also definitely a lot of software processing going on to make using the trackpad easier. For example, on Windows and Linux, a lot of times when you click or tap on something, the cursor will move away at the same time (because the finger has to move a bit to do the tap), so you would miss the click. On OSX that very rarely happens. Usually the cursor stays completely still. That is pretty impressive. Multi-touch gestures are in general pretty intuitive and work well. Not perfect, but the closest to perfect I’ve seen.

  3. OSX is really easy to pick up, and I’m pretty used to it by now. After all, it’s based on BSD. It doesn’t have an extensive package repository like APT, but all the standard UNIX command line utilities are there, so it’s not too bad.
    But then I am already very familiar with Linux, and OSX is much more similar to Linux than Windows. If you have been using Windows all your life, it may be a little more difficult.

In the end I still decided to buy it mostly because of the VERY good battery life, build quality, screen, performance, and relatively low price, but it’s definitely not without flaws.

I would still recommend it in general obviously (otherwise I wouldn’t have bought it), but it’s a decision that you’d have to make (if you are thinking about buying it), based on how much you value the different aspects.

Took me about 1.5 hours to write this post (1800 words!), on the MBP, on battery with brightness at 60%, and wifi connected but mostly idle. It’s at 87% right now estimating 10:30 remaining. The reviews didn’t lie! Not sure why Apple is only claiming “up to 9 hours”. This is clearly more than “up to 9 hours”. Maybe they want to differentiate it from MBA?

Getting a 3D Printer – Part 3: MakerFarm Prusa i3


As mentioned in the last post, I ended up getting a RepRap Prusa i3, and MakerFarm’s version in particular.

Prusa i3 is an open source design, so there are many sources to choose from, in both assembled and kit forms. They are not exactly identical, however. Every manufacturer tweaks the design a bit, and use different materials, etc. For example, the MakerFarm version uses laser-cut wood and some more expensive versions use waterjet-ed metal. It all depends on what your budget is. The MakerFarm is one of the cheapest options, and while it does certainly have a few possible places for enhancement, I am extremely satisfied for what I got for the price (~$500).

I initially worried about the wooden frame, but after building it, it feels very sturdy, and the print quality has been very high (once properly calibrated).

Note that you can usually choose a hotend (the part that actually heats up plastic and feed it through the nozzle to be deposited onto the print platform) to go with the printer, and hotends are more or less replaceable with the same de-facto mounting standard. The most important decision here is whether you want an all-metal hotend or not. The biggest advantage of an all-metal hotends is the possibility to use more exotic high temperature materials like Nylon, polycarbonate, polyethylene, or polystyrene, that have some interesting properties (though obviously don’t try them until you are comfortable printing with standard ABS or PLA). With a non-all-metal hotend, some parts of the hotend would melt at the higher temperature required to extrude those materials. However, most all-metal hotends have reliability problems, and many don’t work well with PLA and clog too often. A clogged hotend can be anywhere from a ruined print to a ruined hotend (very often), which are quite expensive.

With the MakerFarm Prusa i3, if you aren’t interested in exotic materials, just get the J-Head. It’s a very reliable proven design that is used by hundreds of printers… from what I heard anyways, I never had one.

I chose the Magma all-metal hotend that is also offered with the MakerFarm kit, and while it broke on me, I am hesitant to blame it since I was very noob back then, and did a lot of very noob things to it, including leaving it heated up and not extruding for long periods of time, which I have since learned to be quite bad.

It eventually clogged up so badly that in the process of clearing it out (after soaking it in acetone overnight), I destroyed it. In general, though, I found it to be quite clog-prone, though that could be what I did to it. I have changed pretty much all the parameters since then, so unfortunately it’s impossible to tell which one(s) is the culprit.

I wasn’t done with all-metal hotends however, and ended up getting an E3D hotend to replace it, after reading all the rave reviews online. I couldn’t find any North American distributor, so I had to order it straight from Europe, which was a bit of a hassle, but I guess so is clearing out clogged hotends.

I’m very happy with the E3D hotend. After getting the parameters right, I’ve been printing about 12 hours a day for several days, and not once has it clogged, and the print quality is extremely high. There was even this one time when my computer crashed and it was stuck in the middle of a print, at 225C, for 8 hours, in a bunch of already-printed plastic. Still no clogging. Highly recommended.

If you are buying the MakerFarm kit now, I would recommend getting the J-Head, which prints ABS and PLA very well, and only upgrade to the E3D if/when you want to play with exotic materials.


Assembly is easy, but quite time consuming. The site says it can be built in 3 hours, but that’s really only the case if you have built a few printers before. A more accurate estimate for a first time builder would probably be on the order of 5-10 hours.

It’s really just like building IKEA furniture, except there are like 1000 steps. Very good video instructions, though.

There is minimal soldering required. The wiring consists of a bunch of “plug this wire into here” – very easy.

The hardest part is probably sourcing the 2 required components to complete the build – a power supply and a piece of glass.

For power supply, I’m using a Dell power supply from eBay, the D220P-01. Here are instructions on how to use it. Some people use XBox power supplies.

For the glass, I’m using a mirror I found at Canadian Tire. It happens to be exactly the right size and even have rounded corners for the screws! I roughened it with some very coarse sand paper so prints stick better (more details in the next post).

I wish they would ship the glass with the kit though. It’s one of those things that are very cheap, but hard to find if you don’t know exactly where to look.

Areas of Improvement for the MakerFarm Prusa i3

  • The heat bed is slow. I’ve found the ideal bed temperature for printing ABS to be 120C, and it takes about 20 minutes to heat up to that temperature. It’s a PCB based heater, so all we need is a PCB with higher copper thickness, but I haven’t been able to find one yet.
  • The stepper motors get really hot. 80C with my infrared thermometer, meaning the internal is probably ~100C. I added heatsinks to them, which seems to have lowered the temperatures by about 20C.
  • The stepper to threaded-rod coupler for the Z-axis is just a piece of rubber tubing. I found that they can sometimes slip, and cause all kinds of problems. I enhanced them with some crazy glue and sugru, and it seems to have worked.
Enhanced Couplers
Enhanced Couplers

That’s it! With these simple modifications my printer has been performing like a dream. For $500 + $2.24/ea for the heatsinks and $2.25 pack of sugru!

Not a shortcoming, but I’ve been thinking about adding an enclosure to the system to prevent very tall prints from warping. Most of them do already print pretty well with the current system, though.

Verdict: Highly recommended!

Getting a 3D Printer – Part 2: Choosing a Printer

At this point there are quite a few designs/products/kits available, both open source and proprietary, and they are in more or less the same price range (~$500-$2000).

There are quite a few things to consider.

Open Source vs Proprietary

In the open source category, most designs are from the RepRap project. There are a few very well tested and reliable designs, as well as a few very cool experimental designs for the adventurous.

One example of a well tested design is the Prusa i3, and it’s generally regarded as a good starting point for people with little/no prior experience with 3D printers, and that’s what I eventually went with.

While it is definitely possible to build a RepRap from the ground up just following instructions on the site, I wouldn’t recommend it because it would take ages to source all the parts, etc, and isn’t fun and really doesn’t allow you to learn much.

There are many companies/people that have collected all the parts needed to build a RepRap, and sell everything you need to build a RepRap as a kit. The RepRap site has a list of vendors of such kits, as well as assembled machines.

As for proprietary machines, the most famous ones are probably from MakerBot. From what I read, they seem to be pretty nice, but very expensive machines. With the smallest model starting at $1,375 with no heated bed (severely limiting plastic options, discussed below), and a tiny print volume, I don’t think it’s worth it. You can get a much more capable RepRap for about half that price. Don’t be misled by their layer height specification – all printers can do 0.1mm layer heights, as long as you don’t mind waiting couple days for small prints. It doesn’t mean much.

The Cubify Cube is also interesting, and is what I planned to buy initially, but I eventually decided against it because of the expensive filament cartridge system (most printers allow you to use generic spools, as long as the diameter matches), and apparently sub-optimal software support. And being a closed-source product means there are no alternatives, and you can’t try to fix it yourself.

Solidoodle, from what I heard, has non-existent support, but I didn’t look into it much. They advertise their printers as being destructible… I don’t know how useful is that. I don’t think I’ll be throwing my printer out of the window (and expect it to keep working) any time soon.

Printrbot also looks very nice, especially the new version with heated bed, but it had a couple months lead time when I was looking for a printer, so I didn’t really look into it.

Afinia has a small print volume, and was priced too high for me, so wasn’t considered.

The open source vs proprietary choice in this case is not only ideological – it has very practical implications, and which one you choose will depend on how you like to work.

At the current state of 3D printers, unfortunately, you will most likely hit a few significant problems before you can get beautiful prints out, and how you can tackle the problems depends on which path you take (open source vs proprietary).

NO printers work out of the box, despite what all the manufacturers say (at least below $3000). People have as many problems with expensive printers with proprietary designs as with those with open source designs.

With open source designs, you can try to fix it yourself, search on forums, try alternative firmwares, etc. This is especially true if you bought the printer as a kit and assembled it yourself – you’ll have a pretty good idea of how everything works, and be able to fix things as they break.

With commercial designs, you’ll be at the mercy of the manufacturer. You can’t usually use alternative software/firmware, and modifying the printer will probably void the warranty. Obviously then, choosing a manufacturer with a good support history is very important. But what if the manufacturer goes out of business next year, and their software is not compatible with Windows 9 (or whatever the next Windows version is at the time you are reading this)?

Ultimately I recommend getting a RepRap kit and assembling it yourself. That way you’ll get a lot of value for the money you are spending, and know the printer inside out and know how to fix it when (not if) it breaks, and don’t have to rely on a company staying in business, and continuing to provide good support. The only downside is 10-20 hours of your time assembling it.

Heated Bed?

A big problem in 3D printing is warping – the part deforming while getting printed due to some parts of the part getting cooled more than other parts while printing, and shrink more than other parts.

A heated bed helps by keeping the part hot throughout the entire print, so it can cool more or less uniformly afterwards (and shrink uniformly).

The 2 most common low end printing materials are PLA and ABS, both thermoplastics. PLA is more brittle, and printed parts deform easily when heated (for example, under the sun). ABS is stronger, can withstand very high temperatures, but is more prone to warping during printing.

Which one you choose is pretty much personal preference, but ABS requires a heated bed to print reliably. PLA benefits from, but does not absolutely require a heated bed.

I’d imagine a heated bed is even more important for higher temperature plastics like Nylon and Polycarbonate that people are now experimenting with because of their unique properties.

Having a heated bed is definitely a big plus.


Some printers have enclosures to further reduce warping by keeping inside air hotter than ambient, and also stops breezes from the outside world from cooling the part getting printed unevenly.

I don’t really know how much they help, but my printer doesn’t have one, and I would like to make an enclosure for it some day.

It’s definitely a plus, so I would get it if it’s not prohibitively expensive, but many people do print a lot of beautiful things on open printers.

Multiple Extruders

Most printers only have 1 extruders, which means only 1 material and 1 colour per part. A dual extruder printer would allow you to print parts with 2 colours for example.

Another cool use of the second extruder is to use it to print a different water-soluble support material, so it can simply be washed away afterwards.

It’s definitely nice to have, but I don’t think I’ve seen it in any <$2500 printer. It also makes bed leveling harder.


The hotend is the part of the printer that is responsible for melting the filament, and guiding the melted filament through a thin opening to be deposited on the part being printed.

If you buy a RepRap kit, there will probably be a hotend included, or you may get a few options to choose from.

There are many designs, and the most popular one seems to be the J-Head. The most important thing for a hotend is to be reliable. Jams are incredibly annoying, and sometimes requires replacing the entire hotend (which is not cheap!). Just read reviews online, and see what people say about the hotends you are thinking about getting. In most cases, it’s possible to buy and use hotends from third parties if you so choose. They are all compatible for the most part. Just make sure the voltage for the heating element is the same, and the voltage for the fan is the same (if there is a fan), and the thermistor type is properly set in firmware. If you choose to go down this route, it may be easier to re-use the fan and thermistor from the original hotend.

J-Head is reportedly very reliable and awesome in general, but it is a plastic hotend so it can only be used with ABS and PLA, because at the higher temperatures required to melt other kinds of plastic, the hotend itself will melt.

There are now a few all-metal hotends available that are rated for much higher temperatures, but many of them have problems with filament jamming, so do research carefully if you want to use an all-metal hotend. I’m using E3D, which is one of the all-metal hotends with very good reviews, and I’m very happy with it. I couldn’t find a local reseller, though, and had to order from Europe.

The filament diameter needs to match the filament you are using – either 3mm or 1.75mm. There doesn’t seem to be much difference which one you choose, as long as they match.

A smaller nozzle diameter (diameter of the final opening) allows more detailed prints, but makes printing slower, calibration MUCH harder, and also more jamming. Starting with 0.4mm or above is probably a good idea.

Print Volume

Maximum dimensions of objects that can be printed. Obviously the larger the better, but most printers cannot reliably use the entire area without running into other issues, like warping.

What I Chose

I evaluated about 20 printers, and ended up choosing MakerFarm’s 6″ Prusa i3.

It’s a fairly standard Prusa i3 with heated bed, single extruder, J-head or Magma (all-metal) nozzle, and and LCD with SD card slot.

It does not have an enclosure, and there are a few places that can be improved (will be detailed in the next post), but at $495 it’s absolutely a steal. Most comparable printers cost more than twice as much.

Colin, the president of MakerFarm is also a very nice person to deal with. I sent him a few questions before purchase and during assembly, and he always replied promptly with detailed answers.

Definitely would recommend.

Next post will be a review of the MakerFarm Prusa i3, as well as modifications I’ve done to it that, I think, makes it an even better machine.

Getting a 3D Printer – Part 1: Introduction, CAD Program



I’ve been thinking about getting a 3D printer for a long time, ever since I started designing random things in Solidworks. I design a lot of bits and pieces for my projects, and have mostly been using Ponoko, and while the quality is pure amazingness, and it’s nice to not have to worry about process problems too much, it gets a little annoying to have to wait 2-3 weeks for your things, especially on prototypes that require a few iterations – you’d be waiting for couple months. It also gets expensive after a while.

I finally got myself a printer (in a kit), assembled and calibrated it, and now it’s printing beautifully, so I’m now going to try to write about things that worked for me, things that didn’t work for me, things I figured out, etc, to hopefully save you some time should you decide to go down this route.

Getting a 3D printer set up is not nearly as difficult as I thought it would be, and it had been an awesome learning experience, so I’d recommend it, if you know how to design stuff in 3D (and if you don’t, you should! it’s not really that difficult!).

It’s definitely OK if you don’t have an engineering degree, as long as you know some basic high school physics. There’s really nothing difficult about putting together and setting up a printer, and drawing stuff in 3D.

CAD Programs

I’ve been using Solidworks, which is awesome, but also costs couple thousand $s per license. Autodesk Inventor is extremely similar, and also cost similarly, but they have a free “student version” that has full professional version features, and all they require for verification is school name and URL, so I’m experimenting with that also. Unfortunately, there is not really a comparable parametric design program that cost any less, and I believe parametric design is the way to go for any serious stuff.

Note: Parametric design –  basically drawing feature not to scale first to establish basic hierarchies and relations, and then adding constraints until the design only has 1 solution. For example, to draw a 1 cm cube, one would start by drawing a square by first drawing 4 straight lines connected in a loop on the same plane, then specify that the 4 lengths should be equal, one of the lengths should be 1 cm, and the opposite sides parallel, and 2 of the adjacent sides perpendicular. Then the design can be “extruded” to a height of 1 cm, and at this point the design is fully defined (only has 1 solution).

There are some free/cheap offerings like Google Sketchup, TinkerCAD, and Autodesk 123D, but I found them extremely limited.

If you can’t draw 2 holes in a cube with an arbitrary distance between the centers (no snapping to grid), I classify the program as toy. Unfortunately, Google Sketchup, TinkerCAD and 123D all fall in that category. 123D has SOME basic parametric capabilities, but AFAIK only within features, and not between features.

So if you are just starting and are a student, I would recommend Autodesk Inventor. It’s one of those cases where professional solutions are much easier to use than hobbyist programs, because with hobbyist programs you would be fighting program limitations all the time. The hobbyists programs may work for very simple designs, but why spend time learning them just to have to learn another program in a few weeks when you want to move on to more complex designs?

An AI/Solidworks tutorial would be way out of scope of this series of blog posts, but there are tons of tutorials online, so start digging!

All these programs can export STL (Standard Tessellation Language) files, which is the format accepted by all “slicers”, programs that generate step by step instructions for your printer to produce the shape from the 3D model.

Note about Solidworks and STL – apparently Solidworks sucks at producing STL files, which is strange, being one of the industry leading programs for mechanical design and the STL format being the standard format for 3D printing, which is fairly common nowadays. If your slicer produces weird results from your correct-looking Solidworks files, just get netfabb Basic, open the STL file, repair it, save it, and it should be sliced correctly now.

Slicers and other programs required to actually get your designs printed are dependent on which 3D printer you are using, and will be covered in a future post.