An idea for a cinema company

I doubt any cinemas are going to implement this, because like airlines and banks, they seem to be very bad at making software. Nothing surprising there.

A few months ago I was searching for a room in London. There are about 4 big sites to do that, so I posted ads on all of them, and searched on all of them. Only one provided a web application that allowed me to see whether I contacted someone already or whether I marked a flat as not-suitable. It made searching so much easier that soon I was using that and only that site. The ads weren’t better per se, but the software was.

I like going to the movies with friends but I dread having to organize it. It’s such a pain because you have to balance the available time of each people, the timetable of the cinema, the shows in which there are still good seats, the fact that the seats might be going unavailable, and handling the money (I tend to pick the cool but expensive theaters).

If I was in charge of a cinema, I would make a built-in Doodle. Doodle is an awesome application that helps you organize an event. You select all the desirable dates and times, invite the people, and they respond yes or no to each slot. At the end you pick one and go for it. I thought of setting up a Doodle to organize going to see The Dark Knight, but I ended just picking a date and time that was convenient for me and inviting people. It didn’t work.

The built-in Doodle could work like this:

  1. I go to the cinemas website.
  2. I buy my ticket.
  3. I pick all the shows I can go to.
  4. Set a deadline (maybe, optional).
  5. I send the invite to all the people that might want to join me.

Notice that I paid for my ticket before picking the date and time. I’m not sure whether that’s a good idea, I would be okay with that but maybe not everybody. What do you think?

Then each person that I invited goes to the web site and:

  1. Look at all the dates and times I and others picked.
  2. Buy their ticket or tickets.
  3. Pick the dates and times they can.

Once everybody is in or I’m done waiting, I pick a day and time and I get all the seats assigned together in one action (even though the action of committing to the movie was individual and asynchronous). For those that didn’t get a ticket or those that changed their mind, they get their money back and/or the option to arrange the same movie, another day, with some of the same group and/or adding other people to it.

For the cinema it’s a revenue booster. It makes it easier for people to commit to going to the cinema. And even people than don’t manage to go one day are compeled to go another because they already paid.

Build it with nice Facebook and Twitter integration and that’s it, you’ll be the most popular cinema in town.

Idea: selling beauty products for males online

The beauty industry is made by women, for women. They learn everything very young and for most of them, it’s just natural. For most males it’s intimidating and confusing.

I had a very hilarious episode when I asked for “a beauty product” and my wife was tanding next to me and even though I was dead clear that it was me asking for a product for me, the sales rep would not speak to me. She directed all her answers to my wife, she was looking at her, almost ignoring me, while my wife never said a single word.

Anyway, I had an idea how to sell those kind of products to males. First, you have to do it online, because apparently males are more comfortable buying online and they are definitely not comfortable buying retail beauty products. Second, you have to make it simple, because we don’t know anything about it.

To make it simple my idea is this: you take a picture of yourself, or a couple, specifically of the problem you want to fix and upload it. Five minutes later you get a list of products that you could use for that. Boom! Sale guaranteed!

My idea got validated

Some time ago I had an idea for a web application. That idea was essentially Gist. I couldn’t convince people to go after it, thankfully because I wouldn’t like to compete with a Brad Feld backed company. It’s nice to see that the idea was good, as Gist got bought by RIM. Congratulations Gist!

Obsolete email addresses (a feature request)

This is a feature I wish my programs I’m using to read email had. Sometimes, some people change email address. It happens, to some more than to others. When that happens I don’t change the email address for that person in my contact list. I add the new address.

The reasons is that I still want to maintain an association between all those emails I’ve sent and I received from that person and the contact details for that person. The idea is that when I ask my software for all emails from “John Smith”, even if John Smith changed addresses 15 times, it should still be able to find the old ones.

The problem is that sooner or later I send an email to that person using the obsolete email address. I really wish the software would allow me to mark addresses as obsolete or historic so that the information is not lost but I never use them again.

360 vision

I’m surprised I’ve never seen this idea being tried…

When I’ve was a kid I’ve read a report about an experiment. A guy put goggles with screens so that he could see nothing but the screens (ala virtual reality). The same device also had one or two cameras and the screens projected an upside-down image of the camera(s). After a while (I remember three days) of bumping into furniture, walls and eventually the floor, the guy stopped noticing the images were upside down. The brain switched to interpret the new images.

When they removed the goggles, suddenly everything was upside down and the brain took the same amount of time to switch back.

I’ve immediately got this idea: let’s put cameras all around the head in a helmet and let’s compress the 360 image into the two screens. At first we’ll be very confused but after a while we’ll be able to see 360. Wouldn’t it be great?

Better assert difference?

Rails come with some awesome assertion methods for writing tests:

assert_difference("User.count", +1) do

That asserts that the count of user was incremented by one. The plus sign is not needed, that’s just an integer, I add it to make things clear. You can mix several of this expressions into one assert_difference:

assert_difference(["User.count", "Profile.count"], +1) do

That works as expected, it asserts that both users and profiles were incremented by one. The problem I have is that I often found myself doing this:

assert_difference "User.count", +1 do
  assert_difference "Admin.count", 0 do
    assert_difference "Message.count", +3 do  # We send three welcome messages to each user, like Gmail.

That looks ugly. Let’s try something different:

assert_difference("User.count" => +1, "Admin.count" => 0, "Message.count" => +3) do

Well, that looks nicer, and straightforward, so I implemented it (starting from Rails 3 assert_difference):

def assert_difference(expressions, difference = 1, message = nil, &block)
  b = block.send(:binding)
  if !expressions.is_a? Hash
    exps = Array.wrap(expressions)
    expressions = {}
    exps.each { |e| expressions[e] = difference }

  before = {}
  expressions.each {|exp, _| before[exp] = eval(exp, b)}


  expressions.each do |exp, diff|
    error = "#{exp.inspect} didn't change by #{diff}"
    error = "#{message}.\n#{error}" if message
    assert_equal(before[exp] + diff, eval(exp, b), error)

Do you like it? If you do, let me know and I might turn this into a patch for Rails 3 (and then let them now, otherwise they’ll ignore it).

Update: this is now a gem.

If I were in charge of Adobe

Clearly, Adobe is losing the battle with Apple. There’s no Flash on the iPhone, iPod Touch and iPad and there’s no sign that there will ever be.

Apple is not a company that can be easily influenced. They do things the way they think is right even when everybody else disagrees. Even when everybody predicts is going to cost sales. They’ve been doing it for more than 10 years and it’s working very well for them, they are not going to stop now. For Adobe, Apple is a lost cause.

I actually dislike both companies. Apple is building an extremely proprietary environment. They are much worst than Microsoft. Apple’s tax not only includes the operating system, it also includes every third party application. Not only they get a part of everybody’s cake, they decide who have cake and who doesn’t by controlling which applications get approval and which get rejected. If Apple ever dominates the industry, it’ll be the dark ages of computers.

Adobe is not much different with Flash. Flash is a proprietary and it works well on one and only one platform; if it does at all. Everybody else is left out. Flash has been making the web inaccessible for ages. I would be very glad if we can get rid of Flash.

If I were in charge of Adobe I would do something that would help the company remain a leader on the web and at the same time make Flash good: open source it.

I never understood why Adobe hasn’t open sourced Flash already. The specs are more or less open, there are alternative implementations, and they are not making any money by selling Flash. They make money by selling the tools to build Flash web sites and that’s not going to stop if they make Flash itself open source.

Before or while open sourcing I would make agreements with two companies: Google and HP. Make sure Flash is going to be included in Android, Chrome OS and Web OS. I would also put those phones and tablets in the hand of my developers (that is, Adobe’s), for free, as a gift, with the goal of making the Flash experience is absolutely thrilling.

I think that is Flash’s only hope.

A message to kids: what is your passion?

This message actually applies to everybody but I think it’s obvious how it applies to adults. What most kids don’t realize is that it applies to them too.

If I ask you “What is your passion?” and you don’t give me a straight, simple and quick answer, you are in trouble.

My passion is programming. When I start programming the world around me fades away; I forget about time, I forget about people, I forget about sleeping. I don’t even feel sleepy. If I spend two days without programming I start to feel uneasy. Five days and I’m going crazy; I start writing algorithms in napkins. I think that’s how a passion feels like.

I believe it doesn’t matter what your passion is as long as you have one. I’m fortunate that my passion is an extremely profitable one. Work and play are the same for me. Even if you think your passion is not on that category, you may be able to force it into it. And enjoying one’s job is the best thing that could happen to anyone.

I think most adults recognize this. I would hope so. Most kids don’t even know what I’m talking about. They don’t know the feeling or that the feeling even exists. I was, again, very fortunate of finding my passion when I was 7 years old.

It’s very important to find your passion as soon as possible, so you can align your life to it. I loved to program and now I work as a programmer. I didn’t wait until the second year of Computer Science to find out. It would have been way too late then.

If you think your passion might be programming? Pick a book, start writing code. You think it’s helping animals? What animals have you helped so far? Go out, find an animal, and help it; go to a shelter and feed an injured dog at least. You think it’s money? You better had a spreadsheet with your income and expenses, even if your income is your weekly allowance.

Let’s see a couple of activities which seem hard to turn into a passion for a kid.

Medicine? Go and do a course in first aid, it doesn’t matter how old you are, they’ll probably let you do it. Read about about anatomy or any other aspect of medicine. You can start at the Wikipedia and read for as long as you want. If you get bored in 10 minutes, that’s probably not your passion. Get a microscope and play with it. There are experiments to extract DNA from some plants, do them. There are experiments to figure out the type of blood of a person, do them.

Watch Dr House, ER (does it still exist?), Grey’s Anatomy and whenever there’s an illness in them do your own research. Start a blog and for every episode explain how wrong they are. Watch documentaries about real emergencies, even about forensics and corroborate what they say, blog about it.

Talk to a medic, ask them how it is like to be a medic. Ask them what was the most interesting case they’ve had. Probably they’ll have some reserve in talking about them, but if you are interested, they’ll find something to tell you. People love talking about themselves.

And then find out the thousand experiments to do and things to learn about medicine that I don’t know about because it’s not my passion. I already gave you a lot of ideas for not knowing anything about the field, if it’s your passion you’ll have many more.

Law? Watch all the law-related TV shows, there are a lot. Are they right or wrong? Same as for medicine, go and do your own research, blog about it. If you are old enough, try to get a job as a clerk, or errand-boy in a law firm. You’ll learn how that world works.  Get yourself real cases to read an analyze. Are public trials conducted where you live? Can you get into one? Do it. Can you go to congress sessions? Do it.

Help someone with a contract. Contracts move around all the time. Work contracts, leasing contracts. Most people, me included, glance over them and sign them. Help someone understand a contract, by understanding it yourself first. I don’t have the time or the money to get a lawyer to review everything I sign, but if you were my neighbor and want to help me for free, sure! Go ahead! Do know about any potential liability problem, though.

Find a lawyer and ask them about their job. Ask them about cases. And then learn about the thousands of things you can do in relation to law without being a lawyer that I don’t know about because it’s not my passion.

You don’t have to wait until your are 17 or 18 to start doing all that. You can start today no matter what your age is.

Leave a comment: What is your passion and what are you doing about it?

An intelligent music player

mikPmjuI still haven’t found a good music player, for my computer that is. The one that got the closest to it was Amarok, but still it was very far away. My problem is that I don’t know what to listen to, really! I’m only just finding out what music to use  for coding. There’s one thing I really want from a music player: for it learn what to play for me. It’s not the same as learning what I like. It’s much more complex. Amarok learns what I like, but not really what to play for me.

In Amarok, when you jump to the next song it checks how much of the song you listened and assigns a score based on that. For songs that you listen completely you get a high score and for songs you listen only for a couple of seconds a low score. Over time, as you listen, those you like most and listen most will get high scores while those you despise and jump immediately will get a lower score.

Amarok has a special playing list, or used to have in the 1.4 version, which is called “dynamic” and plays those songs with the highest score. That sounds excellent, but it’s not enough. This music player I’d like to have would not compute how much I like a song, like Amarok, but how probable it is that  I’ll like it when it plays that song.

Let’s call this player Pamup, Pablo’s Music Player, and let’s see how it could provide such a magic feat as playing songs that you want to listen (even if you don’t know you want to listen to them).

Pamup would have a scoring for the songs but instead of being a linear score it’ll be multidimensional. Let’s start with two simple dimensions and the rest will be clear: percent of playing time and time of the day. Song A you play 100% and song B 50%. That means that you like song A better than B. That is what Amarok does. Pamup would instead record:

  • Song A in the morning: 100%
  • Song B in the morning: 50%
  • Song A in the evening: 50%
  • Song B in the evening: 100%

You like A as much as B, but you are more likely to want to listen to A in the morning, and B in the evening. Of course adding the time of the day will probably not improve the equation by much. The idea would be to add as many dimensions as possible. Some dimensions may be irrelevant and they should cancel themselves out, like in this case:

  • Song A in the morning: 100%
  • Song B in the morning: 50%
  • Song A in the evening: 100%
  • Song B in the evening: 50%
In that case, you like A better than B, in the evening and in the morning. The time of the day is irrelevant. Maybe it’s only irrelevant for some songs but not for other:
  • Let it be, I like it at all times.
  • O Fortuna of Carmina Burana, please, don’t wake me up with that (or maybe yes, please do, not sure).

Maybe it’s irrelevant for some people, but not for others. I don’t know and we don’t need to know.

I can think of many other dimensions to add to the system and I’m sure many other people will think of more and as technology improves we’ll be able to have even more:

  • What program are you using? I want music that helps me concentrate when I’m using my text editor to write code while I don’t care much about what I’m listen to while web browsing.
  • What are you browsing? Maybe I do care about the music while I’m web browsing. Redditing and Facebooking can be done pretty much with any music, but if I’m at Lambda the Ultimate, I need something to concentrate. Even some analysis of the web site could give some important hints: lot’s of dense text, no pictures, play Mozzart; a photo blog, play whatever.
  • How are you controlling the player? Are you using the keyboard with global shortcuts? you are probably doing something else. Are you using the remote control? you are probably away from the computer. Are you using the mouse directly into the players window with the lyrics window open? Ok, let’s play something with lyrics because you probably feel like reading, maybe even signing.
  • Are you singing? When can find that out using the computer’s microphone. Let’s play things that are in your vocal range, and mostly by the same gender as you are. Let’s also play things you liked singing before.
  • Are you using only one app or switching between various apps?
  • Which apps are you switching with?
  • Is there any other sound coming out from the computer? If so, maybe soothing background music with not much volume is what the player should play.
  • Are you dancing? Let’s disco! You think that’s a tough one? Most smart phones have accelerometers in them, if you have the smart phone on your pocket I’m sure I can find out if you are in the couch or dancing, or maybe moving but not dancing. Even the raw input of the accelerometer could be used as a signal, because it’ll be different depending how tired you are and how you are dancing.
  • Are you alone? You think that’s a hard one as well? Many people are using wifi, so, what’s the strength signal received on other devices on the same network?. If another computer has a similar signal level as yours and it is being used, you probably are not alone. It could also be done using smart phones, although with a smart phone you don’t require to be in use, you require it not to be on the table. If it’s plugged into the computer, you can ignore it, if it’s flat and not moving (accelerometer again), you can ignore it.
  • Who are you with? I hope by now you realize how much we can find out. Let’s make it social, let’s have the app in every device. Why would people install it? Well, when you visit me, if you have it on your device, you’ll device will tell my computer what you like, and my computer knows what I like, so it’ll try to find a common ground for us (and it won’t trust me that much when I skip a song, because maybe it’s you skipping it). We could make you use your own smart phone to skip it, and then Pumap knows who is skipping it.
  • Who are you talking with? If you are talking with other people, using voice recognition you may identify that people, or at least how many there are. If there’s cutlery clater in the background, people are eating, let’s just play background music for a nice evening. If it’s only you speaking, maybe you are in an old land-line phone (if you were using your smart phone, Pumap would know), let’s cut the music altogether, probably it’s distracting.

I believe this program should not work with special cases but have some very sofisticated machine learning system where we input all these signals and does the right thing. And as more signals become available, they are added and analyzed as well. I would like to have that music program! Because honestly, really, I’m not sure what music I want to listen to. I want my computer to figure it out for me.

Breaking the Monopoly-design monopoly

monopolyI am talking about the game, you know, Monopoly! There are so many versions of it but the other day I’ve seen the most interesting one. No, not the Esperanto one: Monopolo. A do it yourself Monopoly, or a Make it yourself-opoly.

From that I’m deriving the idea, why can’t you design your Monopoly in a web application, or even in a desktop one but that ultimately submits it to the web and you get the finished game delivered to your home. You add pictures, you pick themes, you pick the title, the language, the currency. It could make a perfect purchase or a magnificent gift.

Why can’t you sell it to other people? Like you do for stuff in CafePress. Hasbro would take some earnings but all the design is ultimately crowd-sourced, the designer also gets some money. I find one reason why that may not work and that’s because most stuff for which is worth it to make a monopoly are also copyrigthed. Average Joe wouldn’t be able to make a Monopoly of his favorite movie without striking a deal with the movie makers, which is not likely for average Joe.

But the movie makers could make them in a self-service way. That’s also unlikely to happen. But an xkcd Monopoly? That’s likely to happen and sell quite a few copies. Companies with a sense of humor or with a good PR would have some employee doing tha. Do you imagine Microsoft or Google Monopoly with each property being a product. Do you want to buy Office? Do you want to buy Chrome? Do you want to play as Bill Gates? Steve Ballmer? Larry Page? I know some geeks would stack them up and have one of each of those.

I thought about starting to make the web application for designing a Monopoly. It could generate PDFs that you download and print and paste in a normal board as an interim while not having any production. But there’s only one company that can legally do this: Hasbro, and having only one company as your potential exit is not a good idea. So it was dropped from the ideas board into here, my blog.