<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zach Alexander</title><link>https://zpalexander.com/</link><description>Recent content on Zach Alexander</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 23 Jan 2022 12:57:57 -0800</lastBuildDate><atom:link href="https://zpalexander.com/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://zpalexander.com/about/</link><pubDate>Sun, 23 Jan 2022 12:57:57 -0800</pubDate><guid>https://zpalexander.com/about/</guid><description>&lt;p&gt;Hi! My name is Zach and I love making software. I taught myself how to code in college, and now I work as a Senior Software Development Engineer at Amazon. In my day job, I serve as a technical lead on cross-team and cross-organizational projects where I get to build software for millions of Amazon customers.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://zpalexander.com/images/resume/self-portrait.jpg" alt="A picture of my face. I&amp;rsquo;m a white guy in my 30s, clean shaven with a fade haircut."&gt;&lt;/p&gt;</description></item><item><title>5 Easy Ways to Improve Web Accessibility</title><link>https://zpalexander.com/posts/5-easy-ways-to-improve-web-accessibility/</link><pubDate>Mon, 04 May 2020 10:40:03 -0700</pubDate><guid>https://zpalexander.com/posts/5-easy-ways-to-improve-web-accessibility/</guid><description>&lt;p&gt;These days it&amp;rsquo;s hard to conceive of life without the internet. We have come a long way since the early days of the internet as a hobbyist&amp;rsquo;s retreat full of text bulletin boards and personal &amp;ldquo;web logs&amp;rdquo;. People now rely on the internet to pay bills, shop for necessities and even earn an income. The world is at your fingertips&amp;hellip; if you can use a mouse&amp;hellip; and see the screen&amp;hellip; and hear the audio.&lt;/p&gt;</description></item><item><title>5 Steps to Clean Code</title><link>https://zpalexander.com/posts/5-steps-to-clean-code/</link><pubDate>Wed, 20 Dec 2017 11:47:30 -0800</pubDate><guid>https://zpalexander.com/posts/5-steps-to-clean-code/</guid><description>&lt;p&gt;As a beginner developer working on pet projects at home, it&amp;rsquo;s easy to argue that once code goes through the compiler, it&amp;rsquo;s all the same. Right?&lt;/p&gt;&#10;&lt;p&gt;The flaw in this argument is that it assumes that all software developers do is write new code. The reality is that &lt;a href="https://blog.codinghorror.com/when-understanding-means-rewriting/"&gt;we actually spend much more time reading and modifying existing code than writing new code&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://zpalexander.com/images/5-steps-to-clean-code/6a0120a85dcdae970b0120a86d7477970b-pi.png" alt="Pie chart demonstrating that most developer time is spent understanding and modifying existing code"&gt;&lt;/p&gt;</description></item><item><title>Switching to ZSH</title><link>https://zpalexander.com/posts/switching-to-zsh/</link><pubDate>Sat, 15 Apr 2017 16:14:11 -0800</pubDate><guid>https://zpalexander.com/posts/switching-to-zsh/</guid><description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Jeff_Atwood"&gt;Jeff Atwood&lt;/a&gt; once famously proclaimed &lt;a href="https://blog.codinghorror.com/we-are-typists-first-programmers-second/"&gt;&amp;ldquo;we are typists first, programmers second&amp;rdquo;&lt;/a&gt;. While I think software development is &lt;a href="https://developers.slashdot.org/story/10/12/25/2034201/Does-Typing-Speed-Really-Matter-For-Programmers"&gt;a little more complicated than that&lt;/a&gt;, this quote brings up an important point: efficiency in software development hinges on the tooling we choose.&lt;/p&gt;&#10;&lt;p&gt;For the longest time I used &lt;a href="https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29"&gt;Bash&lt;/a&gt; as my UNIX shell. It got the job done. I would occasionally feel frustrated by a repetitive command or a missing feature, but there was usually an &lt;a href="http://www.tldp.org/LDP/abs/html/aliases.html"&gt;alias&lt;/a&gt; or &lt;a href="http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html"&gt;script&lt;/a&gt; I could apply like a bandaid to minimize the pain enough to keep going. I even switched to &lt;a href="https://iterm2.com/"&gt;iTerm&lt;/a&gt; several years back to improve my terminal emulator GUI. I worked with Bash for long enough that I managed to amass a pretty fancy &lt;a href="http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html"&gt;.bash_profile&lt;/a&gt; config. If you&amp;rsquo;re curious about my config, &lt;a href="https://gist.github.com/zpalexander/213a0b53b4bc128c0410195a79a6ea51"&gt;you can check it out for yourself&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Your Referer Is Showing</title><link>https://zpalexander.com/posts/your-referer-is-showing/</link><pubDate>Fri, 08 Jul 2016 12:54:31 -0700</pubDate><guid>https://zpalexander.com/posts/your-referer-is-showing/</guid><description>&lt;p&gt;Did you know that every time you click through to a new webpage, you&amp;rsquo;re voluntarily telling that new webpage where you came from?&lt;/p&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t a trick by the NSA, its just the way the web works. As most people know, whenever you click a hyperlink, the browser sends a request to the resource on the other end of the link. What most people don&amp;rsquo;t realize is that by default the request contains the referrer field, which indicates the page where the user clicked the link.&lt;/p&gt;</description></item><item><title>Unit Testing in Java Play</title><link>https://zpalexander.com/posts/unit-testing-in-java-play/</link><pubDate>Tue, 05 Apr 2016 00:37:56 -0800</pubDate><guid>https://zpalexander.com/posts/unit-testing-in-java-play/</guid><description>&lt;p&gt;The &lt;a href="https://www.playframework.com/"&gt;Java Play framework&lt;/a&gt; is a Java development framework built on top of &lt;a href="http://akka.io/"&gt;Akka&lt;/a&gt; that makes it easy to write scalable web services in either Java or Scala. It is fully RESTful and comes with a number of great features such as hot reloading, type safety and in-browser errors. If you are a Java developer who hasn’t yet tried Play, you are missing out on one of the best web frameworks ever developed for the language.&lt;/p&gt;</description></item><item><title>Debugging "Unknown Provider" In Minified Angular.js</title><link>https://zpalexander.com/posts/debug-unknown-provider-minified-angularjs/</link><pubDate>Wed, 27 Jan 2016 20:09:00 -0800</pubDate><guid>https://zpalexander.com/posts/debug-unknown-provider-minified-angularjs/</guid><description>&lt;p&gt;For the past few months I’ve been working on an &lt;a href="https://angularjs.org/"&gt;AngularJS&lt;/a&gt; app that makes use of &lt;a href="https://material.angularjs.org/latest/"&gt;Angular Material&lt;/a&gt; as a Bootstrap-like front-end library. I recently had to solve one of the hardest bugs I’ve ever faced in Angular, and I’d like to share my debugging technique with anyone who might encounter the same problem down the road. While the bug was related to the use of Angular Material in my case, it could occur in vanilla Angular as well, so don’t stop reading just yet!&lt;/p&gt;</description></item><item><title>JavaScript Promises With Node.js</title><link>https://zpalexander.com/posts/javascript-promises-with-nodejs/</link><pubDate>Sun, 20 Sep 2015 15:02:18 -0800</pubDate><guid>https://zpalexander.com/posts/javascript-promises-with-nodejs/</guid><description>&lt;p&gt;JavaScript is a non-blocking programming language, which means that one chunk of JS code will not necessarily wait for the lines above it to execute before beginning itself. In many cases this is a pretty awesome feature of the language. Imagine if your website was only able to run one window.onload call at a time. If your page needed to perform a number of calculations or data insertions in order to render correctly, things would take forever to load and users would see a bunch of unstyled content and blank boxes at the beginning of every page load. Yuck.&lt;/p&gt;</description></item><item><title>Beijing's Garage Cafe: An Ad-Hoc Startup Incubator</title><link>https://zpalexander.com/posts/beijings-garage-cafe-startups/</link><pubDate>Sat, 07 Feb 2015 00:28:17 -0800</pubDate><guid>https://zpalexander.com/posts/beijings-garage-cafe-startups/</guid><description>&lt;p&gt;Peking University went on holiday last month in observance of Chinese New Year. As such, I knew I would be logging quite a few extra programming hours over the course of February. While I don’t mind working part-time from the comfort of my apartment’s bedroom, I actually kind of hate working from home full time. There are benefits of course: fewer interruptions, more comfortable and configurable workspace and no commute. Nevertheless, &lt;a href="http://theoatmeal.com/comics/working_home"&gt;I start to go a little crazy&lt;/a&gt; when I spend over 16 hours a day in the same 10′ x 10′ space.&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 6</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-6/</link><pubDate>Sat, 10 Jan 2015 12:09:45 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-6/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;This phase is definitely the trickiest out of all of the other bomb lab phases. Prepare for data structures…&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 5</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-5/</link><pubDate>Fri, 09 Jan 2015 12:09:45 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-5/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Ok, let’s get right to it and dig into the &lt;code&gt;&amp;lt;phase_5&amp;gt;&lt;/code&gt; code:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://zpalexander.com/images/binary-bomb/phase-5-overview.png" alt="Phase 5 overview"&gt;&lt;/p&gt;&#10;&lt;p&gt;So, what have we got here? First things first, we can see from the call to &lt;code&gt;&amp;lt;string_length&amp;gt;&lt;/code&gt; at &lt;code&gt;&amp;lt;phase_5+23&amp;gt;&lt;/code&gt; and subsequent jump equal statement our string should be six characters long.&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 4</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-4/</link><pubDate>Thu, 08 Jan 2015 12:09:45 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-4/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h4 id="phase-4"&gt;Phase 4&lt;/h4&gt;&#10;&lt;p&gt;In my opinion, this is where things start to get tricky. In this phase, it is not enough to simply understand the assembly. Some pattern-recognition will be required. As usual, let&amp;rsquo;s start by taking a look at the code for this phase&amp;rsquo;s function to see if we can find a vector through which to understand what&amp;rsquo;s happening. I&amp;rsquo;m going to do so by running gdb with a test string and using disas:&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 3</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-3/</link><pubDate>Wed, 07 Jan 2015 12:09:45 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-3/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;By now you know the drill. Off to our objdump file!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://zpalexander.com/images/binary-bomb/phase-3-objdump.gif" alt="Phase 3 object dump"&gt;&lt;/p&gt;&#10;&lt;p&gt;Woah. There are a lot of conditionals here. Maybe you’re an IA32 warrior who can take one look at this code and immediately tell what is going on, but for the rest of us, an iterative approach might work better here.&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 2</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-2/</link><pubDate>Tue, 06 Jan 2015 06:48:00 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-2/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Ok, now things get a lot more interesting a lot more quickly. Let’s get started the same way we did last time, by looking at our objdump file for clues:&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Phase 1</title><link>https://zpalexander.com/posts/binary-bomb-lab-phase-1/</link><pubDate>Mon, 05 Jan 2015 12:09:45 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-phase-1/</guid><description>&lt;p&gt;A note to the reader: For explanation on how to set up the lab environment see the &lt;a href="https://zpalexander.com/posts/binary-bomb-lab-set-up/"&gt;&amp;ldquo;Introduction&amp;rdquo;&lt;/a&gt; section of the post.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re looking for a specific phase:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-1/"&gt;Here is Phase 1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-2/"&gt;Here is Phase 2&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-3/"&gt;Here is Phase 3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-4/"&gt;Here is Phase 4&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-5/"&gt;Here is Phase 5&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://zpalexander.com/posts/binary-bomb-lab-phase-6/"&gt;Here is Phase 6&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;Phase 1 is sort of the “Hello World” of the Bomb Lab. You will have to run through the reverse engineering process, but there won’t be much in the way of complicated assembly to decipher or tricky mental hoops to jump through. To begin, let’s take a look at the &lt;code&gt;&amp;lt;phase_1&amp;gt;&lt;/code&gt; function in our objdump file:&lt;/p&gt;</description></item><item><title>Binary Bomb Lab :: Set Up</title><link>https://zpalexander.com/posts/binary-bomb-lab-set-up/</link><pubDate>Sun, 04 Jan 2015 12:09:42 -0800</pubDate><guid>https://zpalexander.com/posts/binary-bomb-lab-set-up/</guid><description>&lt;p&gt;The first step on your way to getting through the bomb lab will be setting up your environment. This page will assume that you have decided to do the lab for fun and profit. If you are a student, you’ve probably already been given these materials by your professor. Get to work.&lt;/p&gt;&#10;&lt;p&gt;You can find all the necessary files on the &lt;a href="http://csapp.cs.cmu.edu/public/labs.html"&gt;“Lab Assignments” page of Bryant and O’Hallaron’s website&lt;/a&gt;, or you can download all the pieces individually.&lt;/p&gt;</description></item><item><title>10 Tech Movies To Get You Coding Again</title><link>https://zpalexander.com/posts/10-tech-movies-to-get-you-coding-again/</link><pubDate>Tue, 30 Dec 2014 23:43:50 -0800</pubDate><guid>https://zpalexander.com/posts/10-tech-movies-to-get-you-coding-again/</guid><description>&lt;p&gt;Every creative person goes through phases where they question their commitment to their work, and software developers are no different. Maybe a recent project failed, maybe a simple app turned into a beast, or maybe you&amp;rsquo;ve been up to your eyeballs in debugging for weeks and you&amp;rsquo;re wondering, &amp;ldquo;Why do I do this again?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;During these times of disrelish, we tend to forget about the spark of excitement that got us coding in the first place. We become so focused on the excruciating details of whatever issue we&amp;rsquo;re fighting with that we fail to see the magic we create when we write software.&lt;/p&gt;</description></item><item><title>You Can't JavaScript Under Pressure</title><link>https://zpalexander.com/posts/you-cant-javascript-under-pressure/</link><pubDate>Sun, 20 Jul 2014 18:50:00 -0700</pubDate><guid>https://zpalexander.com/posts/you-cant-javascript-under-pressure/</guid><description>&lt;p&gt;A fun little Javascript game was forwarded around my office recently, and I had a great time revisiting my elementary programming skills while defeating each of its levels. It’s called &lt;a href="http://games.usvsth3m.com/javascript-under-pressure/"&gt;“You Can’t Javascript Under Pressure”&lt;/a&gt;. I would recommend that everyone take the next 10-30 minutes out of their life to check it out.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="http://games.usvsth3m.com/javascript-under-pressure/"&gt;&lt;img src="https://zpalexander.com/images/you-cant-javascript-under-pressure/Screen-Shot-2014-07-19-at-19-25-24.png" alt="Game screenshot"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;While I found the game relatively easy, I figured it might be nice to share my solutions with the web. This game is great practice for the elementary-level software developer, and working through tough problems with a cheat sheet can be an excellent way to learn new topics. Even if you don’t need any help solving these problems, it can always be fun to see solutions that are different than your own. So, without any further ado, here are my solutions to each of the 5 levels:&lt;/p&gt;</description></item><item><title>My Take on the Bullet Journal</title><link>https://zpalexander.com/posts/my-take-on-the-bullet-journal/</link><pubDate>Sat, 28 Jun 2014 15:32:26 -0800</pubDate><guid>https://zpalexander.com/posts/my-take-on-the-bullet-journal/</guid><description>&lt;p&gt;My memory is terrible. It always has been. When left to my own devices, I forget names, addresses, appointments, book titles and pretty much everything in between. As such, I’m always looking for a better way to keep my thoughts organized. I’ve tried a variety of organizational methods to combat this problem. As a student, I used to keep a daily agenda where I would religiously write down my assignments and due dates. This kept me well-organized, but I always felt limited by the finite amount of space the planner gave me for each day. The pre-designed boxes left no room for notes, thoughts or events. There was no way for me to easily remember the title of the obscure film I had heard about that day, or take notes on the interesting computer science concept I had just stumbled across.&lt;/p&gt;</description></item><item><title>In-Browser Text Editor Hack</title><link>https://zpalexander.com/posts/in-browser-text-editor-hack/</link><pubDate>Sat, 07 Jun 2014 15:30:34 -0800</pubDate><guid>https://zpalexander.com/posts/in-browser-text-editor-hack/</guid><description>&lt;p&gt;Here’s a neat little hack.&lt;/p&gt;&#10;&lt;p&gt;Have you ever needed a place to write something down, only to realize you don’t have a piece of paper around? Have you ever fumbled to open your native text editor, only to forget the great idea or the telephone number you just had in your head in the process? This hack will create a simple text editor in your browser that you can bookmark and pop open whenever you need. Set it on your bookmarks toolbar and you’ll find yourself using it all the time.&lt;/p&gt;</description></item></channel></rss>