Archives

#176 - jun 19th 2016

Look

Examples of UI/UX, graphic performance, web design and flashy things.
Timelike design
A visual experiment showing your likes from the face book.

Use

Web applications, resources and tools, available for making our life easier or funnier.
An interview with Mike Perham jun 22 rb
Sidekiq creator interview on Remote Meetup. Join in!
Best-ruby rb
Ruby Tricks, Idiomatic Ruby, Refactorings and Best Practices
Javascript WYSIWYG editors js
A list of web-based WYSIWYG editor.
Pixel Art to CSS design
An online editor for pixel art animations.
Berkeley AI Materials tool
UC Berkeley CS188 Intro to AI -- Course Materials
WebTorrent tool
WebTorrent, the streaming torrent client for the browser, OS X, Windows, and Linux
CodeComet tool
Version Control, Collaboration & Coding for Front-end Developers (in beta).
2016 Guide to User Data Security ops
A quite complete guide for strengthening your servers security.

Install

A selection of gems or applications updated during past week.
FasterPath rb
This gem shaves off more than 30% of my Rails application page load time.
Mechanize rb
The Mechanize library is used for automating interaction with websites.
CASino rb
Single Sign On (SSO) web application written in Ruby
Rack-cas rb
Simple Rack middleware to perform CAS client authentication.
Clearance rb
Rails authentication with email & password.
Sharedb js
A database frontend for concurrent editing systems
Habitat ops
Automation that travels with the app.

Read

From the blogosphere or news feeds ...
50 Most Common Ruby on Rails Mistakes Beginner Developers Make jun 13 rb
The list of common Ruby on Rails mistakes that beginner developers are unaware of/do wrong or don’t do at all. And how to avoid them.
Ruby Ranges: How Do They Work? jun 14 rb
Discover how Ruby ranges work under the hood.
Metaprogramming in Ruby jun 15 rb
Metaprogramming is fantastic but only when it is used sparingly.
Hands-on Functional Programming with Ramda.js jun 15 js
Ramda.js is a library that we can use to help us getting started with functional programming using JavaScript.
An Introduction to Elixir’s Ecto Library jun 15 el
Ecto is the main library for working with databases in Elixir.
Samsung acquires Joyent: A CTO’s perspective jun 15 js
Quite a big news this week. Here is an insider insight.
Accessing the User’s Camera with JpegCamera and Canvas jun 16 js
JpegCamera takes the pain out of using the user’s camera in your application without needing to worry about cross-browser compatibility.
How to Find Cool, Quirky, Copyright Free Photos on Flickr jun 16 design
Find images that are in the public domain and copyright free.
Quick Tip: Add Favicons Quickly and Easily to Your HTML jun 16 web
Favicons generally aren’t easy to manage. Because of the fragmentation of both mobile and desktop operating systems and browsers.
Preserving session with Mechanize jun 17 rb
The Mechanize library is used for automating interaction with websites.
Links curated by mose (publisher), tysliu (editors), franzejr, nauman, mose (contributors) .

Rant

The random rant of the week by mose.

The virtues of duplication

Few weeks ago I began to prepare a copy of the Green Ruby Template system for the usage of the Remote Meetup team. It's kind of ironic because, from some point of view, this code is a sin and was not written in the perspective to be generic. It's deliberately not constrained to code best practices, it's joyfully messy and blatantly suboptimal. It was a quick and dirty scripting solution, it could have been a set of shell scripts, well it happens to be using ruby. Check it out if you don't believe me.

But it's doing the job for years now. It's a builder code, so it's run as a convenience only a few times a week, it doesn't really need to be fast. It just needs to do the job. Trust me I like good code, with clean design and full test coverage. But this one was just an intimate assistant of mine which was not really a software. Just some automation scripts.

And now here it is, I get to face a situation where some friends need the same setup and I can't just give them the code, it's so custom. But there have been only a few changes to make and it was ready. But the interesting part is in the process. While duplicating the code for the Remote Meetup newsletter, well, I extracted some stuff, made a config file to remove various hardcoded things.

Well it is still a big ball of dirty code, but in the duplication, it got more generic. I love that feeling which brings the software development world closer from the biological world. There is some kind of evolutionary process going on in the life of a software. It takes many forms and I like it when I get reminded of those similarities. I could go on and on about the topics that an open source ecosystem is necessary for the diversity of code to flourish and make evolution possible in a totally Darwinian way.

So this simple operation was just illustrating one principle: when you share your code you shape it and make it more generic in the process. It can have various beneficial side effects beyond the single act of duplication and adaptation. I find it's also true when you publish your code as an open source project. If it gets some traction and people start to use it, they will import their context in your initial ecosystem and bring the same kind of adjustments. Making it stronger, in some way.

Anyways, the Remote Meetup News website and newsletter generator is now ready, and you may find that the design is kind of familiar. Well, the rule of the path of least resistance also apply here for sure. I begin to apply back on Green Ruby the changes I made over there. I suspect the third duplication, of any, will be the extraction of the common parts in a separate codebase, like a gem with a lib.

Green Ruby News was a feed of fresh links of the week about ruby, javascript, webdev, devops, collected by mose, xenor and tysliu every sunday.