Image for post
Image for post
Photo by Chris Spiegl, via Flickr CC BY-NC-2.0

One of the most transformative pieces of wisdom I’ve gotten in my career is Titus Winters’s ToTW #122 on test dataflow clarity. The Tip of the Week (ToTW) series offers advice focused on C++. Like Testing on the Toilet, which offers advice and best practices for software engineering at Google generally, it has become a fixture within the engineering culture, frequently cited in code reviews.

If you haven’t already, check out ToTW #122: Test Fixtures, Clarity, and Dataflow now — I’ll wait.

At it’s heart, the advice is simple: avoid overusing test setup and helpers to obscure data flow. As a reader of a test, I should roughly be able to understand what goes in and what comes out, without significant context switching, scrolling up and down a large file, or switching between multiple files. …

Image for post
Image for post
via Unsplash

Software Engineers starting with game development are often looking for best practices and idiomatic techniques. You’ll find some authoritative sources of idiomatic development from talks in Unity’s Unite conference, posts on the Unity blog, and members of the community like Jason Weimann. But game development isn’t just engineering; it’s also an art. This sometimes means that getting something to work takes center stage. You might find a lot of advice along the lines of “do what works”, which, while it is valid and helpful, doesn’t quite send you down the right path when you’re still learning.

Below, I put a brief list of Software Engineering practices you should shed when starting with game development, those you should adopt, and those you should keep. …

Image for post
Image for post
Photo by Christoph Minixhofer, via Flick. Public Domain.

If you’re trying to get into game development as a Software Engineer, finding learning materials with the right level of context can be challenging. You’ll likely face a choice between following materials introducing you to basic C# and OOP concepts while also describing Unity concepts, or starting with advanced tutorials and be left to figure out the core concepts deductively.

I started my programming journey around 17 years ago by picking up Game Maker. Countless hours spent coding little games and tools led me to a bigger passion for programming. Eventually, I was at a point where I focused mainly on Software Engineering. …

Image for post
Image for post
Winding Path by Phil Bulleyment, via Flickr CC BY-2.0

I had been working in New York City for just over a year when I sat down at one of my favorite cafes in my neighborhood to write a personal journal entry. I gave it the title “On the crossroads between goal-oriented and process-oriented” and I wrote down stream-of-consciousness reflections on my life, career, and how I wanted to do things differently.

It was October 2015, and I had finished grad school and moved to NYC to work full-time as a Software Developer in a fin-tech company. I was having what I have come to see as the seminal quarter-life crisis many folks go through when they finish their formal years of education. I had been chasing goals all my life up until then, and now I had the luxury and privilege of deciding whether I should set another goal or do things radically different than what I had done so far.

What I learned testing everything

Image for post
Image for post

Conventional wisdom in the software engineering community says that striving for 100% test coverage is a fool’s errand. It won’t necessarily help you catch all bugs and it might lead you down questionable paths when writing your code.

My recent attempts at 100% test coverage showed me the answer is much more subtle. At times I was tempted to make questionable code changes just for the sake of coverage. Some of those times, I succumbed. Yet I found there’s often an enlightened way to cover a branch and make the code better for it. Blind 100% coverage can cause us to make unacceptable compromises. But if we constrain ourselves to only making the codebase better, thinking about 100% coverage can change the way we think about a codebase. …

How helping on a film set led to me down a serendipitous path, publishing a new open source library, and getting an IMDB mention.

Image for post
Image for post

About a year ago, a friend asked me-along with some others-to help as extra hands on set filming the second season of an absurdist comedy mini-series she was working on called Look it Up.

Helping film anything wasn’t something I thought I would ever do, so I was excited to try it out. We weren’t necessarily trusted with anything difficult; carry equipment around, slate shots, clear the set, and move things around in general. …

Dear Rep. Velazquez,

I write asking you to take a public position in support of Rep. Ilhan Omar, and against the campaign to smear her legitimate foreign policy questions as anti-Semitic. These attempts are, in themselves, all-too-familiar xenophobic, Islamophobic, and anti-Arab.

Image for post
Image for post
Ilhan Omar in Twin Cities Pride Parade, by Tony Webster

As an Arab in America, I am always erased. It is my personal struggle to reconcile my daily work furthering a country that provides aid to a state oppressing an ethnic group I belong to and feel a strong kinship with. That is normal, and okay. No one should expect their country’s foreign policy align in every aspect with their own. …

A model for better platforms for political parties

The progressive left is suffering from two contradictory problems: The abundance of single-issue political litmus and purity tests threatens base cohesion and coalition building; Yet, also, the lack of a broad platform of specific policy proposals leaves the Democratic party feeling like a party without a cause.

How can a progressive party adopt a specific platform to rally people around it, while still building a broad coalition that appears to a breadth of voters and lawmakers? Indeed, California Rep. Jim Costa expressed doubt in the Democrats’ “Better Deal” platform along these lines, saying “Just as there isn’t one kind of Democrat, there [is] not just one kind of message that works.”

Before the left, right, and center heal their differences, the left needs to move past confusion and blame

Image for post
Image for post
U.S. President Lyndon B. Johnson meets with Dr. Martin Luther King, Jr. Photo Credit: Yoichi Okamoto

An altercation late last year between a progressive journalist for Media Matters of America, who labeled The Young Turks (themselves progressives) as “Kremlin Cheerleaders” is symptomatic of the quintessential progressive struggle. The Young Turks had been opposed to the candidacy of Hillary Clinton throughout the primaries and part of the election. The bitter division between “mainstream” and radical activist progressives is nothing new. The tension we saw in 2016 is unexceptional. It is also not sustainable.

We saw these tensions boil over many times before; between second-wave feminists throughout the 60s and 70s [1]; between democrats in the 1970s; during the civil rights period; the gay rights period [2]; and it goes as far back as the women’s suffrage movement in the late 1800s [3]. …

Reading Gloria Steinem’s My Life on the Road gave me many treasured lessons. Many are relevant on election years. One is especially relevant on the heels of the 15th anniversary of the 9/11 terrorist attacks, and particularly during an election year where fear and Islamophobia are on the ballot.

As a large portion of Americans react to fear of terrorism and religious-inspired radicalism with Islamophobia and an anti-immigrant mentality, I remember this.

Steinem recalls a conversation with a cab driver in New York city “only ten days after the 9/11 terrorist attacks”. …



Software Engineer living in Brooklyn, NY. MIT Computer Science S.B. ’13, M.Eng. ‘14. From Amman, Jordan. Interested in politics, current affairs, and technology

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