Is it time to ditch client-side performance?

Published:

by

I don't know if it's because I'm becoming older (in developer age). One of the hardest things I have to do is dismiss front end performance. I came of age in a web where everyone had a crappy device that could barely run JavaScript. Add too many lines of code and the device crashed. Add several libraries and the page visibly crawled as you scrolled. Load that extra script and now you have excluded all IE8 users.

After each deployment at work, I opened and tested the pages on IE tester. An application that could run several versions of Internet Explorer. Then I'd open the pages on my HTC Evo mobile phone. Other devs will test on their own respective device. We made sure it worked everywhere. It was a pain.

Today, I'm still afraid to deploy JavaScript code because it might fail in an unexpected manner on some device. On my brand new phone, some pages still seem like they are loading with difficulty. Especially those built with React. But one thing has changed in the way we deploy our code. Almost nobody cares about how our code performs on the client side.

In fact, I worked with several companies that have no way of knowing how their website is performing. They don't check which browser their customer uses, and they don't track performance in any way.

Is this it? Did devices evolve in a way that we don't need to check on them anymore? Maybe so, but I'm still skeptical.

The lullaby turned into a nightmare

Published:

by

I've come up with the perfect combination of sounds to get my children to sleep. Noises.online was the top website I visited for two years straight. I'd start with light rain drops. Then I'd add a bonfire, with the sound reduced to almost nil. I like the occasional cracking, almost like splitting a small branch. Then, I'd add the ocean waves.

Play this combination just right, and the twins fall asleep. But when they are asleep, I want to hear when they wake up, so I gradually reduce the volume and eventually turn it off. It came to a surprise one day when I turned it off and the sound kept going. I didn't pay too much mind, I barely got any sleep so I just went to bed exhausted.

The same thing happened again the next day. I turned off the sound, but it kept going anyway. In fact, the ocean waves were even louder now. I assumed that I had inspired the neighbors with the beautiful sounds. They started using it to put their kids to sleep as well.

Again the next day. This time, the ocean waves were crashing down the shore. It was very loud, but who complains about ocean waves? I went outside to see who was playing it. I couldn't tell. The sound was coming from everywhere. I went to my wife and asked her. "I don't hear anything" she said and went back to sleep. I thought she had gone deaf. At this point it was turning into noise. It felt like I was right there by the beach, only the breeze was missing. The volume was dialed to 11.

I ventured outside once more to investigate. A neighbor stood at her door, scanning her surroundings, clearly puzzled by the persistent noise. As the unbearable sound continued, I retreated indoors, grabbed my earphones, and started playing my favorite audiobook, 'The Lord of the Rings,' an epic rendition complete with immersive sound effects. I drifted into sleep between Bilbo and Gandalf sitting by the window, looking west onto the garden.

I woke up in the middle of the night, my earphones tangled on the floor then I noticed something. Right there is the bathroom, the ocean sound was just as loud as in the bedroom. I walked through the living room and into the kitchen. It was just as loud. I covered my ears, and to my surprise I could still hear the ocean waves crashing onto the shore. The sound was not coming from outside. It was coming from inside of me. I laughed.

I was glad to have figured out where the sound was coming from, but it was unbearable. Imagine hearing a constant sound, with the swashing of water and crashing. Non stop. All day, all night. I could no longer sleep. I went to the doctor and all they told me is that it was going to go away eventually. It took several weeks before the intensity of the sound went down. After a couple months, it went away.

It was a terrible experience. Tinnitus is terrible. I'm so relieved it went away.

Nothing to say

Published:

by

What do you say when you have nothing to say?

Nothing!

Silence is not void to be filled. There are moments where words need not to be uttered. There is a difference between silence and awkward silence.

Awkward silence is not a situation where a person runs out of words. For the most part, you find yourself there when you think you need to lead a conversation but you can't find what to say. You feel like you have to entertain the other party, but you can't come up with a cool subject on the fly. If you put yourself in this position, the only way out is to prepare yourself.

One of my favorite speakers is Alain de Botton. But if you've listened to 2 or 3 of his seminars, you've listened to them all. As natural as each of his talks sound, it is the same idea, the same jokes, and all in the same order. He doesn't stutter or run out of things to say because he has rehearsed what he is going to say.

So if you are going to meet someone new, find yourself as a host, find yourself as the entertainer. If you want to carry a conversation, don't wait until you find yourself in an awkward silence. Rehearse.

How to successfully fail at everything

Published:

by

To fail at everything you want to do, take a moment and think about the thing you want to do. It can be anything. A presentation, launching a product, or even taking a class. Great.

Now, imagine one thing that can go wrong. Maybe your slides get accidentally deleted and you can't continue your presentation. Right after you launch your product, you discover a similar product with a similar name, and a better offering. Or the class turns out to be too hard and you don't understand a thing. Great!

This future you are imagining is really not working for you, and would likely be embarrassing. So the next step is to take that future and bring it into the present. Be embarrassed by your speech today. Be frustrated about the product today. Feel inadequate about your class today.

You will feel the stress and emotions of these failures today and chances are you will give up right away.


I hope you are not actually following my advice, these are terrible things to do. But that's a pattern I see everyday. I see people feeling inadequate at their job before they do something inadequate. I see people skipping class because they think they won't understand it anyway. I see people wanting to quit their job because they think their boss is going to fire them anyway.

These problems come from imagined scenarios that will most likely never happen. But we are consuming all the frustrations that come with the problem well before the problem occurs. Do not prepare to be hurt. In fact, there is no such thing as preparing to be hurt. It's not like you will feel better after.

Only prepare for things you can change. If you think someone might have the same product, do some research before you build the whole thing. If you think some technical issue might happen during your presentation, do a mock presentation, rehearse. If you think the class might be too complicated, look through the prerequisite, learn the material first. Prepare for the things you can change.

Avoid trying to predict a future. In fact, if you want to be wrong, try predicting the future.

But if you really want to fail, then suffer the consequences of imagined scenarios today.

When she stepped on the stage

Published:

by

A presentation among friends. A presentation to share insights about the company. A presentation to help us make better decisions as leaders. This was the theme when the engineering managers gathered around for a few days to help propel the company into a better future.

I couldn't help but notice that there was only one woman in the room and she fit in like a hand in a custom made glove. She conversed with everyone, laughed at jokes, and teased the new guys.

One at a time, the managers stepped on stage and made their presentation. They called each other names, dropped f-bombs, sprinkled jokes left, right and in between slides. The audience was asking silly questions. It was fun, it was entertaining, but I can hardly tell you what the meat of their presentation was.

Most were friends before they joined the company, they knew each other outside of work. They were comfortable. They played well together. They were friends. But then the girl stepped on stage. The one and only girl in the room. Was she going to follow in the same tradition? Was she going to be entertaining? After all, she was also friends with everyone. She was part of the crew.

The moment she stepped on stage and opened her laptop, her eyes narrowed. Her facial expression dropped like she had been wearing a mask all along. The crowd was silent and focused as she made her exposé. She was interrupted a couple times with questions, but handled them with grace. She broke down the problem, repeated the argument, then explained how it can be solved with the method she was presenting.

In other words, she killed it. Unlike her colleagues, she was not trying to test her comedy routine on us. She didn't make a single joke. It was entertaining because we learned a lot from her. It was fun because she offered a solution to a problem we were facing as managers. It was professional because she didn't feel the need to drop f-bombs.

In the past, I've spoken about the challenge of being the only black person in every team I join. I recognize that women also face their own set of unique challenges. Especially in Tech. But I was grateful for this change of pace, for this simple yet new take that my colleague offered. While all of us were used to the comedy routine presentation, a fresh take brought us back to basics. If everyone in your team looks and talks just like you, it may be time to start changing your hiring process.

Ethics in tech

Published:

by

When I hear ethics in tech, I'm reminded of movies where the stakes are high. If the protagonist makes the wrong move, the whole planet will pay the price. The right move means being selfless and sacrificing all the riches in the world for the sake of humanity.

Reality is more subtle. Violating all the moral ethics in the world means adding two pesky lines of javascript in the code. It means creating a field in your database called “delete”, but never deleting the user data. It's not as dramatic, yet just as unethical.

Ethics is a few lines of JavaScript, a database query, a third-party SDK. And it boils down to one thing: Revenue.

Disappointed

Published:

by

There is magic in not understanding software. How does it understand what we say? How does it answer our questions, how does it know who my friends are? Whether it is AI or a simple program, it can leave most of the world fascinated. Diving deep into computer programming and AI can only leave you disappointed.

Disappointed because the computer doesn't really understand you. It turns your voice command into text and passes it to a classifier where the intent is extracted. Then a predefined action runs with the argument you provided.

The computer doesn't actually see you. It takes a sample of the image data coming from the camera then runs it in a convolution network. Then it compares the result to the data it has in its database.

The computer doesn't know who your friends are. It calculates the likelihood of you being friends with someone by comparing both your GPS locations and your respective friends list.

It's like watching a magician reveal his trick. Before he reveals it, you are fascinated. Once you know the trick, you lose a little bit of yourself. But you still can't do the trick yourself. One of the biggest open secrets in the magician community is that no one thinks a magician will work this hard to fool you.

In software, knowing the trick does not equate to being able to replicate it. Most of the work done in software engineering goes unnoticed to the end-users. Scaling to make an application available in milliseconds is never celebrated. Making sure emails are delivered is boring. Fixing a small bug that only affects a subset of users is unnoticed. Knowing how software works is kinda boring. But building software is certainly fascinating.

The last person to learn

Published:

by

When I was learning JavaScript in class, I felt like I was already behind. It was 2008 and everyone and their grandmother knew how to use document.all. There were new frameworks coming out everyday and every job was requiring years of experience with each one. I had to learn them all if I wanted to make a living writing code.

What I didn't know at the time was that the software world has always been like that. In fact there was an advantage to being the last person to pick up the book. You couldn't possibly learn everything, and most things become irrelevant quick enough. Remember Silverlight?

By the time I started learning about AI, all the resources were already available. Any time something was obscure to me, someone had already gone through the same issue. They had the time to write a detailed blog post with interactive figures that helped me better understand. When I followed videos on YouTube, the entire class that had been uploaded over the course of two years was available to me. I could watch it everyday rather than wait for a week or two for the next installment.

I went on to complete programs from Deeplearning.ai in a month instead of the 3 to 4 month recommended. The last person to start gets to learn from the pitfalls of those who paved the way. They don't have to spend the time working on tech that was only a fad. I'm the last person to learn, but I won't be too far behind in knowledge.

It hardly looks intelligent.

Published:

by

I often set out to learn about Artificial Intelligence. I must have been 12 or 13 when I decided I wanted to build a humanoid I can talk to. It might have something to do with the fact that I was fighting with my brothers everyday. It could also have been intellectual curiosity.

In my mind, this machine would start as software. I'd program it to listen, then to talk. Then I'd add a webcam and teach it vision. I'd slowly teach it to do things until it becomes better than me. While it was practicing intelligence, I'd learn robotics and build a humanoid body to encase it. Then I'd have to decide if it was a male or female. While my brothers were playing their video games, these were the thoughts that kept me up at night.

But when I sat at the computer, I had no idea how to get started. In the early 2000s, there wasn't a lot of material to go from on the web. Plus the little that was there was in English. One article I remember translating through yahoo's babelfish had one idea that stuck with me. It said something like "It's hard to say a person is intelligent if you look at them through a microscope." The building blocks of a living being are simple. They perform small simple tasks that can be programmed in a computer. But zoom out and these small components add up to become intelligent beings.

That's just what you see when you explore neural networks, the idea behind the state of the art AI today. They are small simple components that hardly look intelligent. In fact, they are simple math equations. Yet, put them all together and you have face recognition, machine translation, and self-driving cars.

I didn't build my humanoid, turns out I don't need to talk to computers that badly. But that experience has sparked an interest in computer intelligence that I continue to practice to this very day.

The best way to...

Published:

by

What is your best way to write? What is your best trick to take note? What is your best productivity advice?

You might have answers to these questions. If those tricks actually work for you, it's because you have something that is usually missing from the equations. You had material to work on.

Unless you have material to work on, there is no reason to read about the best trick to anything.

One day, a friend convinced me that we should both write. This was after we completed our English 1A class, we both got As. I was so excited that I could hear generic ideas bubbling in my head. But before I put the first word on paper, I went online to read about writing advice.

The first thing I found was people recommending Strunk and White, the Element of Style. That's the book we used in class. I didn't understand why people were swearing by that book. It wasn't helping me get started at all.

I spent some time reading about the Oxford comma, then about a space or two after a punctuation, and finally passive and active verbs. It still didn't help me get started. Everyday I would spend an hour reading about writing, preparing for that thing I was going to write one day. It's only today, more than a decade later that I remember this story. We forgot all about it. I had read so much about writing but it didn't materialize into anything at the time.

I was doing what schools usually teach students. Learning about a subject in a vacuum. I learned all about writing, yet I never practiced it. What I should have done instead was write. Write anything whether it was good or bad. Once I had material, I could look for advice to help turn it into something readable and understandable.

I can say this with confidence because this is how this blog came to be. It was two years after I had dropped out of college that I decided to start this blog. I didn't read anything about writing, blogging, or programming before I started. I wrote a few articles, and eventually I built a framework to display it on the web.

There is no best way to start anything. You do it, and eventually you improve it.