Thought-provoking reading about learning to program. The essay is gorgeous with fantastic visuals to understand its arguments:
Being a server-side programmer during the day, I think the essay makes the wrong assumption that programs inherently have a visual representation that helps learn the language. What is the visual representation of an algorithm code other than a single number for each step? Not all algorithms have a visual interpretation like the Fibonnacci sequence... Maybe I am not thinking outside of the box and such a representation do exist but I have not found it yet.
This essay makes a compelling argument that through the use of a graphic library (where the visual representation is the output of the program), we can learn the underlying programming language features (for loop, variable assignments) and abstractions (decomposition, abstraction).
There are many reasons why Instagram succeeded1 and Hipstamatic did not. The article insists on the social aspect but that's not the only one.
"The biggest problem with Hipstamatic is that [Lucas] didn’t focus on Hipstamatic. What did Instagram do when lightning struck? They did nothing but focus on Instagram. What happened when Hipstamatic got successful? They made [separate products such as] Swankolab, Incredibooth, D Series, Family Album, Snap Magazine, and splintered off in so many different directions." — Stuart Norrie, former Hipstamatic designer
This is a tale of three customer services I have to deal with recently. I will continue to buy and recommend products from two of these companies. The third company will never hear from me again.
Giotto's
I bought 2 years ago a Vitruvian tripod from Giotto's:
This is a great tripod, small enough to fit in any luggage, lightweight to bring it anywhere, and sturdy. However, I recently noticed one of the leg adjuster was not working properly and the tripod could not stand on its lowest position with a heavy zoom lens at the longest focal length.
The tripod is under a 5-year warranty. It took me 5 minutes to go to Giotto's web site on the tripod's product page and send a mail about this issue. On the same day, I had a reply with instructions to send my tripod for replacement. I followed the instructions and three weeks later, I received my repaired tripod.
Apple
One year ago, I bought an iPhone 4S. Last friday, the on/off button stopped working (it was no longer "clicking"). I browsed Apple customer service web site for an hour. There was a form to report the issue but the HTML form was not working (there were also missing i18n keys on the page).
However, it was quite straightforward to find the phone number to call. The support guy was helpful and offered me an express replacement as my iPhone was still under warranty (for a week!). He also offered the transportation and replacement fees (30€) since it was the first time I asked to replace an Apple product.
On monday, UPS brought me the new iPhone and took the broken one (it took me the rest of the day to restore it with a backup from iCloud and set it up again correctly but that's another story).
Lenovo
For my work at Red Hat, I use a Lenovo laptop (until I buy a 13' Retina MacBook). When I received it, I noticed a green stuck pixel, right in the middle of the screen. This is quite annoying on the dark background I use for my terminal.
I tried without success to fill a form on Lenovo web site (or was it IBM?). I got lost in all the choices and subchoices to find the right category. I was not able to find any customer service email address on their web site for French customer support. Finally, after some extensive Google searcher, I found a phone number on an blog post. The support guy was clueless, he opened a new case for me and asked me to send an email to IBM support with the case number and an explanation of my issue (the address is support_fr@uk.ibm.com for what is worth).
I sent a first mail on June, 21st and got a reply asking me to write to another email address instead (tssent@fr.ibm.com). I did as instructed. I did not get any reply, nor for the two other messages I sent.
Then out of the blue, one week later, I got a reply from the 1st address requiring a invoice for my support and asking me not to send mails to the 2nd address! I did as instructed and 5 days later, I got an email telling me that they have opened a new case for me and their customer support will reach me soon.
I waited for 1 week before sending an email asking for a status update. No response.
I waited another week to send another email and I was starting to lose patience. One week after, I finally got a reply telling me that they could not repair or change my laptop since it needed at least 2 dead or stuck pixels.
I sent my 1st email on June, 21st. I got an informative reply after 7 other emails on July, 27th.
I have had such a bad experience with Lenovo support that I would not recommend any of their laptops, even if they were good (spoiler, they are not...).
I can't generalize too much from these 3 cases but it seems I have encountered 3 different type of customer service:
Customer service for enthousiast consumers with Giotto's
Customer service for mainstream consumers with Apple
Customer service for enterprise consumers with Lenovo
But this heart of rock isn’t beating quite the way it once did. Like many other American manufacturers, Fender is struggling to hold on to what it’s got in a tight economy. Sales and profits are down this year. A Strat, after all, is what economists call a consumer discretionary item — a nonessential.
Stomp.WebSocketClass = SockJS;
// same as usual
var client = Stomp.client(url);
[...]
However, this was ugly and of limited use: the instantiation of the Web Socket was still done inside Stomp.client() function.
Marek Majkowski then proposed to update the library to be able to pass any object conforming to the WebSocket type to enable all kind of cool stuff.
I have updated the library to use STOMP over any kind of WebSocket objects:
var ws = new SockJS(url);
var client = Stomp.over(ws);
// the rest of the code is the same
[...]
As written in the documentation, you can use Stomp.client(url) to let the library create regular WebSockets or use Stomp.over(ws) if you required another type of WebSocket.
Malin Space Science Systems' project manager Mike Ravin:
There's a popular belief that projects like this are going to be very advanced but there are things that mitigate against that. These designs were proposed in 2004, and you don't get to propose one specification and then go off and develop something else. 2MP with 8GB of flash [memory] didn't sound too bad in 2004. But it doesn't compare well to what you get in an iPhone today.