HalfStack is a series of tech conferences focused on half of the web development stack – specifically, the part you interface with. It lives up to its claims of being “an authentic, high value experience for attendees and sponsors focused on UI-centric JavaScript and web development.”

Friday, January 17, 2020 Alamo Drafthouse, Chandler, Arizona

The morning got off to a great start with comfortable seating and fine dining at the Alamo Drafthouse in Chandler. First up was Alex Blom talking about “Hacking loops and programmatic patterns into age of empires.” Despite having nothing to do with JavaScript or front-end development, this was a captivating and relevant talk. Alex talked about his experience with the Age of Empires mapping community. Creators wanted to tell stories and provide event-driven experiences. When faced with limitations in the map editor they came up with creative (and cumbersome!) hacks to provide basic programming paradigms like loops, conditions, events, and an admin interface. Lately there’s been renewed optimism about the rise of “No Code,” and I think Alex’s talk was a good reminder that while we have been building “No Code” development tools for decades, the better they get the more demanding we get, ensuring the need for programmatic interfaces for many years to come. The map editor Alex and other creators were using was a very sophisticated “No Code” tool, but once you put it in the hands of creators they want to do more than the tool’s designers ever imagined. My takeaway: keep developing creative tools, but don’t depend on a tool as the whole solution; keep your project open to programmatic extension and enhancement.

Emma Brillhart gave some practical advice for “Communicating through code.” Thoughtful choices of technologies, tools, and coding practices can improve the readability of code, speeding up the onboarding process, enabling developers to work across a broader variety of your organization’s projects, and making ongoing maintenance easier.

After Emma we heard Jacque Schrag talk about “Getting sassy with pixel art.” This was a fun talk about stretching CSS and Sass beyond their original intentions to create single-element pixel-style art. As processing power increases tremendously and physical pixels shrink, pixel art is a disappearing art form, but it still has its fans, and it turns out you can create complex pixel art images with a single DOM element and some tricky CSS. Coming off the heels of Alex’s talk I appreciated this talk demonstrating how you can explore outside the intended boundaries of a technology when you have programmatic access. Another common thread between these two talks that struck me is the importance of play in learning.

Charlie Gerard gave a fascinating talk on “Exploring the hidden potential of sound data.” This talk launched another common theme that carried through the rest of the day: you can probably do more with JS than you realized! Charlie gave a very cool demonstration and discussion of using the Web Audio API (MDN) to capture ambient sound and TensorFlow.js to train AI models to identify sounds like background conversation, water falling from the shower, or a person brushing their teeth. This opens up the potential for software to know more about the context of the physical environment and adapt its behavior accordingly.

At this point we had a great lunch break with the delicious food served at your seat from the kitchen of the Alamo Drafthouse. Lunch included enough time to walk around and speak with people, which was great since we had a great group of local developers, as well as people from all over the world with experience at Mozilla, Google, Microsoft, and more. I really appreciated that HalfStack creates a nice mix of local and non-local speakers for each of its events rather than just flying the same speakers from city to city around the world.

After lunch, in “Raise your voice,” Chris Heilmann talked about the progress we’ve made over the past two decades in web technology and developer tools. Key to that progress has been not only developers speaking up about what they need, what’s working, and what isn’t, but also the organizations that are developing tools to gathering usage and effectiveness data to determine which features will have the greatest impact.

Bekah Rice talked about “Coding accessibility: Best practices from the front lines.” It’s great to see technology becoming more and more accessible, but we’ve still got a ways to go. Bekah gave some solid advice on implementing and testing accessibility, and motivation for doing so:

  1. Be nice.
  2. Expand your audience, increase revenue.
  3. Avoid getting sued! (#DominosLawsuit)

A personal favorite of mine was “What developers can learn from Soviet space program failures” presented by Andrey Sitnik. Despite including no discussion of programming languages or techniques, Andrey provided some very solid advice for developing reliable and effective software:

  1. Learn from user “mistakes” and make the software easier for users.
  2. Always file issues for software defects to avoid making the same mistakes.
  3. Take advantage of automation to ensure accuracy and relieve humans from repetitive tasks.

While I’m giving you these points up front, part of the fun of Andrey’s presentation was that he prefaced each one with a relevant story from challenges in the Soviet space program. These are solutions to the general problem of handling complexity, they are not software-specific. The high-stakes environment of space exploration really drives home the importance and simplicity of these insights. The software-specific examples given (and demonstrated in use in Andrey’s excellent PostCSS project) are:

  1. Provide helpful error messages that explain why something went wrong and what the user could try instead.
  2. Use an issue tracker for your project.
  3. Use a linter (and/or formatter) for code consistency and quality.

The theme of “Wow! You can do that in JS?!” carried on with several talks related to Virtual Reality and Augmented Reality. Andrés Cuervo presented a novel VR experience for drawing in 3D, Paul Shannon shared some poignant insights into what stages a technology goes through before it becomes ubiquitous and how VR is progressing along that path.

Mica Alaniz brought us back to somewhat normal reality for a bit with the story of “How a decade old joke became a serverless inconvenient baseball empire.” She takes us back over a decade to the conditions and motivations for creating isthereacubsgametoday.com, how low-tech it started and how it evolved over time to cover more teams and expanded to the current group of domains including isthereagame.today. With zero marketing or SEO effort the site grew in popularity and search ranking for the simple reason that it met a common need, and did so efficiently and effectively.

Jyoti Bishnoi brought the audience back into virtual reality to discuss “Rethinking game controllers in Augmented Reality – No touching!” She and her partner engaged the audience to demonstrate some novel gesture-based interaction techniques with no physical controller to provide rich AR experiences.

Every time I meet Luis Montes he is doing something playful and creative with new Web APIs, so it was no surprise that in “Stranger things than Web Bluetooth” he demonstrated a retro wireless communication technique with similar transfer rates to early 90s modems: QR codes! He successfully demonstrated data transfer from the screen of a computer rapidly displaying QR codes to his phone using its camera to read the QR codes and then decoding the data.

Coming close to the end of the day Niels Leenheer gave some great demos of “JavaScript on microcontrollers.” Microcontrollers have long been regarded as requiring more resource-efficient low-level languages, but Niels demonstrated some low-cost devices that can run JavaScript natively. The magic really came alive when he paired a web UI to a microcontroller using the Web Bluetooth API and was able to dynamically control LED light strips and even a motor-powered Lego vehicle.

Rene Rubalcava demonstrated an interesting accompaniment to data visualization in “Listening to maps.” With some creative use of the Web Audio API, some demographic data, and mapping APIs we experienced auralizing (or auditing) data. In addition to the common colored overlays on the map and information on hover, we could hear changes in the data as the music was played with a varying tempo dependent on characteristics of the data set!

Dylan Schiemann brought the talks to a close with a modern Progressive Web Application with audio, animations, and a 100/100 Lighthouse score that the audience all loaded on our phones and laptops to vote for top hacker between Trinity and Acid Burn. The night was topped off by a pub quiz with some very challenging web-related (mostly) questions and a private showing of the classic movie “Hackers”!

15 great talks in a single day! Be sure to check out the HalfStack Phoenix website to catch the recap and session videos, and attend one of the 7 HalfStack conferences near (or far from!) you.