Studenten maken iPhone WebApp op basis van YelloYello API

Het team bestaande uit Martijn Willemse en andere studenten van de Hogeschool Rotterdam heeft afgelopen woensdag hun iPhone WebApp gepresenteerd. De WebApp maakt gebruik van de YelloYello API en kan alles vinden wat handig is tijdens het uitgaan!

Voor iedereen met een iPhone is de applicatie te vinden op: http://www.me2i.nl/mug. Zie onderstaand filmpje en foto’s voor meer informatie

You need to a flashplayer enabled browser to view this YouTube video

Not the biggest design ripoff.. copyleft..

A while ago I read this article on TheNextWeb showing a site copying the complete idea of an OSX piece of software. The writer was hating it.. but in fact this happens all the time..all over the internet!

One example is the technology blog TechCrunch vs. the technology blog TheNextWeb. Look at the sites:

  • both white’ish (TheNextWeb became white recently if I’m correct)
  • both have a big banner in top with the featured posts
  • both have nice bloggy square banners on the right
  • they just have the same appearance..

Of course all blogs look the same.. but this are three typical things.. I can ramble on about both having all these news articles below each other, both having pagination on the bottom of the page, both being coded in html.. ;)

The point I’m trying to make is.. everything (digital) on the Internet gets copied: movies, music, blog articles, designs, javascript, open source code, blog design, program design, etc..etc.. The question is: what about it? Is it bad? Should we stop it? Does it make things better (like with open source code)? How far can we go? Do we steal a blog design or a complete program? Is turning an OSX app into a WebApp copy-ing or innovative?

Interesting stuff :) that is keeping people busy for a long time..and probably will..

Google maps window.jstiming error

I just found out some of our sites using Google Maps stopped working (at least the Google Maps part) because of a window.jstiming javascript error. Now…. what do you do? Check on twitter.com if other people had the same problem.. and yes.. at least one was.

So now you know it is not YOU that is to blame.. but Google ;)

BTW, fix it using the stable js version (2.s instead of 2.x or whatever you’re using):


<script src="http://maps.google.com/maps?file=api&amp;v=2.s&amp;key=yourkey” type=”text/javascript”></script>

The BOM, UTF-8 and Rails

Some nasty things can happen to your design if your files are saved with a Byte-Order Mark (BOM) character at the beginning. We had a view that was totally f*cked up in Firefox by this. The view was simple:

1
2
3
4
5
Some layout around a
<%= yield %>
or around a
<%= @content_for_layout %>
and a secret character gets put in.. it's the BOM!

In our view (in Firefox) there was a new-line added and a div was moved and had a spacing. To remove it check here and use the script here!

Download those databases..

What I did know was that you could download wikipedia and also wikitravel. But you can even download the IMDB to some extend. It’s all in text format.. but it IS available.

I could not find a (Ruby) script that imports all data in a usable database structure however.. anybody got an idea?

[update]

I found IMDbPY that seems to do just that!

Plugin gem dependencies in your environment.rb

One good thing in recent Ruby on Rails are Gem Dependencies! However.. they are very frustrating when you need gems in your plugins. This gives you a Catch 22..

The rake task to install gems:

1
sudo rake gems:install # Use sudo! See notes below

gives you an error like:

1
2
3
4
5
6
sudo rake gems:install
(in /your/rails/dir)
rake aborted!
no such file to load -- gemname
 
(See full trace by running task with --trace)

This is because the Rails::Initializer block in your environment.rb will try to load all plugins.. and those plugins need gems.. and those are the gems you’ve put in the block.. hmmmm.. nasty.

However. There is a hack to still be able to use the rake gems:install command.. and I’m going to give it to you ;)

In your environment.rb, inside the Rails::Initializer block, use the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  if $rails_gem_installer # If we're in a rake gems:install or similar task (this is set by Rails, the $-sign makes it a global variable)
    # We stop the initializer to load the files from the /config/initializers dir. This is to disable the usage of plugins or gems in that code.
    puts 'Disabling the application initializers (rails_gem_installer == true)'
    class Rails::Initializer
      def load_application_initializers; end
    end
 
    # Next, do *only* load the needed plugins that are not dependent on gems. For example exception_notification since that one is used in application.rb.
    puts 'Not loading all plugins (rails_gem_installer == true)'
    config.plugins = [:exception_notification]
  else
    # Otherwise, when we're just loading the environment.. load everything in the right order. So this is YOUR config.plugins = [something]!
    config.plugins = [:translatable_columns, :userstamp, :all]
  end

Now, using this code you will be able to install gems using the rails tasks even if though the gems are needed by plugins in your application. Whoeepie!

Further notes:
Have you ever used the rake gems:install task without sudo? Then your gems get installed in your homedir (~/.gem/ruby/1.8/). To uninstall them the regular command will not work (at least..with me).. you will have to use

1
gem uninstall -i ~/.gem/ruby/1.8/ [yourgemname]

[edit]
You can also disable observers if you have them since they may load models depending on plugins depending on gems depending on the rake gems:install task :)

1
2
3
  if not $rails_gem_installer
    config.active_record.observers = [:user_observer]
  end
1
2
3
4
5
  # For my own notes:
  # You can use ENV['_'], __FILE__ or $0.
  # The latter gives you the most correct results (also when using sudo).
  # So you can also use something like:
  config.active_record.observers = [:user_observer] unless $0 =~ /bin\/rake$/

Flickr version control

Sometimes your version control creates its own code ;)

Here’s Flickr’s site today showing some revision conflict code :)

Flickr version control annotated

YelloYello in Challenger50

Challenger50 Top 10

Tomorrow the ChallengerDay 2008 takes place in Hilversum.

We’re in the Top10 with YelloYello.. thanks everybody for voting!

New release of YelloYello Platform

So finally another update of the YelloYello Platform. We’ve got the following updates and new features for you:

Google Earth
By introducing KML views on both all places and all searches you can now view all YelloYello results in Google Earth!

Google Earth

Better Microformat compatibility
Besides our RSS feed with GeoRSS we now have better support for Microformats. Previously we mainly had hCards but now we also support hReviews. So we’re working on creating the Semantic Web :)

More API features
For our power users we now have even more features in our beta :) RESTful API. So if you’re interested and want to connect your (web)application to YelloYello drop us a line!

Now compatible with 80% more users (Internet Explorer)
We’ve fixed a lot of styling and Javascript bugs that appeared when you guys were using Internet Explorer (that’s about 80% of you). We’re developing YelloYello on Apple Mac’s so we were using Firefox (and so should you ;) ). IE got left behind a bit.. our incremental updates introduced some small bugs.. but most of them are FIXED now! So if you’re a IE user.. you can now fully enjoy YelloYello.

More stuff..
And of course don’t forget our iPhone version or our Mobile version!

Let us know if you’ve got suggestions or find bugs.

Ruby on Rails presentation

We did a Ruby on Rails introduction presentation at Peak-IT just yesterday. The presentation can be found on Slideshare (see below).




About Joopp's Blog

You've reached Joopp's weblog. Joopp is a young company creating innovative web concepts. Check out what we're doing on our website.