Sad iTunes Library
 
 
Script available at github here!

There's nothing more sad than an iTunes Library where the Coverflow is a deck of black musical notes. If you, like me, have a somehow irregular iTunes Library you have certainly experienced this sadness. Maybe you have tried using the iTunes built-in feature to fetch album artwork achieving poor results, or maybe you've tried some of the available software solutions out there and maybe they didn't work. Maybe that's because most of them rely on grabbing the name of the album in which that track is in and getting the cover.

In this blog post we will try to solve this problem with our own hands with a simple Ruby script. The advantage is that you know your own library, so you can tweak the code until it gives you optimal results, not relying on something made to work for everyone that ends up just doing great in regular libraries. For my library this script fetched artwork for 401 artists out of 682, so with a success of proximately 60%. Which is fairly good, given the fact that the most of the unsuccessful tracks didn't have the necessary ID3 tags specified for the script to work. I bet the result can reach far better in other libraries.

"But, what the hell is an irregular library? I do I know if mine's like that?" - you ask. Well, maybe if you have tried the built-in iTunes feature Get Album Artwork and you achieved nothing your library is probably pretty irregular. The built-in feature and many other software solutions simply try to extract the album ID3Tag of the track, accessing some large database and getting the image for you. But, what if you have a lot of tracks that don't belong to any album? What if you have a lot of recordings of live events or radio shows or dj sets or the music simplydoesn't have the album tag specified and you don't have time to go manually fix all the tracks? Well, the tools will probably not work.

 

Another sad iTunes
 

 

So in this script I tried a different approach. If the available tools fail at giving me the artwork for the albums, I would rather have another type of artwork there than facing black musical notes. So let's think, what all the tracks have in common?

They have an artist. It's unusual to have a track in a library which doesn't have the Artist ID3Tag specified. So, what if, instead of getting the artwork for the album, we get as the artwork an image of the artist? In my opinion that is far better. Since I don't care about the album, I rather have an image of the artist, some of them I didn't even know the face before I had it on the tracks.

So, how do we do this? First things first, where are the images for the artists? If you use Last.fm you know it consists of a large community of people who are constantly passively scrobbling (that is, sending) information about the music their hear in their favorite player to Last.fm. There are plugins available to almost all players in all operating systems so, if you use it, and you have listen to all of your iTunes Library, then Last.fm definitely has information for every track in your library in their database. People can access through Last.fm's website each artist's page and add images, most of them with pretty good quality (since their upvoted and downvoted by the users). You'll probably end up with images for almost all the artists in your library. Below you have an example of the type of images last.fm has on the artists, I think they're really good.

 

Armin van Buuren
 

 
Last.fm has an API which you can check out here. It has the method getimages in which you have to specify the artist name and it'll return a collection of links to the images. So that problem is solved.

Next one. How can we traverse an iTunes Library and how can we get the name of the artist for each track? iTunes solves this problem for us by having an iTunes Library.xml file inside your iTunes Library folder, in there you will find <dict> tags for each track with a bunch of <key> tags exposing the ID3 tags of the file, including artist name and location of the file on disk. We can simply parse it with a XML parser (I couldn't do it with regexp) and use that data.

Sample text of the iTunes XML file

 
The last problem is just how do we apply artwork to a track. There was two possible ways you could do this. One of them was using the iTunes closed system for artwork, the .itc files, which store the artwork you get when you use the Get Album Artwork function. Those files are not documented although some have tried to do it reaching some conclusions. I won't go that way, it's undocumented territory and the artwork would just be visible in iTunes.

The other way is having the image itself stored in the MP3 file. ID3 tags allow you to store a couple of images inside of a single file. To do that, we simply need a Ruby library for editing ID3 tags that supports the picture frames. I found this one which we will be using (more details on the instalation in a minute).

For the script to work you will have to install or have the following:

- iTunes
- Ruby
- Rack::Utils gem
- CGI gem
- URI gem
- Net/Http gem
- REXML Ruby XML parser
- ID3Lib Ruby


Most of the gems come built-in with Ruby. The ones you'll prabably have to install will be Rack::Utils, REXML and ID3Lib. If you're using Ruby 1.8 the id3lib available through http://id3lib-ruby.rubyforge.org/ should work fine. But if you use Ruby 1.9 I found that version to crash a lot. I was almost giving up when I caught this pseudo-fork at github. I recommend you install that one, the installation process is the same as the one documented in the ID3Lib website.

I won't use this post for explaining the code, but rather what you have to define in it and how you can interact with the script. Right at the start of the code you'll see this:

@itunes_xml_path = "/Users/miguel/Music/iTunes 1/iTunes Library.xml" 
@logfile_path = "/Users/miguel/Desktop/errors.txt"
@image_path = "/Users/miguel/Desktop/images/"
@in_control_mode = true
@cuts = ["with", "With", "Feat", "feat", "pres", "Pres", ",", "vs", "&"]


You'll have to define those ones.

  • @itunes_xml_path is the path for your iTunes Library.xml file which should be pretty similar to mine.
  • @logfile_path is the path were there will be stored the logfile of the process which will document throughly what's happening to each track. I recommend you open a terminal tab with tail -f /.../logfile so you can see what's happening as the script is runing.
  • @image_path is the path of a folder you'll have to create manually where the images fetched will be stored. Each image will have as name an escaped version of the artist name
  • in_control_mode is very important. If it is set to true, the program won't do anything automatically. It will check the artist name of a track, fetch the image and ask you if you accept it. You can answer no and it will fetch another image for that artist, and it will automatically return to the beginning when all the images were fetched until either you answer y (yes) or 'leave' which will skip that track. Your answers should be stored for that artist name, so you don't have to answer the same thing everytime. If that mode is off the script will just apply the first image of Last.fm to your track without giving you any control.

 

Example of the script running
  • @cuts is an array of words that will be used to split artist tags which are composed of more than one artist such as Linkin Park with Jay-Z, or Gareth Emery vs John O'Bir such that the considered artist will just be the one before the splitting word. Define your own based on your library.

At last, after you have run the script, you will have to be able to make iTunes reload the files so it can update the images and use them on Coverflow. I noticed the images were update when you played the track. Of course you won't need to do it manually to our whole library, although it may be faster that way. Just fire up Script Editor, put iTunes in the default Music Playlist sorted by album (this may reduce the disk needle jumping back and forth), select the first track of the list, disable shuffle, and insert the following text in Script Editor:

tell application "iTunes"
    repeat 2133 times
        play
        pause
        next track
    end repeat
end tell


The number after "repeat" should be the number of songs in your library which you can check at the bottom of the iTunes window. The script will then play pause every song in the library, enough for the images to be recognized. It's a hack, but it works. Hit play and stop the process when we reach the beginning again.

 

Script Editor script

 

At last I have to say this script was tested on Mac Os X Leopard. I expect it to work on another operating systems but not without some changes, so if you're on another OS start testing the code bit by bit and seeing if it works or making the appropriate changes.

 

A happy iTunes
 

 

So that's it. I think the result was pretty good. You can understand the process better by reading the code which is available at github here for you to fork or integrating in some sort of Cocoa App (it would be awesome) which could make the process more visual.

 

Another happy iTunes
 

 

Known Issues: Every time the script run it happened to something like 20 tracks an introduction of a strange char at the beginning of the name, artist and sometimes album and genre ID3Tag. I think that is related to either the version of the ID3 tag of those tracks or problems with the ID3Lib. That should be no reason for you to try the script, just do it in 'in control mode' and verifying if everything is going ok (that char can be seen when you play the track on iTunes). Anyway, I absolutely don't recommend you running this script unless you have something like a Time Machine backup done of all your iTunes Library.




A 24 Game card



You certainly know the popular 24 Game, in which you're given four 1 to 9 numbers and the objective is to come up with some combination of arithmetic operations that will end up using all the numbers and which the result is 24. In my country there are (or used to be) some serious tournaments around it and I had the chance to reach a regional stage of the national tournament when I was in my 6th grade. However, my school didn't had that much cards so my training was limited because no matter how good you are at math the memory part of the brain will always reach the solution to a puzzle before the arithmetic part does a single operation, so having less cards means less memorization/training.

So recently, as my brother now reaches that level I just thought I could put in practice my programming skills (which would have been very helpful if I had them back then) and generate all the possible cards for that game. The program returns exactly 195 390 unique cards and presents the way of solving (there could be others). Just take it, memorize it and do your best if there are some tournaments you can participate in.

Click to browse all the cards

EDIT: My friend Pedro Diogo (many thanks to him) took the data and created ready to print cards. So,

Click here to download the ready to print cards.

 

If you want to check out the code feel free to here.




Twivie logo

 

It's for all of us a great honour to anounce Twivie.com, one of the first attempts to create a community around Twitter on movies!

Well, what is Twivie? Think about this, people are used to tweet about pretty much everything, including movies, and there is a lot of information on movies circulating on Twitter, but no one catches it and presents it in a website where you can easily keep track of the movies being talked about that matter. Twivie attempts to solve this problem by catching all the tweets with a certain syntax, and presents some nice statistics on them.

 See, Twitter is, at the moment, the greatest web forum ever, but very few people are using it to pull out the information being shared there. Twivie is our attempt on movies and will be nice to follow the growth of this application.

I hope you enjoy it and take a moment to check the website.

Start twiving! 




(this post is only written in english due to the exportation of these Magalhães (Magalhaes/Magellan) laptops to non-portuguese speaking countries like Venezuela, who there might find this post useful)

 

The Magalhães
 

 

So it has arrived, finally, the Magalhães netbook that the portuguese government has been using to increase the usage of computers by children. Adopting the idea of the portuguese company JP Sá Couto, and being supported by Intel, as the computer is nothing else than a Classmate PC, the portuguese started a campaign that rivals the ones did by OLPC and at the same time appears to succeed over them all by the quick partnerships done with African and South American countries, which might turn this project in the de facto cheap laptop for every child in a considerable number of countries. Nothing more than a victory to Intel...

Anyway, here in Portugal, the laptop that was promised to be delivered to all the children still wasn't to most of them. But let's talk about the laptop itself, pros and cons.

 The system features two USB ports, audio-in, audio-out, ethernet port, wireless card and SD memory card slot. 

 

MacBook White 13" and Magalhães

 

The first thing anyone will notice is the keyboard as it's very tiny (as you can see in the image above compared with a 13" MacBook White). Any adult will find difficult not mistyping any word, but since this laptop is not for them that can't really be counted as a con, although we may expect this to be the only computer of the teens of tomorrow, who will certainly feel the laptop too small for them over time. The same goes to the screen. But overall, externally the laptop seems very resistant in its strong plastic body and also very light and portable. Also, the system seems well synched in its components resulting in a very good experience both in Windows XP and in Caixa Mágica Linux (a portuguese GNU/Linux distribution).

 What's wrong then? The main problem that arises is in the disk formatting. When you hear a system with a hard drive of 30GB, you expect it to have at least 15GB of free disk space even if Windows XP is already installed. But in this case, since there is no CD/DVD drive and we're talking about a dual boot system (with two operating systems) the practical result is that users end up with something like 4/6GB of free disk space in the system. Thumbs down. This arises, as said, from the dual boot installation, with Windows XP on a 15GB NTFS partition taking already from the start something like 12GB of it, a 5/6GB Linux partition, a 4GB NTFS for data (the only really free space), and two other partitions of 2GB each for recovery of both operating systems, since there is no cd drive (careful, these recovery partitions will not replace most of the software pre installed, like the Office suite in Windows). In the images below you can see a list of the partitions made on the Magalhães' hard drive, and below that, the amount of free space a Windows user will get right from the start.

 

Fdisk -l runned on CaixaMagica Linux
 
Space left on Windows partition  Data partition
 
Although there are a lot of pressures both from Microsoft, that has a long partnership with the portuguese government (that seems to enjoy paying the licenses), and from Caixa Mágica, that has managed to deploy its distribution on the Magalhães, I would say that if there is a shortage of disk space, the worst thing you can do is turn it even shorter, even more if, as in Portugal, there is simply no decent formation on Linux on the IT teachers, let alone the elementary school teachers. The fact is that, although Caixa Mágica clearly made an effort do deploy a very decent Linux distribution, more consistent, intuitive and good looking than Windows and its antivirus popups, Linux will be ultimately left behind and rarely opened, and that will turn useless all this partitioning scheme that offers children 4GB of free space in a hard drive where it could simply deploy only Windows or Linux, and offer 16/18GB of free space. Anyway, there is a SD card slot which will certainly help.

 

Caixa Magica Linux on Magalhães

 

Fear not, in September this year is expected to be realized the Magalhães 2, which appears to include at least a 80GB hard drive, but be aware that JP Sá Couto stated that it is the country adopting the computers that will have to choose the version. In case it's the first one, be ready for the unhappiness of the children.

The Windows installation features a pre installed Office 2007, which I find abusive since version 2000/2003 would be enough for the kids and take less disk space. There is already Avast antivirus installed, and Parental Controls blocking by default any website not in the white list. An annoying bar will appear at the top too due to some e-learning program. At first run the user will have to configure the usual stuff as administrator passwords and user accounts, and in the end the usual Windows desktop will appear already featuring three columns of icons, which may not be the best start to a child (turning on MagicDesktop will not be either).

On Caixa Mágica the system presents a very nice and intuitive desktop widget that presents applications under groups like Working, Fun, Internet, which certainly will be far more intuitive to children. Internet Connection will be fairly simple to manage even if you're behind some WPA protected wireless network, something still a lot of linux distros can't handle without the user digging in man pages. Parental Controls will also be turned on by default but the program behind seemed to me less capable than the Windows one, since it only allows or blocks programs. That means, or all Internet, or no Internet. I don't believe in parental controls either way...

Although the disk space problems, it's a surprisingly good and well thought system, at least for the price it's being sold to the children. But if you're not under the "e-escolhinhas" program, paying 280-330€ may be a little too much compared to alternatives as the Asus Eee PC.




Everyone at some point in the past must have dropped bookmarks. Remember the times prior to Google? Bookmarking was lots of useful. What if that awesome site you discovered the other day wasn't bookmarked and got forgotten? Searching for it could easily be a fruitless mission. But there came Google, and most of the new users that were now arriving and still arrive to the web today may even not be aware of the existence of bookmarks, that tool of the browser that lets them remind useful or largely accessed links. Why should they? They have Google, the thing that reads their thoughts and never presents anything but what they want in the first result.

Of course bookmarks are still useful and the proof of that is, for example, Del.icio.us, but for a totally different purpose, the purpose of being a warehouse of links we think we may find useful in the future. We are talking about website launching here and even things like the Bookmarks toolbar in your browser are getting pretty useless by now with the recent improvements on Google, namely Google Search Wiki and Google Labs' experiment KeyboardShortcuts.

 

Firefox's Bookmarks Toolbar
 

 

Let me first talk about Keyboard Shortcuts and what an awesome google labs feature it is. It's a known fact in computers that keyboards are much more faster to work with than the mouse. This experiment brings exactly that. The ability to be able to mouselessly scroll through the search results with keys 'J' and 'K'. But the best part is in the fact that the first result is always highlighted by default and a simple Return over a search result will get to that website. You won't loose that second of getting to the mouse (which will probably take itself most of total time wasted if you're not using a touchpad on a laptop), moving it and clicking on the first result. Your search will get where it's supposed to be in a split second. 

This would all mean little if Google had attributed a key to the "I'm feeling lucky button" besides the return to the usual search. That way, searches done for website launching would be direct, and faster.

But you can still improve a little more with what is currently available, and another good thing is Google Search Wiki. With it you can add or remove results from a certain query, make your own websites the first on google (if not) and thus faster accessed. But why are we still typing all that text to get to a website, if Google Search Wiki lets us make any query a direct path to the result we defined? Why not start making our own aliases like searching on google for "tc", and right after the appearance of the results, simply pressing Return with the keyboard shortcut experiment to get to TechCrunch instead of TC Electronic, Teachers College or ThomsonCenter who could mean nothing to you. All with a faster than anything "tc" + Return + Return on google.

 

Adding TechCrunch has a valid result for 'tc'

 

This is what I've been recently thinking, and decided to do, but this usage of Google has a website launcher, and our tweaking of its own tools to give us faster access to the websites we want is problematic. Google has not yet confirmed if the search Wiki choices of the users will ever have any influence in the global results, but if they ever do, search could be compromised with our urge to faster and faster access to what matters to us but to anyone else.

 

TechCrunch has the first result for tc

 

Anyway, I think still very few people are aware of the productivity boost they can have by using these tools, so I thought I better pass the word.




If you're a heavy user of twitter you probably already experienced this: you cannot miss a bit of what is happening on twitter so you always have your Twitter client fired up getting you the updates with a high frequency check (my Twitterific is on a 3min check), and although you have all of your RSS subscriptions safely managed by GoogleReader or your client of choice, you end up knowing the news first on Twitter, by your followers conversations than by deliberately accessing GoogleReader, which itself has an unknown frequency check. Also, if on GoogleReader you have content that's highly important to you (data thats updated by RSS, not your regular blog post) constant accesses to GoogleReader may distract you from the job your doing locally, just to end up knowing nothing knew is there.

Of course you could just forget to check GoogleReader and be notified by a simple RSS Notifier, but why would you install another program if your twitter client already does that?

So I decided to create a Twitter account that gets fed by a simple Ruby script that checks my most important feeds in 3 minutes time loops and if there is any new content, the first 140 characters of it gets posted on twitter (you may edit it to post the entire post but be careful, twitter has a 100 connections per hour limit), because in the feed I'm talking about that is enough to know what happened. So let's get to the code.

require 'net/https'
require 'rexml/document'

begin
  f = File.new("data.txt", "r")
rescue Errno::ENOENT
  #File doesn't exists, fill it with sample data
  f = File.new("data.txt", "w")
  info = {
    "so" => "",
    "eo" => "",
    "aced" => "",
    "po" => "",
    "ges" => "",
    "ppi" => ""
  }
  Marshal.dump(info,f)
  f.close
  f = File.new("data.txt", "r")
end

info = Marshal.load(f)
f.close

urls = {
  "po" => "/external/announcementsRSS.do?announcementBoardId=243496",
  "so" => "/external/announcementsRSS.do?announcementBoardId=243523",
  "aced" => "/external/announcementsRSS.do?announcementBoardId=244762",
  "ges" => "/external/announcementsRSS.do?announcementBoardId=243508",
  "ppi" => "/external/announcementsRSS.do?announcementBoardId=243511",
  "eo" => "/external/announcementsRSS.do?announcementBoardId=243514"
}

actual_info = ""
urls.each { |id,url|
  begin
    http = Net::HTTP.new('fenix.ist.utl.pt', '443')
    http.use_ssl = true
    http.start do |http|
      request = Net::HTTP::Get.new(url)
      response = http.request(request)
      response.value
      actual_info = response.body
    end

  rescue Net::HTTPExceptions
    next #do nothing if couldn't get feed, it'll in the near future
  end

  if info[id] != actual_info  
    info[id] = actual_info

    doc = REXML::Document.new(info[id])
    root = doc.root
    title = String.new(doc.elements["*/channel/item/title"].text)
    desc = String.new(doc.elements["*/channel/item/description"].text)
    desc = desc.gsub(/<[^>]*>/,'')

    begin
      http = Net::HTTP.new('twitter.com', '443')
      http.use_ssl = true
      http.start do |http|
        limit = 140 - (2 + 2 + 2 + title.length)
        request = Net::HTTP::Post.new('/statuses/update.xml')
        request.basic_auth 'username', 'password'
        request.set_form_data({"status"=>id.upcase+"::"+title+"::"+desc.slice(0,limit)})
        response = http.request(request)
        response.value
      end
    rescue Net::HTTPExceptions
      #The submission to twitter failed, forget it! (critical)
    end
  end
}

f = File.new("data.txt", "w")
Marshal.dump(info,f)
f.close

 

 The script is intended to be run by crontab, there you may specify the time interval in which you want the script to be run. The script itself stores the feeds info in a string which for itself is stored in a hashtable that contains all the feed strings indexed by an id that you must provide and be equal in both hash tables, the one for the info, and the one with the URL's of the feeds. In my script all the feeds were located under the same host, so the connection was always and opened with 'fenix.ist.utl.pt' (and SSL). If that is different with you, store the host in another hashtable indexed by the same id's. At last you may want (have) to change the items selected in the XML file returned by the call to be posted on the twitter post. In my example all the feeds started by:

<channel>
    <item>
        <tittle>
        <description>
        <...>
        <...>
    </item>
</channel>

So I select the title and split the description in a way to not fill more than 140 chars total. At last you will have to create a TwitterAccount and provide its username and password in the last connection that is done, the one to Twitter.

I hope this may be useful to you. The result of mine is at @istalert.




A week ago, I suddently got curious about a recent drop in my followers count on Twitter which, I didn't know about, had been because of a bot removal action. Anyway, I came to thought about how many of my contacts were following me back. Althought there are plenty of sites that tell you that, I could name none by the time (check Lessfriends.com or FriendOrFollow), so I thought it would be just faster to write my own thing to do it.

Here's the result, just feed username and password with yours and it should work.

Note: if you've over 100 followers the script might not work due to Twitter's API restriction of 100 requests per hour. If that is the case, just use the web alternatives, this is mostly educational.

 

require 'net/https'
require "rexml/document"

username = ""
password = ""
friendsxml = ""

friends = Array.new
friendlist = Array.new
nonlist = Array.new

http = Net::HTTP.new('twitter.com', 443)
http.use_ssl = true
http.start do |http|
    request = Net::HTTP::Get.new('/statuses/friends/' + username + '.xml')
    request.basic_auth username, password
    response = http.request(request)
    response.value
    friendsxml = response.body
end

doc = REXML::Document.new(friendsxml)
doc.elements.each("*/user/screen_name") {
  |element| friends << element.text
}

friends.each do |f|
  isfriend = ""
  http.start do |http|
      request = Net::HTTP::Get.new("/friendships/exists.xml?user_a=" + f + "&user_b="+ username)
      request.basic_auth username, password
      response = http.request(request)
      response.value
      isfriend = response.body
  end
 
  if isfriend == "<friends>true</friends>"
    friendlist << f
  else
    nonlist << f
  end
end


puts ":::::::Your true friends:::::::"
friendlist.each do |f|
  puts f
end
puts "Total: "
puts friendlist.size

puts "::::::::::Non friends::::::::::"
nonlist.each do |f|
  puts f
end
puts "Total: "
puts nonlist.size




Some months ago it was big news for OpenID. Yahoo was the first big player to announce the YahooID system as a valid OpenID provider, a crucial step that brought some long desired support from major players to the movement. Some weeks ago, Microsoft did the same with their Live accounts, and Google could only follow.

Awesome, right? Well, no. In fact, all that these companies are doing is marketing OpenID as one of those features that everyone claps at, but few stop to realize it means nothing to the movement.

Let's think. Although I already had an OpenID at myopenid.net, I now have my GoogleID has an OpenID, great. Where can I sign in with it? Surely at Flickr from Yahoo, which is an OpenID supporter, right? Actually, no. Well, perhaps on Live Maps this OpenID may be useful. Wrong again. So, what does it mean to me, the OpenID user, to have so many major companies endorsing the system? Zero.

Please, stop trying to turn every existing ID into an OpenID, what we want is not that. We end up having all our previous ID's being all valid OpenIDs, for usage on the same all small sites. Start giving some utility to the feature you're giving us!




I just wanted to note that I had several problems with the code from the post Developping for Ubiquity: Priberam's dictionary, so I changed the system a bit, mainly in the url used and now it's working and rocking, so I corrected the post.

Anyway, now you can install it from here

P.S.: In resume if you don't know what I'm talking about, this script searches for a definition of a portuguese word in the Priberam's dicitonary and shows the definition on-the-fly in preview.




 

barcamp logo

 

Last weekend I was for the second time in BarCamp Portugal organized by the Coimbra's WeBreakStuff. In 2007, being my first participation, I didn't thought I should review the event in this blog, though it was great for me. But this year I can compare the two editions and point out some things that went better/worse, so I'll use my word.


BarCamp Portugal was seeming to continue in its linear but surprising growth, having had no more than 50 people in 2006, 120 in 2007, and 190 in 2008. But when the time came I don't think the mark has been achieved. The number of people presenting themselves appeared to be exactly the same as last year, which is good, for the space is not that much. Probably there was people only attending one of the days.

But reviewing the event itself, I'll divide my analysis in two parts: the social and the talks.

 

barcamp post-it on the elevator


On the talks side I must say BarCamp PT starts to be an event based on choices. The number of presentations this year was huge so, as on Sunday of last year's event, there was to be concurrent talks in different rooms. I cannot avoid myself from thinking I missed a lot, and I don't like to have this kind of feeling when going to an event like this. A fair review on the talks side as a whole can only be made when the videos of the other presentations come out so that everyone can see what missed. Nevertheless, it will always left us with a bitter taste for not being there. This is inevitable, but I thought some of the time after a dinner on the department, which I thought would maintain the people at the event, could be used for talks.

 

socializing

On the social side, the event was great as always. Thanks to BarCamp I could actually meet people from my university I wouldn't possibly meet otherwise. And so many great advices they gave me.
Anyway, I missed Half Baked a lot. I don't think that kind of social games should be extinguished. It didn't have to be Half Baked, but anything like it would be great (I don't know if Werewolf was actually played). Only some presentations did something like that, for example, Scrum 101 by Ricardo Mestre (great, great job!) with the Ball Point Game and Pedro Custódio with the Paper Plane game.

Before I start reviewing the talks I was able to attend, I conclude BarCamp continues to pay off, the organization was great again and invested a lot (thanks for the notebook and stickers!) and this continues to be one of the most important events in Portugal.

So, talks:

- Scrum 101: what a surprising and interesting method for team and project working. Although it was long (matched 4 other presentations of the other room) and not always I was able to be focused, it made me wanting to know more about Agile Development and Scrum itself. I recommend everyone to watch the video of it when it's available (too bad the Ball Point Game will not be included).

- Mind the Gap: Pedro Custódio definitely knows how to make a presentation. This was about usability and I think it made the point clear that what's simple for us, may not be for other person, so usability is a great concern when designing a website, and innovation has to be careful.

- Design: I was already aware of the work of Patrícia Furtado, but not until the end of her presentation I recognized her. Some great tips and useful websites given.

- Fuck you money: Bruno Pedro talked about how to live for some time collecting money to be able to achieve a dream of ours in a state where we don't care about money and just pursue what we want, and how we can survive in a state like that.

There were 2 more talks which I attended but that didn't mean much to me so I won't review them. This was all I was able to attend, so I missed 2/3 more presentations.

Of course the spirit of BarCamp is in having no passive users, just active, but it makes me wonder what it would be like if all the attendees were talkers. It couldn't be good...



Next page