Kartones Blog

Be the change you wanna see in this world

Recommended Articles - 2016/11/19

I came few days ago from vacations and had some written, plus others I've read recently and found worthwile of sharing. Very diverse mix :)

  • 10 Modern software over-engineering mistakes: Good examples and advices

  • Taking PHP Seriously: Good points of why PHP is not loved by a large segment of developers but also why it is not as bad as many say. Actually, while I despise its syntax I agree that using object orientation you can do things really well.

  • Cheating at poker James Bond Style: Frigthening talk about physical poker cheating devices. Amazing how close to spy movies we are...

  • Why We're Living in the Age of Fear: Food for tought about the increasing culture of fear, mostly regarding America, but also happening at other countries like UK or Spain. Interesting contents inside, like the "law of group polarization", "illusory correlation", or differentiating fear from anxiety.

  • Lessons Learned from Scaling Uber to 2000 Engineers, 1000 Services and 8000 Git repositories: Lots of good microservices and high scalability hints and tips and "I wish I knew" examples.

  • Five Elements of Effective Thinking: 1. Understand deeply, 2. Make mistakes, 3. Raise questions. 4. Follow the flow of ideas, 5. Change. For details, read the articles.

  • Docker in Production: A History of Failure: Good list of anti-patterns and general advices of what not to do using Docker. We're pretty happy at work using it but we've avoided most of this problems I think; For example, instead of a dockerized database (pretty dangerous), we use a cloud one (Amazon RDS, DynamoDB, etc.) and forget about problems.

  • Running Docker in production for 6 months: And as a counterpoint to last article, one about some good advices of having docker in production.

  • The Secret Algorithm Behind Learning: Explains a technique (the Feynman Technique) to learn better, in three steps:

    • Step 1: Teach it to a child (force yourself to understand the concept at a deeper level and simplify relationships and connections between ideas)
    • Step 2: Review (discover the edge of your knowledge and improve)
    • Step 3: Organize and Simplify (build a simple story with the notes and concepts you've gathered)
  • Practical advice for analysis of large, complex data sets: From Google, just the list of subsections is already great (idea comes from this HighScalability post:

    • Look at your distributions
    • Consider the outliers
    • Report noise/confidence
    • Look at examples
    • Slice your data
    • Consider practical significance
    • Check for consistency over time
    • Separate Validation, Description, and Evaluation
    • Confirm expt/data collection setup
    • Check vital signs
    • Standard first, custom second
    • Measure twice, or more
    • Check for reproducibility
    • Check for consistency with past measurements
    • Make hypotheses and look for evidence
    • Exploratory analysis benefits from end to end iteration
    • Data analysis starts with questions, not data or a technique
    • Acknowledge and count your filtering
    • Ratios should have clear numerator and denominators
    • Educate your consumers
    • Be both skeptic and champion
    • Share with peers first, external consumers second
    • Expect and accept ignorance and mistakes
  • Choosing Ember over React in 2016: A sentence of an advantage of Ember.js (more mature and stable) sums up pretty much my thinking about the dangers of always going for the latest: "surviving the framework hype cycle". React is great but so young it changes too much and lacks some pieces (or has them but they add additional complexity to a system). Anyway an interesting read to see why is good to "think before you act".

  • 10 characteristics of an excellent software developer: I like them:

    • Passionate
    • Open-minded
    • Data-driven
    • Being knowledgeable about customers and business
    • Being knowledgeable about engineering processes and good practices
    • Not making it personal (egoless but open discussions)
    • Honest (admit mistakes)
    • Personable (gets along well with teammates)
    • Creating shared success (team player)
    • Creative

Book Review: Making games with Phaser: Color Zap

Back from holidays, and with some different readings done as I left my Kindle at home but had the tablet. I wanted to touch Phaser.js since I saw some really nice game jam entries and I want my "game tests" to be online if possible (else I'd probably opt for PyGame to practice my Python skills), so I took the opportunity to grab a Phaser ebook.


Making games with Phaser: Color Zap

Title: Making games with Phaser: Color Zap

Author: William Clarkson

This book is 100% practical, oriented to building a single videogame. So almost no introductions, no filling with full descriptions of methods available, etc. This is not a reference book, so you will only learn about the concepts and features required to build a certain game. It is like an extended "how to make a game with Phaser.js" tutorial. You will end with a fully working color-based reflexes game that works in desktop and mobile.

I liked the approach and the focus on just building what's needed, as is precisely what I want, to grasp the basics of this game development framework and then dig deeper by myself. Steps are small and progress correctly, explanations are nice and code is readable. The game built is not too complex but interesting enough to learn basics about sprite handling, inputs, sound, scenes, and a tiny intro to the physics engine.

If I have something "bad" to remark, it might be the too frequent full source code listings, many times after some simple additions. It gets a bit boring and breaks the reading flow to stop and skip a few pages because we added logic to three small functions and we get again the full javascript source code because of them. Either on critical additions, or at the end of each chapter would have probably been better. There is also one or two not-so-good practices, like encouraging to do User-Agent based browser detection, even when Phaser includes a built-in detection (and we're told about it).

We're talking about a small ebook (around 120 pages with small font) with a smal price tag, so considering that I think it is a worthwile read. You might find other free online full game tutorials, but I didn't spend time checking if indeed there are, and this is a quick dive well explained and concise.

Ten years since he passed away

Today, 14th of October 2016, marks ten years since my father, Diego Muñoz, passed away because of cancer. I already wrote a bit about how he taught me to try to enjoy life, so this post is more of a small tribute to him.

My relation with him was sometimes complicated, as he was a bit on the extremes: When was happy, was the best dad one could hope to have, but when was angry, shouting and yelling was not as uncommon as you'd like. On the other side, I didn't wanted to study university at first (I just wanted to "work coding and not waste time"), I had some high school years with really bad grades, and in general I was rebellious. Plus I wanted to learn development at an early age so I got some academy courses on Pascal and C and a few books while still young (around 13-14). After a while, every time a dammed Windows 98, or ME, or XP crashed, every time the dial-up or DSL connection went down, it would be my fault "because that's what I studied and I should be able to fix and avoid it". You can imagine how angry I'd get because I was learning to code, not to fix Windows nor Outlook. I ended up accepting to go to the university, so they paid my first year, and then the arguments would be like "I paid your studies so you must do this or that". The first summer afterwards I hunted for a job, and spend my first salaries paying back the first year, saving for the second year, and buying him a new computer. Things got better but he never really understood what I was doing, except for some Visual Basic applications I built for him to ease some tasks, and then he didn't understood why I couldn't fix "the other applications" if I was builing some...

But other times he was awesome. I happily remember when I was younger and every friday he would have some new AMIGA game floppy disks and we would boot it up and play some time either together or in turns. Sometimes when I wanted something he would just grab me and we'd go buy it if I had been good. Or when I had a fight at school or didn't wanted to pray (I'm secular) and the teachers called home, he'd always defend me before asking what happened (I wasn't really bad but I had more than one "issue"). He taught me to fight for what I thought was right, to not shut up, to aim to fulfill my wishes... When happy, he would spread the happiness with everybody around him.

And he was dammed good at his job. He would watch a movie and compare it with dozens of others, he wrote great reviews, he knew everyone and everything about films. And was sometimes radical, like a time Steven Seagal tried to sue him and the newspaper after he wrote a bad review of one of his movies (arguing that "promoting peace" while breaking people's necks and elbows and exploding an oil tanker wasn't very logical). He was always invited to every party, news event, to the Oscars, staying at luxury hotels all expenses paid...

That's why I miss not being able to show him I've participated building cool things, like the biggest spanish social network for some years, that I fought my shyness and I've given more than a few talks in public, that I work hard daily to do what I like, that even I'm now trying to squeeze some time to finish those university studies I ended up freezing...

Anyway, I think he'd be happy and a bit proud as my mother is, so that'll do.

Finally, for once I'll share some personal images, old scanned newspaper articles with obituaries that his friends dedicated to him:
Obituary at La Vanguardia
Obituary at El Pais

And two photos that still make me very proud, because he was so good he got to interview in the nineties some "cool celebrities" like Arnold Schwarzenegger and Sylvester Stallone:
Interviewing Arnold Schwarzenegger
Interviewing Sylvester Stallone

Recommended Articles - 2016/10/13

  • Don’t let anyone overpay you: On having as a company only fixed product prices and not allowing big fish to ask and pay for different service/functionalities. Interesting food for thought, as I've seen the opposite more than once.
  • Essence of linear algebra: Great Khan Academy videos to teach you the basics of linear algebra in a really good visual way.
  • Google Inteview University: The (huge) list of topics you should learn to apply for a Google development position. Nice to get deep into algorithms.
  • How we built the world's prettiest auto-generated transit maps: Beautiful article about rendering transit lines on maps, and a good example of "the devil is in the details".
  • Brainstorming doesn't work, try this technique instead: Presents an interesting concept, "Brainwriting": write first, talk second. Post all the ideas on a wall, without anyone's name attached and then everyone votes on the best ones.
  • Interview with Joel Spolsky: Where he says that open spaces and other startup-like "perks" like ping-pong tables are undesired by developers, that they need to concentrate.
  • I used to be a human being: One of those long reads that make you think about what you do with your life, about how we've become slaves to mobile phones and instant-everything: notifications, emails, responses by chat from people...
  • O'Reilly free programming books: Interesting list of free ebooks. There are more following the links to subsectins at the bottom of the initial list.
  • Technical Tribalism: The great Zakas about demonizing developers for not doing things the same way you're doing them. Short but interesting read.
  • Fuck you startup world: Funny (but very real) rant about the startup ecosystem. Had some laughts reading it.

Recommended Articles - 2016/09/25

I read quite some RSS and articles daily, plus the ones that colleages and friends send or recommend me. Right now the ones I find most relevant/interesting I just tweet them (and they get lost after a while). As I've seen at other blogs (and used to do at a defuct website), I've been thinking about gathering those articles and posting the list among with small comments from me. So, here it comes the first batch, let's see if I keep it up:

Previous entries