Creating a website for my Apple Collection

A while ago I started an Apple Collection. After a few laptops and a few iDevices, I decided that I should start collecting info about my iThings. In the beginning, I created a gist containing model, serial number, how did I get the device, minimum/maximum OS, etc.

The list kept going bigger and bigger and the content started looking messy. The natural way to organize my data would be inside a SQL database, with the information distributed in columns. After organizing the information in tables, I would create a graphQL API (the one cool kids use these days) to give me the data needed to populate my UI – probably written in React, compiled with Babel and packed with webpack.

Read more
 

Forcing the usage of yarn (and at a specific version)

People and organizations often have preferences for a specific package manager. At work, we decided to use Yarn due to emoji support (jk) but how to keep everybody using Yarn? 

We can use the preinstall hook to check if the user run npm installor yarn install. Here is one example:

"scripts": {
    "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('yarn') === -1) throw new Error('You must use Yarn to install, not NPM')\"",

Read more

 

Disabling autofill in Chrome

Autofill in form elements is a very useful feature in browsers. Creating new accounts or shopping in an online store are examples of this feature saving us time.

However, the autofill feature can be a problem for SaaS products. Imagine that you want to edit the email address of one of your users. You hit edit in one screen and once you get a form with your user data Chrome will replace their email to your email. This is not a good user experience.

MDN has an article showing “How to turn off form autocompletion”. The solution is using the autocomplete attribute with an off value. This doesn’t work in Chrome.

Digging in Stackoverflow and Google results, I found a bug issued in 2015 about the topic. Here is the TL,DR (from March 2016):

Read more

 

My list of GitHub tips and third-party apps

I work at Thinkific with 20+ other developers (we are hiring for multiple positions) in different codebases. GitHub is part of our toolkit, and I decided to write a post sharing a few Chrome extensions, integrations and third-party apps that help me be productive as an individual contributor and organized as code reviewer and team lead.

Chrome extensions

Refined GitHub

Sindre Sorhus extension brings a massive list of improvements to GitHub UI and many of them have become part of the product after a bit.

Better Pull Request for GitHub

This extension list project files in a tree. This is quite useful when you have a big pull request and you need to go back and forth to understand better what is going on.

GitHub Hovercard

This extension shows info about a user, project, issue or commit. It is a cool UI trick like Facebook does. This extension even works for private repositories, as long as you have a valid token to grab the information of the service.

GitHub Repository Size

This extension automatically adds the repository size and individual files size

File Icon for GitHub and GitLab

Not a lot to say here :)

Integrations

Pull Panda

Pull Panda is an integration GitHub acquired a few months ago and they have added for free in the product. It is very handy because you can map GitHub users to Slack users and then they will get inside Slack all the information about the work they are following in Slack. Pull Panda delivers comments in PRS and even tell you about git conflicts (I love and hate this one).

Pull Panda can also spot bottlenecks, show who are the ones most pushing/reviewing code and even assign automatically people to Pull Requests.

macOS apps

Gitify

Gitify lives in your Mac menu bar and it is quite simple to understand. If the icon is green, you have a notification! It is also cool to mention the app is open-source (Electron-based, if you are curious).

Quests

Quests is similar to Gitify but one important difference here is Quest also supports GitLab.

iOS apps

Githawk

Gitwalk is my favourite iOS app for GitHub. It lists pull requests in a friendly way and I like how you can see the files affected in the PR and all conversation in place. If you need to take a lot at a pull request when you are not in front of the computer, this app is for you!

What are your GitHub tricks? Let me know in the comments :)

 

Newsletters to subscribe

In the last years, newsletters became more and more popular. Along with Twitter and RSS, it is one of my favourite ways to keep me updated it. Here are the ones I follow:

  • Software Lead Weekly – if you are a team lead, engineer manager, CTO you will like this one. Worth to mention their Slack group.
  • Changelog – independently of your stack, Changelog is a rich newsletter with interviews and tool suggestions. They also have a podcast – Example
  • Dense Directory – Every Tuesday a newsletter helping web workers be productive, stay inspired and think critically
  • dev tips – Chrome Dev Tools gifs weekly in your email.
  • JavaScript Weekly – a once–weekly email roundup of JavaScript news and articles
  • React Status – another one about JavaScript but React focused – Example
  • Ruby Weekly – once-weekly emails about Ruby. This one and the previous two are curated by cooperpress
  • Daily Developer Tips – code snippets, tools, techniques, and interesting stuff from around the web.
  • Gartner L2 Daily Insights – news and research analysis across digital marketing, site & e-commerce, mobile and social media.
 

It Doesn’t Have to Be Crazy at Work and Joy, Inc.: How We Built a Workplace People Love reviews

In the last couple of months, I read It Doesn’t Have to Be Crazy at Work and Joy, Inc.: How We Built a Workplace People Love. They both cover how two successful tech companies operate their activities in a very proud way. Reading these books can be inspirational for your company but at the same time, it does require a grain of salt.

In It Doesn’t Have to Be Crazy at Work, David Heinemeier Hansson / Jason Fried share how they keep Basecamp processes and team calm. I liked how they covered time management, culture and so many other topics in a compact book but at the same time, the book is swallow. It is fascinating reading that Basecamp has no goals, for instance, but would love to read their experience in this matter. If you already follow DHH / JF on Twitter, you will recognize a few points of the book in their 140 caracter messages. Anyway, here is a great part:

“No is easier to do, yes is easier to say.
No is no to one thing.
Yes is no to a thousand things.
No is a precision instrument, a surgeon’s scalpel, a laser beam focused on one point.
Yes is a blunt object, a club, a fisherman’s net that catches everything indiscriminately.
No is specific.
Yes is general.
When you say no to one thing, it’s a choice that breeds choices. Tomorrow you can be as open to new opportunities as you were today.”

In Joy, Inc.: How We Built a Workplace People Love, Richard Sheridan brings lots of elements and process from Agile to readers. It sounds like an Agile 101 but with real-world examples, what can give people the courage of trying new processes. At the same time, I saw some parts with a huge scepticism like when he mentioned that employee referrals are a terrible HR tactic or people wearing headphones are not a good fit to his noisy restaurant company.

At the end of the day, people can see both books are marketing pieces exposing two tech companies. They sound different in several points but they both agree that too many meetings are bad, too many benefits are traps and work/life balance is important to individuals and for many, this is the message that needs to be remembered.

 

People Lead Readme

Being a Team Lead requires more than tech skills: you interact daily with people and it is quite challenging building stronger relationships and improving employees onboarding. The following document is my People Lead Readme (sometimes known as Manager Readme), where I talk about me and I share my expectations on people and on the product.

What?

This document is an extended introduction to what I value and believe in as a team leader and software developer. It is also a quick introduction about myself and how I work.

  • This document doesn’t replace getting to know each other through 1:1s and day-to-day chats. As I said before, it is an introduction.
  • This document applies only to me, and in no way should be considered to apply to any other team lead or manager at Thinkific – even though we think in similar ways sometimes.
  • If you feel like I am not acting like I describe here, please let me know.
  • If you are curious why this document exists in the first place: there is a newsletter called SoftwareLeadWeekly (recommended) and managers share their own readme’s there. After seeing several documents, I decided to write my own.

Read more

 

Another dotfiles repository

A few days weeks I got a MacBook Air as secondary machine. Since its SSD is smaller than my main Mac I couldn’t use Time Machine. It was definitely a good time to finally create my dotfiles repository. My repository is based in webpro/dotfiles (you may want to check it out his repo to understand this one if you feel lost).

Read more

 

Testing tools to track my work activity

For a few weeks I have been using two tools to map my work activity. Since my work involves manager and maker modes, I am trying to figure out how much time I spent in each of them and possibly how to remove distractions. A co-worker recommended RescueTime and WakaTime and here are my comments.

RescueTime

RescueTime home page says “With so many distractions and possibilities in your digital life, it’s easy to get scattered” – yes, I know – and “RescueTime helps you understand your daily habits so you can focus and be more productive”. Yes, they really helped me understand my daily habits.
Read more

 

#deletefacebook and social media effects on me

This week #deletefacebook was a trending topic everywhere after all the Cambridge Analytica scandal. Lots of people deleted their accounts, including Elon Musk and the WhatsApp co-founder Brian Acton. I didn’t delete my account but one thing that I did in the middle of February was deleting the app from my iPhone – which is a good step anyway.

I am not deleting my account because I still need Facebook to reach a few people from my previous companies/schools. I used Facebook groups a lot in the past when I was dealing with immigration and unfortunately, it is difficult to find a replacement for this functionality. Forums and lists are not a thing since Facebook absorbed everything on its island.

What can I do?

If I can’t delete my Facebook account, I may have some way to undo my friendship with them.
Read more

 

Thoughts on building components libraries

A few months ago we started using React at Thinkific. One of the challenges of using React is creating reusable components not only from a look and feel perspective but also shareable in different projects.

I didn’t create this concept of elements (or components) library. To be honest, there are podcasts, courses, and examples everywhere about it but how to even start it? When you start creating a project from scratch you face several questions:

  • How to style components? Sass? Stylus? styled-components?
  • How to show the elements?
  • How to build the library? Babel? Webpack?
  • How to publish the library? To NPM or not NPM?
  • How to use integrations and CI in your favour?

Lots of decisions and you may not know all the answers. Startup Life™ doesn’t let you do whatever you want – everything has a cost and a trade-off. Why am I talking all this story? Because I wanted to share my thoughts about it and I created a repository to document what we are doing.
Read more

 

Sick Picks: Podcasts

I am huge fan of podcasts. It is always nice to hear people’s thoughts, struggles, jokes and sick picks. Here is my short list of development-related podcasts.

What are your favourite podcasts? Let me know in the comments :)

 

Useful apps that I use daily – 2017 edition

2 years ago I wrote a post about my tooling and here I am again, 2017 edition. I decided to write again because I keep listening to podcasts with Sick Picks and I also have my Sick Picks :)

Dev tools

Editor: Atom

I have been using Atom for a while. Despite I started testing VS Code in the latest months, I returned to Atom because VS Code doesn’t separate UI theme from syntax theme – you may not care about this, but I am a fan of a light UI and a dark code highlight.

My Atom

Here are the packages that I have installed:
Read more

 

Github webinars

Many of us use Github daily however we usually don’t use all its features. On the latest months, its team released a few webinars about how Github uses Github. More than showing the web interface, they talked about their culture and their workflows. In this post, I’m adding the links to the webinars with a few notes.
Read more

 

Cloudready or how to get a Chrome OS in a non-Chromebook laptop

Few months ago I saw in The Verge a post about CloudReady. CloudReady is a remake of Chromium OS ready to go in old PCs or Macs. The company behind the product sells its solutions/support to organizations interested in keeping using their hardware. It’s really interesting.


Read more

 

Another Meetup presentation

In yesterday Code & Coffee Meetup I talked about how Web APIs can improve User Experience. I watched Zeno Rocha talking about it few months ago then I decided to study/share the subject.

Here are my slides and the example repository that I created for the event.

 

Serving raw files directly from Github

We usually create HTML files in our Github repositories, but how to show this data in the browser? RawGit is a solution to serve files with the correct content types.

Example: The WordPress readme.html file can be shown in the following URL:

https://rawgit.com/WordPress/WordPress/master/readme.html

You only need to follow the formula:

https://rawgit.com/USER/REPOSITORY/BRANCH/file.html

The advantage of using RawGit over Github Pages is that RawGit works with all branches, while Github Pages requires a gh-pages branch. Last not the least, the source code of this solution is also available in Github.

 

Todo list using a Sinatra REST API

I am attending to a post-degree program and one of its courses is Server-Side Scripting. The professor gave us a project which students should create a project and my colleague and I created a Sinatra REST API for a todo list application.

Read more

 

My first Meetup presentation

Last week I presented in Code & Coffee about WordPress and Gulp. In my 10 minutes talk, I explained briefly what is Gulp and how its tasks can save our time.

Here are my slides and the example repository that I created for the event.

Update: video

 

Excluding folders from indexing in Sublime

Sometimes we work in projects with tons of Javascript dependencies. Folders like node_modules and bower_components are a pain in the neck because every time that we need to find something in the project the content of these folders will be used in the search.

Sublime offers 2 settings to hide these files from the index. First of all, open the User Preferences (Preferences -> Settings – User):

  • binary_file_patterns: This option excludes files from the index but keep them in the sidebar.
  • folder_exclude_patterns: This option excludes files from the index and sidebar. This is why, for example, you don’t see the .git folder in a project.

Read more