Truth about Scala

And so it came to pass that the daughters and sons of Maderakka made a statically typed, object-functional language. A language that was so complex that no programmer could possibly comprehend it. A type constructor of Towers of Babel.

As mere programmers try to learn and use the language, they pass through 7 stages; each with more and more putrid cake, left by Jambe-akka, who welcomes those who reach the last stage. Follow the terrifying journey with us and be sore afraid!

1: Bait

The project includes three Scala classes; compiler runs swiftly, IDE obediently suggests syntactically correct completions. The programmers embrace the concept of polyglot application tous ensemble.

The number of Maven dependencies: 5; build time 12 s.

2: The possibilities open

Programmers rejoice and start adding more and more classes, even objects and traits. Wise old programmer-folk warn of dangers unseen, but are ignored. The functionality in the codebase grows rapidly with every push, even tests–nay!–specifications are written.

The number of Maven dependencies: 12; build time: 22 s.

3: The phantom menace

IDEs become self-aware and decide to tease the users by showing errors in perfectly valid code. Junior programmers start looking over their shoulders, as if seeing some dark shadow lurking around the build servers. uptime shows negative numbers. IntelliJ IDEA users download the nightly build of the Scala plugin to a separate installation; Eclipse users often invoke the Clean workspace spell. (Some report the spell is more potent when holding down Ctrl+Alt+Shift+Esc+F15.)

The number of Maven dependencies: 22, 5 excludes; build time: 43 s.

4: The implicit monster

Some one|thing has added an implicit conversion from Any to TwitterUtility. The junior programmers immediately add "@cakesolutions".tweet("Interested in losing weight?") to the codebase. Attempts to remove the implicit conversion end with IntelliJ IDEA showing the beachball of death; Eclipse crashes with SIG_SEGV. A Perl consultant is drafted in to fix the problem with a regular expression.

The number of Maven dependencies: 35, 10 excludes; build time: 65 s; and something has poo’d in two versions of the slf4j-api.jar.

5: Bakery of doom

Everyone in the company has come to understand that excess of cake can kill. Like smoking. Or drinking. Which is what most programmers have already taken to to calm their nerves, anyway. What started as a simple experiment in constructing loosely-coupled functional dependencies has ended up in a ball of intermingled traits. Some clever sod has also made the final thing a Spring bean. A @Transactional one, too!

The number of Maven dependencies: 60; 18 excludes; build time: 90 s; somehow, the project now also uses Ivy and downloads the Internet twice to build.

6: The type babel

The team decides to invoke the demons of categories to solve the most complex business requirements before serializing the result to XML and sending it to a network of actors. (Ever tried to rescue a drowning man by throwing him an anvil?) Any errors are now distributed throughout the system and there is only one programmer in the company who understands

trait C[->[_, _], ->>[_, _], F[_]] { 
  def fmap[A, B](f: A -> B): F[A] ->> F[B] 

The programmer who could implement the trait has committed Haskell-kiri. Scrum masters are seriously considering a ritual Kanban sacrifice.

The number of Maven dependencies: unknown (suspect uncountable); the project builds only with mvn clean -Drm-rf=/; mvn package -Dmaven.test.skip=true -Dmaven.please=just-work -Dfile.encoding=MacRoman -Dsbt-version=0.11.1. Also, Maven attempts to use the OS X build of Open JDK 1.7 from time to time.

7. Nothing

Putrefaction: bugs turn into features, threads into sockets, UNIX processes send each other WM_QUERYENDSESSION messages. Managers gladly take calls from recruiters; programmers add “commercial Scala experience” to their CVs.

Happy April Fools’ Day!

This entry was posted in Jan's Blog and tagged , , , , , . Bookmark the permalink.

20 Responses to Truth about Scala

  1. jl says:

    You have 7 steps, two number 4s.

  2. Jan Machacek says:

    I do indeed. Let’s update that quickly before anyone else notices (I can then also pretend that it was there to check that everyone was reading it properly :))


  3. Daniel Tiecher says:

    You sir just made my day, thanks!

  4. Donny says:

    This is hands-down the most hilarious thing I’ve read in quite some time .. ! But I don’t see what is the “fool” part about it, though .. it is sad, but TRUE !!

    muchos kudos, Jan !!

  5. Bruce Fancher says:


  6. Gueno says:

    I don’t know if you did it in purpose to check if someone was properly reading your post (see your comment ;) ) but today’s date is not “March 1, 2012 ” (date of this post)
    Maybe you just wrote it a month ago and waited today to publish it..?

  7. Andrew Wright says:

    Mmm…cake. Hilarious – classic!

  8. Justin Forder says:

    Good post – but the date at the top shouldn’t be March 1st!

  9. TechNeilogy says:

    I admit, you got me!

  10. Pingback: The truth about Scala « Tyson Zinn « Tyson Zinn

  11. Walter Chang says:

    i call the date on top of the article cheating.

  12. Jan Machacek says:

    I’ve written it about a week ago and then tried to get WordPress to publish it by changing the date to 31st March. Then it seems that I only pressed the 1, which changed the date to the 1st March. D’oh!

  13. Joe says:

    Thanks for opening my eyes. I was about to start learning Scala but have now decided that I should rather learn Intercal.

  14. Jan Machacek says:

    I’d go for LOLCODE ( elegant, expressive & all in caps, just like good old COBOL :)

  15. Pingback: Truth about Scala « that dismal science

  16. Vesa Marttila says:


    Are the “Keep Calm and Use Clojure” t-shirts already shipping?

  17. Jan Machacek says:

    No, but it is a good idea :)

  18. Vasquinho says:

    I don’t understand the april fools part.

  19. Guillaume Simard says:

    This is so true it hurts !

  20. Pingback: i&t

Leave a Reply