My friend David has long podered how to change the world. Everyone agrees that education is the key to peace and less poverty. But how can we give more of the poor an education?

The linked video shows his first experiment with getting poor children an education. David has paid the woman in the video to teach children who don’t already attend school. She receives $6 an hour, and there is some cost to transferring the money and supplying teaching materials.

Davids goal is to teach 1 million children, who otherwise would not have had any kind of schooling, in english reading and writing. It’s an experiment, but it’ll be an interesting experiment to follow. Do write him if you want to participate. Of course, I’ve chosen to participate myself, in addition to spreading the word.

If you want to send a contribution, you can do so by PayPal to da@ebogholderen.dk, via the Danish system Mobile Pay to number 2334 2254, via his Danish bank account 5379 315028. His plan is to send you a video in return within two months, which the teacher will dedicate to you, so you can see the result of your contribution.

I vouch for David myself, this is something he’s been planning a while, and something I find to be very socially innovative. I know David well, and can vouch for that he does not make a dime doing this, all your money will go to teaching, minus, like I mentioned, a bit of money transfer fees and teaching materials for the kids.

Have a look at the video from a village outside Calcutta (tap the image to see the Youtube video)

IMAGE ALT TEXT HERE

You can also visit the Facebook page for his new organisation Teach-a-Million.

Here are two more movies, I’ll link to more as his effort continues (tap the images to see the Youtube videos). I really hope you’ll join me by donating and spreading the word

IMAGE ALT TEXT HERE

IMAGE ALT TEXT HERE

Quick update: within the first day, teaching a class for 40 hours plus teaching material was sent in 10 contributions.


Amazon’s customer service was really great to me! My wife and I had bought a nice christmas present for my father, a book he’d long wanted, printed in 1976. We couldn’t find it half-decently priced new copy in Europe, but we found one through Amazon in the US. Order placed, postage charges being as much as the book, we waited for it to arrive. But when it did, it was clearly used. Not badly used at all, but a couple of ear marks, pencil lines in the book and… sigarette marks on the cover. Disappointed we took pictures of it, and contacted Amazon.

Against my fears, they didn’t object to our description at all, and didn’t even want to see the photos I’d taken. They told me I should return it, they’d refund the shipping charges for me sending it back to the US. They refunded the book and since it was through a 3rd party, we could opt to buy a new copy, which they’d then refund 1-day shipping for. That’s an awful lot of shipping! Much more than the price of the book, even though the replacement we got was a bit more expensive. Also, the amount of communication that went back and forth, where they were very clear but where there were some minor complications since it was sold by a 3rd party, absolutely has taken a bit of their time. It leaves me wondering how much this eats into their margins. But, this experience made me realize how happy I am as an Amazon customer, this being the first time anything unexpected had happened since I started shopping there in 1998. And when something unexpected happened, how quickly and nicely they solved it for me, even though it cost them in the short run. In the long run it must be worth it for them, because I became even more confident buying through them, and even felt like writing their praises here. :-)


Carthage

Tech 2014-12-07

Open source code is legacy, buggy code. Closed source code is often worse, having had fewer eyes inspecting it. Including it in my projects would be a really bad idea if it wasn’t for that (1) they have spent time thinking about how to solve problems I have and (2) my code is at least as buggy and is going to be legacy code in just a few hours, with few people probably ever reading it again. With these odds, it’s no wonder that 80% of my time as a developer is debugging code.

With this in mind, let’s have a look at Carthage, the new dependancy manager for Cocoa. It takes the open source projects you want to use, and compiles them into a binary framework that you can then include in your project.

Cocoapods, on the other hand, will wrap your project in a workspace where it will provide another project with all the source code for the open source stuff, and the compiled frameworks if you choose to include closed source projects.

While Carthage is a more clean approach, there is one very big drawback: when I am debugging my project, I’ll meet assembly code as soon as I start using the open source projects. As a developer in Apples ecosystem, this is of course nothing new, as you meet assembly code as soon as you hit Apples frameworks.

Is this a problem? Do I really want to debug the projects I’m importing? Aren’t they too complex and don’t I have enough work debugging my own code?

Yes, I think it’s absolutely a problem. I have identified and patched countless bugs in open source projects. Some have resulted in my patch being accepted, some have resulted in me keeping a branch with my fix so I don’t have to deal with that bug again myself until the maintainer of the project will either accept my patch, fix it themselves, or a patched fork will take over in its place.

More often, though, going through the code, following the execution path along, will tell me something about how that project expects its surroundings to be, and in doing so, shows me what I’ve done wrong when I was using it. So this is a great tool for solving my bugs. And lastly, it will show me what opinions it has of how the world should be. If I don’t share those opinions, I can either write changes that enforce my view, or use this to find an alternative that is closer to what I want.

High up on my wish list is for Apple to open source its Cocoa libraries. Then I could have the benefits listed above through my entire project. That is actually the only really good thing about Java projects: whenever I want to, I can follow the execution path all the way through the libraries.

I have learned many good practices and coding skills by reading good code while debugging. I have deep respect for Apples work, and expect there to be much good code that I can learn from. Then again, they are only people as well, and they will have written bugs. I will want to write around them, and by having the code I will save ages learning how to work either with or around that code. And I will probably submit patches - and Apple will probably reject most of them becuase I either misunderstood, wrote errors myself, or am going down a different path than what they would prefer. That’ ok. Please, Apple, set your code free.

But brining it back to Carthage, I really don’t want to close down the open source code into a compiled binary. I want the source all the way until I compile and send it to the device, and even there I want the source to see what’s going on. Only when I ship would I like it to be in binary form. And honestly, that’s only because I want it to be as efficient as possible. I’m sure I could reap big benefits of my source being available in my production code, so that I could have crashes well documented right away, instead of re-symbolicating a binary. But for now at least, compiled and compiler-optimized code outweighs these benefits.

So I’ll stick with CocoaPods, where I can see the open source code the entire while. Those are real, important benefits to me, and I can deal with project wrapping and other odd artefacts they may introduce. CocoaPods is well maintained, and they know very well what they do to my projects today, and work hard to do less to it tomorrow and the day after.

Having said that, I appreciate Carthage being there. I do like there being competition, and I’m sure having an alternative out there will improve the exchange of ideas, making both Carthage and CocoaPods even better than if either of them was alone out there.


Following up on my little SSD series, today I finally got my Seagate GoFlex thunderbolt enclosure from customs. The SSD arrived around two weeks ago, and I had already done a SuperDuper copy of my home-made Fusion drive to the SSD via USB 2.0. Three days later, I could start using it, via USB. First I preferred the extra speed from my Fusion drive, but pretty soon I took the quiet of the SSD over those extra MB/sec.

Speed-wise I was surprised to find I would get about 34 MB/sec via USB 2.0. I guess I under-estimated USB 2.0 a little bit, assuming I would get ~20 MB/sec. The Fusion drive solution would give me bursts of 114 MB/sec write and 180 MB/sec read, but over time I would often get around ~30 MB/sec. I must admit I had forgotten exactly how slow magnetic disks can be, I assumed I would get around ~80 MB/sec from it, but I was wrong. So resolving my over-estimating magnetic disk speeds and under-estimating USB 2.0 speed and enjoying the quiet, the last week was spent running of the SSD via USB. That meant that taking it out of the USB dock and into the GoFlex thunderbolt adapter took a few seconds and I could boot.

I’m sure you guessed it, as had I, but wow! Thunderbolt is fast! Even though I knew it only performed a bit more than half as quick as what the disk is capable of, starting up Photoshop was 7 seconds (vs 23 seconds before) and other apps are similarly responsive. Using Lightroom is soo much smoother. :-)

The final result was that I’m getting a pretty consistent 355 MB/sec write and 383 MB/sec read of the disk, which is better than the 330 MB/sec I was expecting, but far from the 550 MB/sec the disk can deliver. I still have found no answer to why all those enclosures won’t push the disk speed further, even Thunderbolt 1 has bandwidth to spare at this speed. But since I knew that going in, all in all I’m very happy. :-) And hopefully, this is where my SSD story ends, until I’ll transition to my next iMac in two CPU generations time.


“They” are working on a proposed trade agreement between the US and the EU, and to my mind, it cannot come quick enough.

I like buying stuff online. But I do my best not to buy stuff from the US. I would buy a lot of stuff from the US if it wasn’t for the trade barriers in place, the big administration of adding nothing to something of low worth. Sounds crazy already? You bet!

I wanted to fix my espresso machine not long ago, and needed to order some gaskets. After a while searching online, I found them in a little espresso-shop in the US. I ordered them and some clips, it all could fit nicely into an envelope. Knowing administration and postage would be expensive, I added a bit more than I thought I needed. But all in all, postage via UPS was about as expensive as the items bought: $25. I’m sure that was cheap for sending an envelope half around the world 90 years ago, but today this felt crazy to me.

Crazy was still to come, though, because as the envelope arrived in Denmark, it was held up for customs. For 7 days! Then they sent me a letter saying there was no toll, but I needed to pay 25% VAT. On top of that, they charged 180 DKK, or about $30. So $25 worth of spare parts to fix my espresso machine had become ($25 + $25) + 25% + $30 = $92,50! What it should have been, to my mind was $25 + 25% VAT + $5 postage = $36. Needless to say, when I needed a few more spare parts, I was very happy to find a shop in England that sold them for more or less the same price, VAT included, a low shipping fee and no administration fee and week-long hold-up.

But hey, like I wrote about not long ago, I just did it again, buying a Thunderbolt external enclosure via eBay from New York. ($159.99 + $30 shipping) + 25% VAT + $30 processing and 9 days of waiting! Just because it so happened that it was the enclosure I wanted and I couldn’t find it locally (meaning all of EU and Asia. I’m sure I did not look close enough).

And yes, I meant including Asia. I’m sure we don’t have a trade agreement, but I cannot remember ever having the $30 processing fee and long delay on shipments from China, Hong Kong, Singapore or elsewhere in Asia.

So for my online shopping preferences, I cannot wait for the administration fee and long delay to go away, hopefully being replaced by an easy way of paying my VAT. After that, we need to have a discussion with the US postal service and the alternative carriers, because shipping costs are just crazy! (just like the 200 DKK the Danish postal service charged to send a book back to Amazon in the US)

Incidentally, do you know what’s the cheapest way of sending a post card to someone from Denmark to someone in Denmark? Posting it from India…