Enter the Code Haze

By: Danny Geisz | March 1, 2020

Project: Super Secret App Project



A most cordial Sunday morning greeting to each and every one of you! It’s wonderfully quiet up here at the top of Berkeley. Goodness, perhaps I’ll even take a walk today! Oh, the little blessings of life.

Well of enough of me sounding like a sixty-year-old woman. As the title suggests, I have entered into a thikk (“k” is making a comeback) code haze. My life hasn’t seen a code haze of this magnitude since I first worked on this very site.

Wait, hold on. There’s something far more important than my code hazes that I need to quickly address. I have been unknowingly lying to you, treasured reader, to myself, to the heavenly heights, and the depths below. Grimes and Elon Musk are not dating. Nor apparently, have they been since 2018. When I learned that this week, I wasn’t entirely sure what to think. I tend to pride myself on my ability to thoroughly stalk my celebrity crushes, so this revelation was a sickening blow to me in more ways than just one. To keep this post under 12 pages, I won’t attempt to properly convey the full extent of my disappointment about this information, but I would like to briefly explore how it is that I was so egregiously misinformed.

I’m going to blame this on Lizzy Dube. At one point this summer she mentioned Grimes and Musk being a thing, and I think that seed was so firmly planted in my mind that I was unable to fully accept any other version of reality. Lizzy, I have no reason to believe you read this blog, but if you do, I have no hard feelings toward you, and I hope you are having a lovely first year of college, but just know that you have sent my on a truly magnificent spiral of emotion with regards to Grimes and Musk’s love life.

*Deep breath in, deep breath out.* Ok then, back to the code haze. Now I know many of you readers may not understand precisely what I mean by “code haze,” so I will attempt to give you some idea by sharing my experience.

In working on the Super-Secret App project, many of you consistent readers may remember that I am actively having a love affair with React Native. Just to give a quick description, React Native is a coding framework that Facebook released a couple years back that allows you to write one codebase that deploys to both IOS and Android. It really is just lovely sauce.

Except for the fact that it is absolute anarchy in the form of JavaScript. What do I mean by this? Well, usually when I write code (in Java or Python of C++), I expect that each line I write will be executed one after the other. This is generally how programing languages work, if you’re not going crazy with multi-threading or multi-processing. With React Native, I have no fracking clue when the heck of my code is actually being executed. There are so many event handlers and lifecycle commands, I literally have no idea when anything is actually happening. If I want a button to take me back to the home screen, I just shove a bunch of logic into the button and hope and pray that it will all execute properly when I actually press the button. Anarchy, my friends, anarchy.

It also doesn’t help that I’m cripplingly perfectionistic about the User Interfaces (UI) I design. If a button isn’t rendering properly, or a View is in the wrong place, you best believe that I’m not going to move along blindly until that bad boy is fixed. The process of designing the front end is therefore: 1. Wrestle with the chaotic leprechaun that is your JavaScript codebase. Hopefully you were able to make a change. 2. Re-render your app using expo’s saucy, saucy development platform. 3. Take note that your struggles from step 1 actually had no effect on anything and start madly googling every word that you’ve ever learned. 4. Repeat steps 1-3 until magically, for no good reason at all, the UI renders how you want it to.

Hence, the code haze. This same exact thing happened to me when I was working of the XFA site. I think what happens is I notice some minor detail that’s wrong in the UI, and without even realizing it, I enter the madness of the above 4 step process before I can even say, “Linus Torvalds, be with me.”

I call this effect a code haze, because pretty soon, hours have passed, and I have no frikin clue if I have either a) accomplished anything or b) learned anything. My experience with XFA showed me that in the process of designing front ends, you basically just have to let yourself become one with the code haze, and eventually after maybe two weeks, everything will be exactly how you like it.

Shoot, that’s all I really have to say about that. After the skeleton of the front end is in place, I’m going to have to start playing shady games with Django and Apache Kafka to get the backend in place.

Oh wait, I just realized I have stumbled upon an opportunity to teach you non-coders some coding lingo! Yayyy! Just two terms. “Frontend” refers to the part of an application or piece of software that the user interacts with. This is the part of the app that you see and interact with. React Native is the framework I’m using to design the frontend of the app I’m working on. “Back end” refers to everything behind the scenes that is in place to send your phone the information that the app is going to render. So when you pull up a Snapchat story about Kylie Jenner, a request is sent from your phone to Snapchat’s servers (a server is a big, powerful computer) and the server has to look into its database and find the data that corresponds to the Snap story, and then the server streams that data back to your phone, where the front end renders it onto your screen. The incredible thing is that all of that happens in a fraction of a second. So the app you see is the frontend, and the server, the database, and streaming software is all part of the backend.

I’m not entirely sure why I thought that was necessary. Well, it has been written, and therefore can never be unwritten. One last thing: I ate proper Korean BBQ in Oakland two nights ago, and man alive, that meat is the sauce. If you haven’t partooketh in kbbq, you gotta.

Ok, I’m done. Bye.