Featuring: PostgreSQL, Mapbox, Firebase, Twilio, & Cloudinary

TL;DR: Get it 👉 here 👈

There’s a spicy story behind this amazing app and why I’ve decided to release it to the public. However, I think it would be more appropriate to tell about its tail in another post and keep this one as technical as possible. After all, this is what you came here for, no?

About the app

Hot&Cold (aka “the app”) is a social mobile app where you can publish statuses and have discussions around various topics. Kind of like Twitter, but for meeting people. …

I think I’ve written dozen CLI tools throughout my career. I know that many people use Commander to do so (a popular library; if it doesn’t ring the bell, just leave it); I understand why. It does have a very structured way of work and you don’t need to understand what actually happens when you invoke a command through the terminal. You would be surprised, but the best CLI tools I’ve written weren’t using any libraries at all. Oftentimes, the usage of a library or a framework can be a limiting factor. So why limit ourselves?

In this article, I…

I was working the other day on an .obj file parser and wanted to test it. An .obj file just contains a collection of vertecies and faces, that together compose a 3D object. Anyways I wanted to test it by rendering the final result. I thought that it would be easy enough to do so with a bunch of divs that use 3D CSS transformations. After all it’s just a simple object, right? Long story short, this is the best I could pull off:

Photo by Mark Tuzman on Unsplash

CSS is an easy and declarative tool to implement styling and quick. For the most part, you can make an app look great without touching a single line of code. Awesome! But it does raise a few limitations with animations, however. Without having the ability to obtain a reference to the target element itself, and/or the data that is bound to it, animations cannot be pixel perfect. Indeed, some developers are aware of that, and consequently, have come up with various libraries and frameworks, of which D3 is included.

D3 allows you to bind arbitrary data to a Document Object…

It’s no secret that remote work has been getting a lot more popular since the beginning of COVID era, and even though vaccines are already here, many companies and teams have fully embraced the idea of working online and are not planning to let go. As a result, the demand for online collaboration tools has been increasing; especially video conferencing solutions. For reference, Zoom stock price has jumped from 66.64USD in January 2020 to 559.00USD in October 2020, an increase of ~838% in 10 months:

Thanks to Adrià Tormo for sharing their work on Unsplash.

JavaScript strings are held by value, and behave exactly like any other primitive. This means that each time we slice a string, we actually occupy extra memory slots. Although this trade off makes coding more comfortable and a whole lot easier, it’s very inefficient in memory:

edit: After investigating around I have found out that some browsers use string interning which means that the browser will hold a pool of string literals with references to its sub strings, so memory management might result in something different, however; this is not officially a part of TC39 specification and might vary…

Photo by Sebastian Herrmann

The #1 mistake people make and how to correct it

Handling async tasks is a necessity. In my opinion, React docs aren’t exactly elaborating about it as it should, at least in the context of effects. Let’s take the following code snippet as an example:

We’re fetching some records from an API and updating the component’s state, expecting them to eventually appear in the view, this way or another. We’re waiting for the promise to resolve, and in the meantime, there’re other tasks running in the background. Even though we wait for the promise, React doesn’t pause its execution.

Photo by Alex Kondratiev on Unsplash

Tested with React-Native and Firebase Test Lab

Every invention starts with a need. I’ve been working on a personal app for quiet a while now, and as part of the process I hand it out to few people so they can test it (most of them were overseas). One of the major complaints that I got was that the map component didn’t load. On most devices it did, but in many others it didn’t.

This issue had to be addressed, obviously, if I wanted to take my app seriously. Virtual devices using Android emulator didn’t seem to reproduce the issue, so I had to get a hold…

There will be times when we would like to pass props and control the behavior of child elements. Let me explain. Let’s take the following modal for example:

Custom selectors, custom rules and custom events. You determine its behavior

For some things CSS is simply not enough, we need JavaScript. I’m sure that we all experienced it not once, nor twice, the feeling of wanting to have a specific behavior or style that aren’t supported by CSS. An arbitrary example: selecting an element based on regular expression, playing a transition dynamically to the element’s changes in dimension, or sticky positioning (which is arguably working in some browsers based on my personal experience). However, this is not why I wrote the CSS engine.

I wrote the engine to repeat the same thinking process that the original developers went through, and…

Eytan Manor

Eytan is a JavaScript artist who comes from the land of the Promise(). His hobbies are eating, sleeping; and open-source… He loves open-source.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store