Updates from May, 2009 Toggle Comment Threads | Keyboard Shortcuts
-
Nuno Morgadinho
-
Nuno Morgadinho
Life Timeline
Using AOL’s CircaVie, which has recently shut down, you could make a timeline of your partners life from birth until now including all the “love-dovey” stuff you did together in between.
Capzles offers a similar service.

Timeline
Now something that would do this automatically from Flickr would be awesome. And it could use geotagging as well.
-
Nuno Morgadinho
Nginx and Memcached
“If web architectures, performance, or scalability are topics you would like to keep on top of (who doesn’t!), then chances are, you’ve heard of Nginx (”engine x”). Originally developed by Igor Sysoev for rambler.ru (second largest Russian web-site), it is a high-performance HTTP server / reverse proxy known for its stability, performance, and ease of use. The great track record, a lot of great modules, and an active development community have rightfully earned it a steady uptick of users, and most recently, a notable mention in the Netcraft report.”
http://wiki.codemongers.com/Main
“Memcached, the darling of every web-developer, is capable of turning almost any application into a speed-demon. Benchmarking one of my own Rails applications resulted in ~850 req/s on commodity, non-optimized hardware – more than enough in the case of this application. However, what if we took Mongrel out of the equation? Nginx, by default, comes prepackaged with the Memcached module, which allows us to bypass the Mongrel servers and talk to Memcached directly. Same hardware, and a quick test later: ~3,550 req/s, or almost a 400% improvement! Not bad for a five minute tweak!”
“The only snag in our scheme for easy performance gains comes with the fact that more often than not, our application servers contain additional caching policies (read invalidations / authentication), and MIME type logic. The former, as recently documented by Tobias Lütke and Geoffrey Grosenbach, if properly thought through can be solved with some clever URL rewriting policies and automatic TTL timeouts. When implemented correctly, we could simply set the memcached key to be the full request URL, allowing us to completely bypass our app. servers.”
from http://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/
-
Nuno Morgadinho
Computer Programming Learning Tips
* **Use your friends**. When asked “what operating system should I use, Windows, Unix, or Mac?”, my answer is usually: “use whatever your friends use.”
* **Keep it simple**. Programming languages such as C++ and Java are designed for professional development. You don’t need that complication.
* **Play**. Which way would you rather learn to play the piano: the normal, interactive way, in which you hear each note as soon as you hit a key, or “batch” mode, in which you only hear the notes after you finish a whole song? Clearly, interactive mode makes learning easier for the piano, and also for programming. Insist on a language with an interactive mode and use it.
* **the most effective learning requires a well-defined task** with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.
* **Work on projects after other programmers**. Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you.
* **Get interested in programming**, and do some because it is fun. Make sure that it keeps being enough fun so that you will be willing to put in ten years.
* **Talk to other programmers; read other programs**. This is more important than any book or training course.
* **Program. The best kind of learning is learning by doing.** To put it more technically, “the maximal level of performance for individuals in a given domain is not attained automatically as a function of extended experience, but the level of performance can be increased even by highly experienced individuals as a result of deliberate efforts to improve.” (p. 366) and “the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.” (p. 20-21) The book Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life is an interesting reference for this viewpoint.
* **Systematically identify top designers** as early as possible.
* ** Assign a career mentor** to be responsible for the development of the prospect and carefully keep a career file.
* **Provide opportunities for growing designers to interact and stimulate each other.** -
Nuno Morgadinho
Essential Problems After Which You Will Know Ruby
* on the console, Fibonacci problem
* on the console, An echo TCP socket server and client
* on the console, to-do list program
* on the web with rails, to-do list program
* on the web with rails, contacts/address book manager app, a person may have more than one contact
* on the web with rails, finances/accounting manager app
* graphic lib, tic-tac-toe game
* graphic lib, minesweeper game
* on the console, simple example DRb service
* on the console, simple example DRb service over SSL, create a ruby-gem for it
* solve 3 tickets on http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/ticketsRules: you’re not allowed to look at implementations of the same problem you are trying to solve.
