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.Read More...
To test Jekyll out (for development) you have to run the following command: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:This will only compile the last 3 posts, which is enough for 99% of test cases anyways.
jekyll serve --limit_posts=3
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.
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!Read More...
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.
For 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:
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.
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.
- 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.
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”.
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.
I 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:
- 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: