Yes it has been a while….

GitHub Interesting Repositories this Week

1 – HowToBeAProgrammer

Robert L. Read with Community

Copyright 2002, 2003, 2016 Robert L. Read

Licensed under Creative Commons Attribution-ShareAlike 4.0 International License.


"To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one’s coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child’s play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one.

This is very subjective and, therefore, this essay is doomed to be personal and somewhat opinionated. I confine myself to problems that a programmer is very likely to have to face in her work. Many of these problems and their solutions are so general to the human condition that I will probably seem preachy. I hope in spite of this that this essay will be useful.

Computer programming is taught in courses. The excellent books: The Pragmatic Programmer [Prag99], Code Complete [CodeC93], Rapid Development [RDev96], and Extreme Programming Explained [XP99] all teach computer programming and the larger issues of being a good programmer. The essays of Paul Graham [PGSite] and Eric Raymond [Hacker] should certainly be read before or along with this article. This essay differs from those excellent works by emphasizing social problems and comprehensively summarizing the entire set of necessary skills as I see them.

In this essay the term boss to refer to whomever gives you projects to do. I use the words business, company, and tribe, synonymously except that business connotes moneymaking, company connotes the modern workplace and tribe is generally the people you share loyalty with.

Welcome to the tribe."

2 – IBAnimatable

"Here is the design in Interface Builder (Storyboard).

With IBAnimatable, we can design a UI in an Interface Builder like Sketch, and prototype animations in a Swift playground like Framer Studio. Also we can use the output of the design directly in the production ready App.

As a designer, we love Sketch, which is a simple but yet super powerful tool to design UI. However, Sketch can’t design interaction, navigation, transition and animation, we may need another tool like Framer Studio to design some of them. Moreover, to make an App Store ready App, we need to use Xcode and Interface Builder to implement the UI and animations. To speed up the process and minimise the waste, we create IBAnimatable to make Interface Builder designable and animatable."

3 – Lodash

“A modern JavaScript utility library delivering modularity, performance, & extras.

4 – Medis

"Medis is a beautiful, easy-to-use Mac database management application for Redis.

Medis starts with all the basic features you need:

  • Keys viewing/editing
  • SSH Tunnel for connecting with remote servers
  • Terminal for executing custom commands
  • Config viewing/editing

It also supports many advanced features:

  • JSON/MessagePack format viewing/editing and built-in highlighting/validator
  • Working with millions keys and key members without blocking the redis server
  • Pattern manager for easy selecting a sub group of keys.

Note: Medis only supports Redis >= 2.8 version because SCAN command was introduced since 2.8. SCAN is very useful to get key list without blocking the server, which is crucial to the production environment. Because the latest stable is 3.0 and 2.6 is a very old version, Medis doesn’t support it at this time."

5 – Vim-Galore

“Please keep in mind that I just started writing this guide and new things get added every day. Things about to be added can be found here: issues. Thanks!”

6 – Python-Elevator-Challenge

"Many of us ride elevators every day. We feel like we understand how they work, how they decide where to go. If you were asked to put it into words, you might say that an elevator goes wherever it’s told, and in doing so goes as far in one direction as it can before turning around. Sounds simple, right? Can you put it into code?

In this challenge, you are asked to implement the business logic for a simplified elevator model in Python. We’ll ignore a lot of what goes into a real world elevator, like physics, maintenance overrides, and optimizations for traffic patterns. All you are asked to do is to decide whether the elevator should go up, go down, or stop.

How does the challenge work? The simulator and test harness are laid out in this document, followed by several examples. All of this can be run in an actual Python interpreter using Python’s built-in doctest functionality, which extracts the code in this document and runs it.

A naive implementation of the business logic is provided in the file in this project. If you run doctest using the provided implementation, several examples fail to produce the expected output. Your challenge is to fix that implementation until all of the examples pass.

Open a pull request with your solution. Good luck! Have fun!"

7 – Introducing Javascript Tips

"With great excitement, I introduce these short and useful daily Javascript tips that will allow you to improve your code writing. With less than 2 minutes each day, you will be able to read about performance, conventions, hacks, interview questions and all the items that the future of this awesome language holds for us.

At midday, no matter if it is a weekend or a holiday, a tip will be posted and tweeted."

8 – Feature.js

"Feature.js is a fast, simple and lightweight browser feature detection library. It has no dependencies and weighs only 1kb minified and gzipped. Feature.js automatically initializes itself on page load, so you don’t have to. It doesn’t, however, run any tests while initializing, so it will only ever run them when you ask it to. This makes it perform very fast.

With Feature.js, it’s simple to build progressively enhanced experiences that use feature detection to determine if a code can be executed in the user’s browser."

9 – Fastdom

“Eliminates layout thrashing by batching DOM read/write operations (~600 bytes minified gzipped).”

10 – [Awesome NPM](Inspired by the awesome list thing. You might also like awesome-nodejs.)

“Eliminates layout thrashing by batching DOM read/write operations (~600 bytes minified gzipped).”