• Finding the Top JavaScript Cities in Europe

    JS EU Logo

    I've recently read an interesting article, talking about the job market for JavaScript in 2016.
    While the article presented great points on why Web Developers should invest some time and work with JavaScript, the job & market related information was US-centric. I wanted to see how things look like on the European front.

    Numbers of JavaScript related jobs in major EU cities

    Indeed (the website that was used in the original article to count jobs) has localized versions for most EU countries.
    I looked into each capital and/or major tech city in the EU, and searched for jobs that have the keyword JavaScript.
    City JavaScript jobs
    London, UK 8440
    Paris, France 3409
    Berlin, Germany 1426
    Dublin, Ireland 1304
    Amsterdam, Netherlands 1227
    Munich, Germany 1136
    Madrid, Spain 1088
    Warsaw, Poland 1049
    Brussels, Belgium 495
    Stockholm, Sweden 479
    Budapest, Hungary 479
    Rome, Italy 451
    Prague, Czech Republic 443
    Helsinki, Finland 310
    Vienna, Austria 288
    Copenhagen, Denmark 113
    It's important to note that Indeed is not as popular in Europe as it is in the US.
    I was on a search for some data that could give me a better indication into how lively the JavaScript community really is in these cities.

    Read More...
  • Tips for Jekyll development

    jekyll-tips Continuing the WordPress to Jekyll series,
    I've decided to give a few Jekyll tips that I've learned in the process of converting my website.

    Jekyll serve at the speed of light

    Over 5 years, I've written quite a few posts, over 500 posts.
    To test Jekyll out (for development) you have to run the following command:

    1
    jekyll serve
    
    However, with 500+ posts, it takes about 70-90 seconds to build, which is annoying if you're making small tweaks,
    that take minutes to compile.
    There's a cool little trick to make compilation happen a lot quicker, by limiting the number of posts:
    1
    jekyll serve --limit_posts=3
    
    This will only compile the last 3 posts, which is enough for 99% of test cases anyways.
    The average compilation time with the limit_posts parameter is about 3-4 seconds.
    This is a great trick especially if you have a bigger blog with 1000+ posts.

    Read More...
  • Moving from WordPress to Jekyll

    wp-to-jekyll

    Since last week you may have noticed something different about the website.
    Maybe it seems to load quicker, or it looks a tiny bit different, or perhaps you've noticed that the footer is much slimmer.
    The reason is: KidsIL has once again been transformed!

    After 5 years (felt longer) of having a WordPress blog, I've moved the blog to Jekyll!
    This transformation is much more subtle than some previous phases this website has gone through, since the blog looks and acts almost the same as before.

    Read More...
  • The Power of Silence

    sheep_musicFor the longest time I’ve been working on my computer with a headset on.
    Most of the time it’s music, lately it’s been podcasts, but I keep going back and forth.
    For years now I have been able to work without any issue while listening to music, in fact, I find it very hard to work without it.

    There are actions, however, that require me to pause my music, those usually break into 3 types:

    Writing

    Most of my writing is done on this website, although some of it is done purely on Google Docs (longer articles and/or pieces that I wish to work on in the future).
    I used to be able to do some writing while listening to music (mostly creative artistic stuff like poems), but for things that require a better sense of direction, not to mention coherency, I still need silence.

    Conception

    When I start working on new projects, whether it’s building a foundation for a new application, planning out how a possible solution for a technological problem could look like, or even sketching out some data models to better understand the application’s structure.
    I find these tasks nearly impossible to do with background music, and completely out of the question when there’s a podcast in the background.
    There’s something about human speech that is even more distracting than just rhythm + vocals.

    Coming up with new ideas

    Prior to Writing & Conception, there has to be a process of coming up with the subject for an article, or a problem worth solving with an application (unless it’s an application for a client).
    Creative process can work with some background music (instrumental stuff), but there has to be room for silence, at least some of the time.
    This is, of course, coming from my perspective alone.

     

    There is a common thread between the different tasks which I can only do silently.
    They all have to do with producing. Articles, Apps, Websites, Ideas to pass along...
    All of this leads me to the following conclusion:

    The more Input, the less Output

    (or: The more I Consume, the less I Produce)

    There is a certain Slippery Slope to consumption in my opinion.
    It’s very easy to describe it given the endless ways we consume information nowadays.
    Example scenario:

    • Bored in the bathroom, you decide to open your Facebook app
    • Someone posted a funny video on Youtube
    • You watch another 2-3 related videos (Youtube links to those at the end of each video)
    • Then an extra funny one comes up, you share it on Twitter (#OMGLOLZ)
    • A bunch of people that use that hashtag are posting some ridiculously funny videos
    • Guess what? You’ve been staring at your phone for an hour now.

    frog_bathroom
    There are plenty of scenarios very similar to this one.
    At the age when content is getting richer and more dynamic, meaning it links to other content, has images & videos, and is an infinite stream, it’s easy to get into a never ending loop of “Entertainment”.

    Solution

    There isn’t an ultimate solution, no silver bullet, but I can share some guidelines:

    • Avoid Streams of Videos: Streams of Videos (such as youtube playlists, television..) combine the worst of both worlds - Videos, where you have to focus both your eyes and ears to consume the content, and Streams, where the content never really ends
    • Focus on Communication: A pretty easy solution for the Facebook stream problem, would be to just use the Messenger part, thus only allowing you to communicate back and forth with people, instead of reading what seems to be more-and-more like an online newspaper (this tip is not perfect for people who have friends with lots of time to chat)
    • Rearranging your Apps: Try preferring apps that are educational, that work offline (=predictable), here are a few that I try to use when bored:
      • Evernote/Google Keep the ideal action for me is always writing. If I’m able to sketch out some ideas instead of consuming any information, that’s by far the best thing I could do. If that fails, there are always the following apps
      • Duolingo for learning new languages, pretty cool
      • Pocket for reading articles that you have chosen yourself. I love this one because I get to choose truly the most important and well written articles, and read them whenever I have the time (usually max 1-2 articles per week)
      • Moon+ Reader an obvious option is to read books on your phone, I remember reading the entire series of The Hitchhiker's Guide to the Galaxy (even the 6th!) with my tiny HTC Desire, would’ve never gotten around to doing it without a Reader App.
    • Change of scenery: sometimes it helps to grab your laptop and switch rooms (how do you think I was able to come up with this article?), or better yet, go outside (if the weather allows it)!

    If anyone has some creative idea to handle distractions, or some activities that can stimulate creativity (like the change of scenery I mentioned), feel free to comment below.

  • Karma, Mocha, End to End Testing or Unit Testing?

    unit-testing2I was recently asked by a good friend of mine whether or not Unit Testing are a must, or should he just stick to End to End Testing.

    End to End Testing has some solid Pros:

    • You can let Testers/QA define most of them, they might even be able to build them completely, thus developers spend less time on them
    • The more your website gets full of features and complex - the higher the chance your QA might miss a button/feature to test. E2E Testing prevents this from happening
    • It's the closest thing to the actual user experience

    So if they're so perfect and easy on the developers, why should we add Unit Testing as well?

    The answer lies in the complexity of the project.
    The more your project gets complex, the harder it's going to be to find out why the tests are failing.

    Consider this example:
    Say you're using Facebook Connect to login your user, once the user is logged in - he's redirected to his Inbox.

    Within this test you check if the user already exists, you log them in (via Facebook Connect API) if so, otherwise you add the user to the database.
    Finally, you refresh the page and show the user's inbox (or something of sorts).

    The End to End test might attempt to login, realize that it's not seeing the inbox and output an error.

    So Where's the problem?
    It could happen on any one of these stages:

    • Connecting to Facebook Connect API
    • Checking if the user exists or not
    • Writing a new user to the database
    • Redirecting to Inbox
    • Rendering the Inbox page

    This is a lot of things to check, and we're supposed to build tests to avoid such nightmares.

    This is where Unit Testing comes into play.
    With a unit test on every major function, you'll be able to easily point to where the process went wrong, thus save a LOT of time.

    Some words on Testing Libraries
    The testing world is complex and confusing at times, here are some short descriptions for different testing tools:

    • Unit Testing Frameworks (JavaScript) - Mocha/Jasmine, I personally choose Mocha most of the time, but both are quite similar
    • Behavior Driven Development (BDD) - Cucumber, very popular with Ruby developers, I've yet to work with it on production level projects, but I can see the advantages of having human readable tests
    • Test Runners - Karma/Velocity, these help you run multiple tests on real browsers, Karma is widely used for NodeJS and Velocity is the official Meteor test runner
    • Browser Automation - Selenium, this is definitely more of the End to End kind of testing, the highest level there is - automating the browser to test your application. Ideally it should be used more by QAs than devs.

    More information about Testing: