Best introduction to ‘continuations’. Ever. Do not even try to understand this one.
Summarizing:

  • Continuations are like bookmarks: "hey Joe, come here and start again from this point". The context in which you invoke the code after the continuation point is the context you are currently, not the context you had when you defined the continuation. It’s easy to see it with this code in Ruby:

    arr = [ "Freddie", "Herbie", "Ron", "Max", "Ringo" ]
    hello_var = "hello1"
    puts(hello_var)
    callcc{|$cc|}
    message = arr.shift
    hello_var = "hello2"
    puts(message)
    puts(hello_var)
    $cc.call unless message =~ /Max/

    The output is:

    hello1
    Freddie
    hello2
    Herbie
    hello2
    Ron
    hello2
    Max
    hello2
    
  • Closures give you the lexical context you had when you defined the closure, including values of variables.

Lately I’ve been playing with Korundum. It’s nice, it works very well and combined with KDevelop it’s a very powerful RAD.

The big problem is the lack of documentation: I’ve read Caleb Tennis’ Rapid GUI development with QtRuby and it’s a wonderful introduction, but I miss a book going deeper into QtRuby/Korundum. This is not to say it’s worthless, quite the contrary: it’s the best $8.5 I’ve spent in months.

However, the “enterprise” learning is coming from reading others’ source code (I’ve been googling for qtruby, korundum; searching Rubyforge, etc) and from Richard Dale (via #qtruby in freenode). Once again, thank you so much Richard for such a good development environment!

Bill Swanson is CEO of Raytheon and well known as one of the most important CEOs in the world. But he is better known for this famous “Bill Swanson’s 33 Unwritten Rules of Managament”:

  1. Learn to say, “I don’t know.” If used when appropriate, it will be used often.
  2. It is easier to get into something than to get out of it.
  3. If you are not criticized, you may not be doing much
  4. Look for what is missing. Many know how to improve what’s there; few can see what isn’t there.
  5. Presentation rule: When something appears on a slide presentation, assume the world knows about it and deal with it accordingly.
  6. Work for a boss to whom you can tell it like it is. Remember, you can’t pick your family, but you can pick your boss.
  7. Constantly review developments to make sure that the actual benefits are what they were supposed to be. Avoid Newton’s Law.
  8. However menial and trivial your early assignments may appear, give them your best effort
  9. Persistence or tenacity is the disposition to persevere in spite of difficulties, discouragement or indifference. Don’t be known as a good starter but a poor finisher!
  10. In doing your project, don’t wait for others; go after them and make sure it gets done.
  11. Confirm the instructions you give others, and their commitments, in writing. Don’t assume it will get done.
  12. Don’t be timid: Speak up, express yourself and promote your ideas.
  13. Practice shows that those who speak the most knowingly and confidently often end up with the assignment to get the job done.
  14. Strive for brevity and clarity in oral and written reports.
  15. Be extremely careful in the accuracy of your statements.
  16. Don’t overlook the fact that you are working for a boss. Keep him or her informed. Whatever the boss wants, within the bounds of integrity, takes top priority.
  17. Promises, schedules and estimates are important instruments in a well-run business. You must make promises – don’t lean on the often-used phrase: “I can’t estimate it because it depends on many uncertain factors.”
  18. Never direct a complaint to the top; a serious offense is to “cc” a person’s boss on a copy of a complaint before the person has a chance to respond to the complaint.
  19. When interacting with people outside the company, remember that you are always representing the company. Be especially careful of your commitments.
  20. Cultivate the habit of boiling matters down to the simplest terms: the proverbial “elevator speech” is the best way.
  21. Don’t get excited in engineering emergencies: Keep your feet on the ground.
  22. Cultivate the habit of making quick, clean-cut decisions.
  23. When making decisions, the “pros” are much easier to deal with than the “cons.” Your boss wants to see both.
  24. Don’t ever lose your sense of humor.
  25. Have fun at what you do. It will be reflected in you work. No one likes a grump except another grump!
  26. Treat the name of you company as if it were your own.
  27. Beg for the bad news.
  28. You remember 1/3 of what you read, 1/2 of what people tell you, but 100% of what you feel.
  29. You can’t polish a sneaker.
  30. When facing issues or problems that are becoming drawn-out, “short them to the ground.”
  31. When faced with decisions, try to look at them as if you were one level up in the organization. Your perspective will change quickly.
  32. A person who is nice to you but rude to the waiter, or to others, is not a nice person. (This rule never fails).
  33. Never be afraid to try something new. Remember, an amateur built an ark that survived a flood while a large group of professionals built the Titanic!

Postscript: The qualities of leadership boil down to confidence, dedication, integrity and love.

A recurring problem in most rich societies is that students in general do not take enough math – despite high availability of relatively well-paid jobs in fields that demand math, such as engineering, statistics, teaching and technology. Students see math as hard, boring and irrelevant, and do not respond (at least not sufficiently) to motivational factors such as easier admission to higher education or interesting and important work.

[Continue reading 12 reasons to choose lots of Maths in high-school]

Well, that’s not the name of the band of Jonathan Coulton but I think it should be.

What can you say after reading the names of the songs in his albums: Mandelbrot Set, That Spells DNA, etc. You can even download some of his songs for free

Don’t miss Mandelbrot Set, it’s awesome!:

Pathological monsters! cried the terrified mathematician
Every one of them is a splinter in my eye
I hate the Peano Space and the Koch Curve
I fear the Cantor Ternary Set
And the Sierpinski Gasket makes me want to cry
And a million miles away a butterfly flapped its wings
On a cold November day a man named Benoit Mandelbrot was born

His disdain for pure mathematics and his unique geometrical insights
Left him well equipped to face those demons down
He saw that infinite complexity could be described by simple rules
He used his giant brain to turn the game around
And he looked below the storm and saw a vision in his head
A bulbous pointy form
He picked his pencil up and he wrote his secret down

Take a point called Z in the complex plane
Let Z1 be Z squared plus C
And Z2 is Z1 squared plus C
And Z3 is Z2 squared plus C and so on
If the series of Z’s should always stay
Close to Z and never trend away
That point is in the Mandelbrot Set

Mandelbrot Set you’re a Rorschach Test on fire
You’re a day-glo pterodactyl
You’re a heart-shaped box of springs and wire
You’re one badass fucking fractal
And you’re just in time to save the day
Sweeping all our fears away
You can change the world in a tiny way

Mandelbrot’s in heaven, at least he will be when he’s dead
Right now he’s still alive and teaching math at Yale
He gave us order out of chaos, he gave us hope where there was none
And his geometry succeeds where others fail
If you ever lose your way, a butterfly will flap its wings
From a million miles away, a little miracle will come to take you home

Just take a point called Z in the complex plane
Let Z1 be Z squared plus C
And Z2 is Z1 squared plus C
And Z3 is Z2 squared plus C and so on
If the series of Z’s should always stay
Close to Z and never trend away
That point is in the Mandelbrot Set
Mandelbrot Set you’re a Rorschach Test on fire
You’re a day-glo pterodactyl
You’re a heart-shaped box of springs and wire
You’re one badass fucking fractal
And you’re just in time to save the day
Sweeping all our fears away
You can change the world in a tiny way
And you’re just in time to save the day
Sweeping all our fears away
You can change the world in a tiny way
Go on change the world in a tiny way
Come on change the world in a tiny way

I’m looking for an antivirus for a medium-size client (60 Windows XP workstations, 4 Windows servers, 1 Linux server) and hell if I know what to do.

Over the past three years I’ve worked with Panda (both the old antivirus and the new BusinesSecure), Kasperksy, Symantec, Trend Micro and McAfee antiviruses. Which is the one I liked the most? Absolutely no one. Everyone of them fails here or there: bad support, bad antivirus, bad or no antispyware, bad or no antispam, bad or no Active Directory integration, etc.

What I want to find is an integrated suite with at least these features:

  • Antivirus (of course!)
  • Antispyware
  • Antispam for the client workstation. Server antispam is not important for us, really. We prefer to run CRM114, SpamAssassin or alike.
  • Firewall
  • Backup, a-la Genie Backup, Cobian Backup, etc
  • Automated updates for antivirus, antispyware and antispam modules
  • Automated deployment of Windows, Microsoft Office, Mozilla Firefox and Mozilla Thunderbird updates (think of WSUS on steroids)
  • Full integration with Active Directory, including cluster mode
  • Certified for SAN, NAS and high-availability clusters

I guess that’s exactly what Symantec is going to do (at least, it makes a lot of sense after they bought Veritas), but I expect at least six to twelve months until they have such a product 🙁

The antivirus business is currently a “choose your poison” business. Lame.