Fork me on GitHub

One of these days, I needed a tool to record gifs from iOS devices to provide a better description to our PRs here at Work&Co. It wasn’t uncommon for us to open PRs with no description at all or with minimum overview of what was being accomplished.

Let me tell you something: design matters at this company! It’s hard to create amazing digital products and even harder to assess its code. We decided we could do better with our PRs.

Recording gifs from iOS devices has never been easy. You can find a bunch of tools online that are paid or simply don’t work. The alternative was to launch QuickTime, record a video and convert it to gif. That’s a lot of work. It’s tiresome and time consuming. We we could do better!

Example GIF

Redux is hugely widespread as the architecture for React and React-Native projects. Its decoupled nature combined with immutability ensures a truly functional application, when used correctly. Yes, that’s all true.

Redux starts to sound weird when we try to figure out where actions may be used. Specially when your project has wrappers and HOCs, which might mean actions definitions may not be where they’re actually used.

Building a production-ready fully architectured React-Native app means sending and updating lots of props to your components. This means the shouldUpdate -> render -> didUpdate flow gets called a lot. Here are a few steps on how to optimize your components to avoid rerendering unnecessarily.

As frameworks improves, as our knowledge of it, we should leave our prejudices in the past. It is without question that AutoLayout has become much beloved and necessary as it moves forward. Its API has improved so drastically as to discard the need for third-party libraries.

However, as far as AutoLayout has progressed, it may still be simpler to handle frames in some cases. But how to join both worlds without colliding them and throwing a bunch of warnings in your console? Or worst: in your IB…

Fork me on GitHub

One of these days I needed a debounce on Swift to ensure some block of code would only be executed once in a period of time. Debounces are quite simple so I implemented a first draft of it.

Not long after that, I also needed a throttle to skip repetitive calls to a different block of code. Not too different from a debouce, but not quite the same.