Category: Personal

Personal stuff and others that are not technical, doesn’t have source code, etc.

  • cakeSeth Godin wrote an interesting blog post titled “Two ways to build trust” in which he says that, to gain someone’s trust, you have to either be very professional, or very human. You are either like Apple: everything just works because they are super professional, or you are Joe the Baker who would make a custom cake for you.

    The problem is when you try to be like Apple and stuff doesn’t work or you try to be like Joe and your cake says “Made in China”. I’ve never thought about it consciously, but I’ve felt it, and it makes perfect sense.

    I was using an application in my Android phone called BeyondPod. It’s basically a podcast grabber. I liked the application and I wanted to buy it. I was using a limited version. They offer you two ways to buy: through the Android Market, the usual way; or if you live in a country where the paid applications are not available, like me, you could buy a license on the web site. That’s very professional.

    Also the application is quite good. So that was another hint that the maker was a very professional team.

    When I was ready to buy I went to the web site and it looked so 1998ish. Oh-oh. Not good. I’ve looked for a way to buy outside the Market and I’ve found two. Buying it on-line and paying with Paypal or using an alternate Market. The Paypal link didn’t work. Double oh-oh. That alternate market was hard to use, so I’m not totally sure if this is correct, but it seemed the application was not there. Strike three?

    By this point, I’ve already tried to buy the app through several days, failing each time and just going back to whatever I was doing before. The only thing that kept me coming back was that I was using the app, liking it and wanting the unlimited version.

    There was no contact address for support. One day, fed up, I signed up in their forum and said “I want to pay! How?” I wasn’t expecting any answer really, but about 42 seconds latter came a reply “Oh, the link was broken, try again.” That looked like the developer of the app, although he never mentioned that. That’s good. It may not be an Apple, but a Joe the Developer.

    I went to the site, clicked on the Paypal link and was redirected to another web site, a Paypal-clone. That’s it, too much. I’ve dropped a bomb on the forum: “I’ve clicked the paypal link and it sent me to another web site, looks very scammy, I’m not putting my credit card number there”. And I proceeded to search for another podcast reader.

    4.2 seconds latter came “My apologies, that’s my fallback merchant account, the Paypal one is working again”. Having a fallback account? That’s very professional. I know many companies working with Paypal, moving thousands of dollars, and not having a fallback transaction system. In a sense, this guy showed a lot of professionalism in some respect, and being a human being willing to solve the problems for the parts not very well done. I paid right away.

    I almost lost my faith in the product and company, but the owner wasn’t afraid of acting like a little company and that bought me over. I don’t expect a podcatcher for a niche platform to be developed by a corporation full of things with “Enterprise” in their names. I expect it to be developed by a guy on a basement and that doesn’t mean I won’t pay for it.

    Reviewed by Daniel Magliola. Thank you!

  • twitter-woodHere’s an idea for those Twitter clients, web and desktops out there: deferred posting.

    One tweet per hour during eight hours is much more effective than 8 tweets in a row. But sometimes you want to write eight tweets in a row and I find two reasons to do that.

    You are using Twitter professionally, for your work, as a marketing and social tool. You want to minimize the hit it takes on your productivity so you limit yourself to 15 minutes of tweeting per day. In those 15 minutes you generate tweets for the whole day, you want them to be automatically distributed through the day.

    When you open twitter after some hours of not using it, like after sleeping, you’ll find yourself replying to lot’s of stuff as you go through it. That’s specially true if you are 8 timezones away or so from most people you follow.

    I think a Twitter client should do the distribution automatically. It could distribute them evenly through the day, depending on how many you have on your queue. Whenever you want to tweet you just add it to the queue.

    Why limit itself to one day? why not leave tweets for tomorrow? And if not one day, how long? A way to solve the problem is to try to maintain your speed constant, minimize acceleration and deceleration.

    For example. If you normally tweet 5 times a day, and you have 10 tweets in your queue, do 7 today and leave 3 to tomorrow so that you don’t double the speed, you just increase it a little bit. If tomorrow you add another 10, you’ll have 13 and you are at a speed of 5.2 (previously you were at 5, but yesterday with 7 you sped up a little). So today you get 9 published and 4 left for tomorrow and so on.

    You’ll have different speeds on weekends and business hours. There’s a curve of speed and the Twitter client should try to match it with what you have on the queue.

    If you want to direct tweet, you can do that, just fine.

    Another interesting way is to match the curves of you readers instead of your own. The tweeter client would measure when your readers are posting more, and presumably, also reading more. It’ll make an average and it’ll have the curve of speed of your network. Instead of posting following your previous curve, it’ll post following your network’s curve maximizing the amount of people that is likely to read your Tweet.

    I would call that, Professional Tweeting.

    Another interesting feature would be to set importance to your tweets. More important tweets are sent when the chances of getting it read are highest, when the curve reaches its peak.

    Reviewed by Daniel Magliola. Thank you! Twitter carved-wood icon by gesamtbild.

  • searchWeb browsers, like Firefox or Chrome, are no longer document viewers, but application platforms. I’d like to see browsers start to implement search and replace. Of course not modifying the page, just replacing the matching strings in forms.

    I’m really surprised it’s not implemented yet. In the last two weeks I needed this feature about 5 times. It’s time for search and replace in web browsers already.

    Reviewed by Daniel Magliola. Thank you!

  • Broken bridge, picture by Ghost V

    There seems to be a lot of discussion about software complexity, and although I think many people are talking about different stuff, here’s my take on it. We often compare writing software with other professional disciplines, like civil engineering and medicine, which allows us to pick at possible futures of writing software.

    I believe writing software is hard, very hard, extremely hard. Probably one of the hardest thing to do. Any non trivial piece of code has an amazing amount of moving pieces. I bet the average software project is more complex than a car or a bridge. But how do we reconcile that with the fact that we have children programming and not children building cars or bridges?

    Well, we do have children building cars and bridges, just that they are toy cars and toy bridges. Toy cars and bridges are very different from real cars and bridges. Toy software is not much different from real software. The path for going from toy to real in software, unlike in medicine, motor and civil engineering, is smooth. You don’t jump from building toy software into building real software, you just build better and bigger software until it’s real or professional.

    That makes sense because software is abstract. Software is like ideas. There’s no jump between having toy ideas and having real ideas. If you don’t buy it, let’s do the analogy with math. There’s no jump between doing toy math and real math. You learn more math, more operations, more tools, but the sums and multiplication you learned when you were 5 years old are the same you use in civil engineering. There’s no toy sums vs real sums.

    At some point in time, ages ago, math was primitive. A 12 year old could discover something new in math. We are at that period in the world of software writing. We are young and there’s not a lot out there. That’s why even though it’s extremely complex, a kid can still do something meaningful.

    There’s something special about software. Even though it is abstract like math, it has a concrete impact, like civil engineering. So the 12 year old kid can do something new and it’s not just a piece of paper with a couple of numbers on it. It’s a real usable thing that other people can start, well, using. And that’s why I believe programming is so wonderful.

    There’s another very important property of software that makes it so complex and still approachable. Imagine the world ages ago when 12 years old where doing math discoveries. Probably 99.9% were wrong in what they discovered as 99.9% of the software written by kids is wrong in the way it has bugs. But buggy software is still software and it’s still usable. Buggy math is wrong and should be discarded, buggy bridges kill people. Buggy software is a nuisance, but usable.

    There’s some code in which only very smart and professional people put their hands on. Code written at NASA has something like 10 times more code to test it. Code put in a machine that can kill people, like a robot at a factory or a radiotherapy machine is written quite differently than the latest web toy or even the operating system you are using (last time I checked my analytics, nobody was using QNX to access this web site).

    Rocket picture by SWP Moblog

    As software becomes more important in our lives, more of it has to be written rigorously. You can accept the latest web toy to crash, but you cannot accept your phone to crash. And then, the latest web toy becomes very important, like Twitter, and you cannot accept it to crash. The way code is written at NASA is more similar to the way a civil engineer makes a bridge: accounting for all possible variables.

    It’s a real possibility that in 20 or 30 years all code will have to be written very rigorously. That means that you probably won’t be able to get a job working as a programmer in many, many places unless you have a proper degree, certification and license. I know it sounds crazy, but extrapolate about who was building bridges ages ago (anybody) and who are building them now (civil engineers) to who is building software now and who is going to be building software tomorrow.

    For me, that sounds very depressing. I like the chaos of innovation that software is today. I probably couldn’t live in a rigorous software environment. One aspect that I haven’t analyzed is that, unlike civil engineers, software programmers will most likely always be able to build software by themselves, put it out there and be out of the loop of rigorous working. Anyone can build a bridge in their back-yard and nobody will use it, because it doesn’t stand a chance of being useful. But the back-yard of a programmer is the Internet. The only question is whether people will use that crapy web toy built by a 12-year old 20 years from now. I honestly hope so because that will keep the thriving environment of chaotic innovation that programming is today.

    Reviewed by Daniel Magliola. Thank you! Broken bridge picture by Ghost V, rocket picture by SWP Moblog.

  • some-key-stickersI started using computers ages ago in Argentina. We only had US Qwerty keyboards back then and I’ve got used to them. The Spanish keyboards appeared later on and I never switched. I never understood what was the deal with those. I can type almost any character I want with a US Qwerty keyboard, even Spanish ones like á, é, í, ó, ú, ñ, ü. But furthermore, most characters used for programming are much harder to access in a Spanish keyboard.

    Years latter I switched to Dvorak, making my problems of layout even worse, but increasing my geek-coolnes. In some keyboards you can move the keys around to convert US Qwerty into Dvorak, but you cannot convert Spanish into Dvorak by moving keys around. That’s because the symbols are not grouped in the same key. While in both US Qwerty and Dvorak you have a key that has “.” (dot) and “>” (greater than) in Spanish you have a key that has “<” (lower than) and “>” (greater than).

    So if you want to switch Spanish to Dvorak, like I did, or you want to switch Spanish into US Qwerty or French into German, or whatever, you have to totally re-label the keyboard. There’s a company called Hooleon that makes a Keyboard Replacement Overlay Kit that will allow you to turn any keyboard into US Qwerty, or Dvorak, or anything you can think that uses the US Qwerty set of keys. It’s basically a set of stickers that you put on your keys. They are very durable, more than some keyboards, and they look quite good.

    They also make a Qwerty-Dvorak conversion kits, which is the best option to convert US Qwerty into Dvorak (they don’t provide numbers and other keys that stay the same). And if you switch to another language they have many language-changing kits to many languages. If you have a keyboard, you might just swap it for another one, but if you have a laptop, this solution is excellent. I’m really grateful there’s a company providing this product because it’s served me well for ages until I got a really good keyboard.

    Now I have a MacBook Pro with beautiful back-light keys. I’m not going to put stickers on them, I have to remove them and re-place them. That’s not trivial in a laptop keyboard, so I’m still building up courage.
    key-stickers

    Disclaimer: I’m in no way affiliated with Hooleon, I just love their products.

    Reviewed by Daniel Magliola. Thank you!

  • I’ve been looking for ages for the perfect music for coding. I’ve asked around and tried new age, Mozart, Bach, and other academic music. I’ve tried instrumental soothing music and instrumental electronic music. Nothing worked until I started to expand my original coding music: Indiana Jones and the Last Crusade.

    Yes, I used to code to the music of Indiana Jones and the Last Crusade and I loved it. I started to try others and I’ve found I like coding to these albums:

    I’m looking for more. There’s a clear pattern: instrumental and fast. It has to be of movies I’ve seen. When I listened repeatedly to Indiana Jones and the Last Crusade when I was a teenager I would recreate the whole movie in my head. I don’t do that anymore but the music still carries some subconscious meaning. I’ve tried with music of movies that I haven’t seen and it doesn’t work. And some don’t work and I don’t know why. These songs work as isolated songs, but not the whole album:

    All by Vangelis of course. Star Wars music kind of works, but only some songs. I still have to sit down and select them (6 albums, lot of work). I remember other music like Apollo 13 also worked, but I don’t have it anymore.

    What do I mean by work? It seems that music speeds me up. It makes me work faster, concentrate more and enjoy myself more. It makes me not want to stop, like watching a good movie. What do you listen to? Any other movies with great coding music?

    Reviewed by Daniel Magliola. Thank you!

  • This has been mentioned thousands of times on the interwebs, but in case there’s at least one person reading this that didn’t know it, I’m explaining it again. Using hyperlinks in a piece of text doesn’t mean it has to stop being proper, readable English (or any other language). For example, imagine the phrase:

    It was a nice movie, click here to read more about it.

    Read it again. Now close your eyes and imagine someone reading it out loud. It doesn’t make any sense, does it?

    Hyperlinks already carry the meaning that there’s more information behind them. No need to repeat it with “to read about it”. And they also carry the information about being clicked, so no need to say “click here”. And in some interfaces you don’t click, and I can think of already two cases:

    • People using the keyboard and only the keyboard to navigate. They are more than you think. I myself would be doing it much more if it wasn’t so hard on so many broken web sites.
    • People using a phone, like the iPhone. You don’t click, nothing clicks. It’s called tapping.

    For computers “click here” doesn’t provide any proper meta-data. There are services that extract a lot of information about links. Google being one example. Let’s analyze what would happen to Google if you do it correctly, like:

    It was a nice movie.

    That was short, wasn’t it? Half the size and no-nonsense, but I digress. Google would index that link as a “nice movie” and that’s good because you are adding information to the web, you are expressing your opinion and when people search for “nice movie” they are more likely to find the movie you pointed to. Maybe you are the only one believing that’s a nice movie, but when lots of people link to it as a “nice movie”, Google will catch that.

    Also, imagine that your page gets turned into plain text, or printed, or spoken, or whatever:

    • It was a nice movie, click here to read more about it.
    • It was a nice movie.

    Which one makes more sense?

    Now, we can take it a step further. Something else you can do to make your text more readable, more robust and nicer overall is to do more or less proper attribution. I’m not talking about academic proper attribution, I’m taking about simple things. I’ve recently found this sentence in the Stack Overflow article Advice for Computer Science College Students:

    I’ve read an article from Joelonsoftware.com a few years agohttp://www.joelonsoftware.com/articles/CollegeAdvice.html

    which I promptly edited, thanks to my karma earnings, to be:

    I’ve read the article Advice for Computer Science College Students from Joel on Software a few years ago.

    Aside from the proper period at the end of a sentence, do you see how and why my version is more readable, contains much more information (while being shorter on text on the screen) and can resist being turned into text, speech or braille? So, next time you write something, please, remember that even if you are using a computer, you are still writing a proper language.

    Sometimes the links are so important that you want them to get to a text or spoken version. In that case, imagine how you would write it if you were speaking or writing with a pen on paper:

    I really like Joel on Software, which you can read on http://joelonsoftware.com.

    which you can then later enhance for the web:

    I really like Joel on Software, which you can read on http://joelonsoftware.com.

    Now there’s extra information in there. The URL is there three times, one in text, two in hyperlinks. But the text is not longer and it’s not harder to read (unless you pick up hyperlink colors badly) and it gives the user more places to link, machines that look for context information more to pick up from. It’s a win-win.

    Reviewed by Daniel Magliola. Thank you!

  • SkypeThis is what I would do if I were in charge of Skype, a product that could be doing much better. The big problem is, of course, adoption. Currently there are a lot of show stoppers:

    • You have to go to the site.
    • You have to download the software.
    • You have to install it.
    • You have to create an account.
    • You have to find and add your friend.
    • You have to remember to re-run it after you restart the computer.

    If every obstacle halves the amount of users you are getting, Skype’s market could be 64 times bigger. That’s a lot.

    I would start by writing a Flash implementation of Skype: Skype-on-the-web. Then going to skype.com/call/bob would call the Skype user bob without having to install anything or even create an account. With this feature Bob could tell his friend Sally, in an email or chatting with a competing product: “Go to skype.com/call/bob, let’s talk”. Personally, I would prefer Silverlight, but someone at Microsoft decided to halve its market by not supporting the microphone.

    That’s open to abuse because anyone can call Bob at any time, anonymously. What a nightmare! That can be solved by requiring some random password, or hash. Bob would have a button on his Skype client that says “Generate call-me address” that would generate a use-once URL like skype.com/call/bob/dckx that would even work only for a short amount of time.

    That last solution got a little bit too complicated. I would offer it, but I would also offer something much more intelligent. When Bob wants to talk with Sally he would go and add her to his buddy list by email address. That would automatically create an Skype account for Sally with a randomly generated password. Sally would get an email saying “Hey! You now have a Skype account! You can download Skype or just go to skype.com/on-the-web and start using it”. The most likely outcome is that Sally won’t do any of those things and will just throw that email away. That’s all right because now comes the best part.

    The next time Bob calls Sally, since Sally is a non-convert yet, she’ll get an email saying: “Bob wants to talk with you! Answer him on skype.com/call/bob/dckx”. When Sally goes there, she doesn’t get a call-only-bob Skype, she gets a full featured Skype-on-the-web, automatically calling Bob. She’ll be able to call other users but what’s most important, she’ll have Bob in her buddy list. And when John does the same as Bob to call her, Sally will have Bob and John in her buddy list. Skype’s value for Sally is growing! She now has two good reasons to start using Skype

    To increase the network effect hugely, I’d make it so that Bob won’t be able to see that Sally is not a Skype user. He won’t search for Sally and give up because she doesn’t have an account. He’ll just add her and it’ll seem to him that Sally is a Skype user. Because eventually she will. This model is nothing new, it’s how Paypal became the number one (only?) player in its field.

    With the upcoming feature of screen sharing over Skype, tech support could also improve

    Another thing I would do is target the support market. I would allow companies, like Dell, Microsoft, Apple, etc, to open corporate accounts and get the ability to have a lot of users under the same name (like “Dell Support”, “Microsoft Office Support”, “Apple iPod Support”, etc). Skype would handle all the routing and distribution of calls to each user using the typical call-center algorithms. Currently you call a local number and Dell routes you over the internet to where the call center is: India. That routing over the Internet is most likely paid by Dell. If their customers used Skype they’d be calling India directly lowering the bandwidth bill for Dell.

    For the users it’s a huge win because sometimes it’s a hassle to find the right local number to call. And if you don’t speak the language of the country you’re in, or are traveling, it’s always a problem. Serving a global market globally is the way to go. After all, Skype knows which language you want to speak most of the time.

    But the real jewel of this idea is this. Skype could try to discover the type of machine it is installed on and what products are installed alongside. You download Skype for MacOSX? Here’s Apple Support on your buddy list automatically. Microsoft Office installed? Either Mac or PC, here’s Microsoft Office Support on your buddy list. Running Skype on a Dell laptop? Here’s Dell support on your buddy list. The next step is letting any developer and company register a support line with Skype and enable it at install time of the application. For example: when you install Picasa, Google is added to your buddy list and, through a Skype API, Picasa has a “Call support” button that triggers Skype if locally installed or Skype-on-the-web otherwise.

    Suddenly, Skype is becoming the dial tone of the internet (instead of that Twitter thingy).

    Reviewed by Daniel Magliola. Thank you!

  • “The car is not starting”, he said, “I have a theory, the tank must be empty.”. That’s not a theory! That’s a hypothesis.

    A hypothesis is the first part of a theory, it’s how a theory begins and it’s what we have when we think we have an explanation for something. When we go and confirm that explanation (check the tank is actually empty), proving the hypothesis, then, we have a theory.

    I’m tired of hearing the word theory when they mean hypothesis. In Start Trek they do it all the time. Captain Picard asks La Forge why the friking thing is not working and after thinking for 1.5 seconds, La Forge says: “I have a theory, maybe the…”. There are no maybes on a theory! That’s a hypothesis. I think I’ve heard the word hypothesis used correctly in Star Trek TNG twice. Somehow, my wife started to use it correctly. I’m surprised. I suppose she got tired of me shouting “that’s a hypothesis!” every time La Forge opens his mouth.

    I leave you with the official definition of hypothesis:

    an idea or explanation for something that is based on known facts but has not yet been proved:

    Several hypotheses for global warming have been suggested.

    And then we reach the conclusion that all that we talk about all the times are not theories or hypothesis, they are not formal; but somehow I’m OK with using those words informally. By the way, I’ve learned this on school. I can’t remember if it was in the last years of elementary school or on the first years of high school.

    This is the first of a probably infinite series of post about my pet-peeves. Muhahaha.

  • I’ve designed a t-shirt. In the front it says “Mi parolas Esperanton”.

    In the back it says:

    I speak Esperanto

    Yo hablo Esperanto

    Ich spreche Esperanto

    Je parle espéranto

    我说世界语

    Я говорю на эсперанто

    Io parlo Esperanto

    You can buy it now.