Why overlays are a good thing
Posted by elbryan
Few days ago I read a blog post regarding overlays written by Diego Elio Pettenò, an IRC fella and, despite I usually agree with him, this time I think he’s damn wrong.
I think overlays are a real good opportunity where to learn how to write (almost) proper ebuild and to learn how versioning, bumping and maintaining packages should be accomplished. Proxy-maintain is option, indeed, but not in the immediate time for sure.
Before asking a developer for proxy-maintaining something, you should be able to write good ebuilds that won’t break things up. A developer is not a mentor and he’s not supposed to be your personal guide.
Diego says that the main reason he dislikes overlays is the fact that, being proxy-maintainer, an huge amount of people will get your ebuild in a timely matter and, the developer, can fix your ebuild before reaching the tree.
I don’t think so. The “timely matter” opinion is barely sharable since the fact that a package is not in the tree means that very few people have interest in it. This means that time doesn’t matter at all.
The second part where a “developer can intercept mistakes before committing them to the tree” isn’t correct if compared to what do happen in certain overlays (at least).
Sunrise, which is my favorite overlay (where I commited tons of ebuilds myself), has a very good system to minimize the amount of poor ebuilds in the overlay: there are three-four developers that took the commitment of being there for replying questions and check & fix novices’ ebuilds. Furthermore, in the IRC-chan, there are five-six dozens of users willing to collaborate and that can help you in writing good ebuilds.
Before committing an ebuild you have to provide a good version of it and wait for a gentoo developer green light. Once you had it, you can commit it in the “non-reviewed” branch.
After few days (a week at most), a developer will read all the ebuilds that have been added in the “non-reviewed” branch, re-review those and, finally, they are pushed in the “reviewed” branch, that’s the public one.
It’s a pretty good system to me.
The main reason I like overlays is the level of engagement. You can write few ebuilds and other people will carry on with those. There’s no single-maintainer but everyone maintains everyone’s ebuilds so you can live your life without being reviled.
I don’t think every overlay is good and I agree with Diego when he says that, usually, overlays “mix should-be-working packages with don’t-even-try” and that’s bad, indeed.
But, for what concerns my humble opinion, I still prefer the approach where I don’t have to bother people asking for a role that I might not fulfill.
Posted in Gentoo | no comments |
MapKitDynRoutes: Handle iOS4 routes dynamically
Posted by elbryan
Since iPhone iOS4 has released I’ve been working on the new features brought by the new version of the OS.
One of the most useful thing (to me) introduced by iOS4 is the capability of drawing routes directly on the map using public APIs.
How that works is fairly simple: given two or more coordinates it generates a Polyline and put it on the map. This line automagically rescales/resizes in order to maintain the correct aspect even when zooming/panning.
Unfortunately, this new object doesn’t allow developers to update the line with new points. The only thing you can do is to destroy the line, remove the overlay from the map, recreate a line with all previous points plus the new one, generate the respective line associated with the map and add it (as overlay) on the map itself. This is quite a waste of CPU cycles.
I’ve written a set of two classes that tries to handle the Polyline growth automatically.
The project is called MapKitDynRoutes and the libraries are FFMapRoute and FFMapRoutes.
MapKitDynRoutes is shipped with a Demo project that shows how to use the library. It contains, furthermore, a small object FFLocationManager that simulates the GPS behaviour by injecting coordinates to the application using a timer and reading those from a CSV file.
MapKitDynRoutes is released under MIT license.
Posted in iPhone, Development | no comments |
How hard is collecting information about products?
Posted by elbryan
What’s the first thing you do when you are willing to buy something? Easy: collect information.
There are two ways to gather valuable information: looking for reviews and user comments on the Internet or asking to your folks and to few store employees about suggestions and opinions about the product you’re willing to buy.
Internet is a really handful place where you can find an huge amount of information, indeed, but this “huge amount” of data leads to a serious problem: how to understand whether a review/comment is valuable or not?
One thing you might want to do is to start looking for reviews. Reviews are usually written by technicians or experts that know the entire scenario surrounding the analyzed item. Since we don’t trust the first thing we read, we want more information and more reviews. We read about pros and cons but we are not satisfied since these “technical speeches” are quite good but too long and too boring for lazy people like us.
At the end of this search we have located the product, or the products, that fulfill our needs.
Now it’s time to look for user comments. People like us whom already bought our items and spent few minutes reviewing it for us.
What are the odds that a satisfied user opens a thread on a forum to say “hey I bought this item and I’m really satisfied so I strongly suggest you to buy it! Thank you moderators, you can close this thread”?
On the other hand, what are the odds that an unsatisfied user opens a thread complaining about something not working/working bad about it’s brand new product?
So we are expecting that the most of the comments we are going to read will be bad or unhappy and so it happens.
The item model we were so enthusiast to buy starts becoming ugly, not perfect at all. Then we start to becoming stressed and depressed.
But what to say about user comments? What we think we are talking to? Three kind of folks: stupid, normal, experts. But there’s no way to detect which category they fall into. So we have to trust their opinion basing to the fact they’re using the Internet or the way they write?
I think reviews are more reliable from that point of view, aren’t them?
What’s worst than that? What really really bad thing may happen when we are reading few users complaining about our “favorite” product? Easy answer again: an user that comments that he bought a similar product, maybe a little bit more powerful, more expensive than that and it didn’t give him any problem at all.
So this restarts over and over and we are back to the start googling like crazy monkeys.
Is there a final solution? I don’t think so.
I want to close this post telling you what happened to me few days ago.
I’m (still) thinking about buying a Nikon D5000 DSLR camera and so I started comparing prices and features of D3000 with a bigger lens (a 18-105 vr). I read tons of reviews, I watched almost 5 videos of people using them, technicians reviewing them and I made myself an idea about what to buy.
I asked few people suggestions about that.
Then I went to a forum asking people for suggestions: they completely ruined my thoughts. They complained about “reviewing sites” being payed and sponsored by a company, being “fanboys” for a certain company and so on.
Then I went to a store and the employee told me to buy the D5000 since it’s better than the D3000 and I shouldn’t even think about the D3000 because the D5000 really overtakes it.
What did I do? Nothing.
I’m still wondering about if I really need a camera.
Posted in Lifestyle | 3 comments |
Where should I put my own code?
Posted by elbryan
This is a question that you probably already asked yourself when you start developing something and you want to be supported by an SCM tool.
There are tons of solutions in the Internet and most of them are great for the most of the purposes a developer (or a team) might have.
Websites like, just to name few of those, github , repo or cz , Google code or Sourceforge are great if you are planning to develop something open-source related or just to publish some code you don’t mind others to read, copy or fork.
On the other side, there are few borderline cases that require more attention.
One of those cases happened to me when I started developing my Bachelor’s Thesis. I didn’t want an open-source, public browseable SCM because the purpose of my thesis was (still is) unknown so I didn’t know if the code should have stayed closed, private because my University had planned to acquire it once the development would have been completed.
I remembered that, during few exams and for a small indie project, I used Assembla and, as a matter of fact, I found it really great for my purposes. When I ran on their site I (sadly) discovered that there was no more a free solution so I started googling for something new.
I hit Unfuddle and I decided giving it a try. Among the plans they offer, I decided that the “free” solution was the one I was looking for. One project, 200mb storage area, infinite repositories, tickets, tracking bug and milestones was what I really need. And the code stays closed. Furthermore, the two people limit was enough for me (me and my supervisor).
My opinion? Really, really positive. I really like the way they handle projects and repositories, mail advertising and all the kind of stuff you are expected to see in a well done software development environment. Not to mention powerful commits: those really boost your producitivity up.
Something even funny happened. If you remember I’m developing an iPhone application and, about two weeks ago or so, they published Unfuddle official application on the App Store. A very convenient solution for me. In fact, I’m used to debug, analyse and test my application while I’m moving so it’s really useful to add a bug/feature report on the way while I’m testing it.
Summarizing it up: I really appreciated Unfuddle for the 4 months I’ve been using it and it will be my first choice if, in the future, I need something similar. In the mean time I advice you to take a look at it if you’re willing to start a new project or thinking about moving your existing code somewhere else.
Posted in iPhone, Development | no comments |
Real Life vs Game System Life
Posted by elbryan
I’m still quite scared. It’s not that kind of fear that commonly you feel when your life is in danger but sounds almost kinda like that.
Today I enjoyed a talk by Jesse Schell about Design outside the box
It’s a brief presentation (it takes less than 30 minutes) on how the life changed around us in the last years.
He analysis how Facebook impacted our way to live-the-game and how huge is the virtual money system that, weaselly, pushes people to think “ehy it’s just 5 bucks” and, then, buy bullshit. That’s it: bullshit.
The presentation begins analyzing the present and then the future. The image of the future is the scary part.
Obviously, this is not how the future is going to be. It’s just a projection. A mind-blow projection.
I’m not going to spoiler the video since I really think it’s enlightening and it deserves to be watched entirely.
Posted in Lifestyle | no comments |
Mutt and Google Contacts
Posted by elbryan
I've recently begun using Mutt to read my mail.
One thing I'm used to do is to keep all my contacts synchronized online with Google Contacts.
After a (small) research, I've run into goobook , a small python program that relies on gdata to perform queries onto Google Contact service.
Posted in Linux, Apps | no comments |
XEN: Improve disk performance on domU
Posted by elbryan
A brief post about a possible solution for slow I/O throughput of guest machines.
Posted in Xen, Kernel, Linux | no comments |
Samba, CUPS and Windows 32/64 bit drivers
Posted by elbryan
A nice discovery of a friend of mine, Walter "DaK_TaLeS", that found a way to automagically install shared printers on Windows 64 bit using CUPS and Samba running on Gentoo/Linux.
Happy printing!
Posted in Linux | 7 comments |
iPhone OS: iPhone 3 Development
Posted by elbryan
Today just arrived the book I ordered from Amazon
It’s time to read some official resource and stop doing code&fix things.
For the fella interested in the book I bought, it’s named Beginning iPhone 3 Development: Exploring the iPhone SDK and it’s written by Jeff LaMarche and David Mark
Posted in Apple, iPhone | 2 comments |
Gentoo Tips & Tricks
Posted by elbryan
Here’s a list of tips and tricks that I learned / discovered during these years.
eix
eix is a very simple, clean and powerful tool that allows you to perform several tasks with absolute simplicity.
- eix
: it will search inside your package names. Can be parametrized in order to search in description, use regexp and so on. It’s faster than emerge and I largely prefer eix to emerge -s.
- eix-sync : Instead of using emerge —sync you can use eix-sync to synchronize portage tree and then have a brief about what changed between your previous local portage snapshot and the just fetched one. Handful.
- eix-test-obsolete: This tool is really unknown to many people. It’s very useful when you use mixed stable and testing packages on your system. Simply it checks your package.{keywords, use, mask, unmask} files/directories in order to tell you if you have something you don’t need written in there. Maybe you unmask a package, then you remove it and in package.keywords/unmask you leave an useless trace. eix-test-obsolete will tell you that.
- eix-remote: Issued with the parameter update is one of the most useful tool I’ve ever had the pleasure to see. A little prologue before. As you might know, there are a lot of “other portage tree” (or rather, overlays) that contains tons of other ebuilds that don’t fit into portage official tree. One of the most annoying thing could happen to you, is when you want to search if another ebuild has been already written or you’re force to write one yourself. The eix-remote update command will be your very best friend. It fetches a “snapshot” of the indexes of almost all the overlays in the world, and allows you to search for an ebuild just issuing eix
. In order to get rid of the “remote” database, just run eix-update and your portage cache will be restored.
package.*
You should know that /etc/portage/package.{keywords,unmask,use} can be files or directories. It’s very useful having those as directories if you largely use mixed stable/testing packages.
autounmask
It’s a clean, non-perfect tool that helps you unmasking packages dependancies. How many times did you echoed a package name inside package.keywords file discovering that the package needed a dep that needed an unmasked dep that needed an unmask dep .. and so on? This tools will simplify your lives because it will add automagically the required dependancies to package.keywords. It’s really nice since it auto-recognize whether you have package.* stuff as files and directories. For instance, if your package.keywords is a directory, it will create a file named ‘autounmask-package’ containing all the required unmasked dependancies.
lafilefixer
dev-util/lafilefixer is a tool that performs a scan on your system trying to fix up broken .la files. It somehow useful when you have redundant errors regarding those files.
revdep-rebuild
app-portage/gentoolkit contains a lot of useful tools (like eclean, equery, euse) and, of course, revdep-rebuild. It’s a great tool that saved my own ass so many times. Sometimes packages breaks. Is in their nature! So, how can I fix those packages? revdep-rebuild is the one you were looking for. It will check for every dependancies (straight and reversed) discovering if some package isn’t in good health. If that happens, it will automagically re-emerge it.
Posted in Gentoo | no comments |