• Satoru Iwata Is My Role Model

    How the former president of Nintendo became one of the business leaders I looked up to.
  • My New Website

    I rebuilt my personal website using Angular Material.
  • My Mom’s Retirement

    Thank you for four decades of service as a nurse
  • Docker and Backblaze

    How to prevent your containers and images from being backed up
  • Takeways From My First Plus/Delta Meeting

    What do my teammates think about my work?
  • How Mike Tomlin Handles Roster Cuts

    The ways a coach demonstrates leadership skills when making a difficult decision.
  • Jekyll on Docker

    Transitioning from VirtualBox & Vagrant to docker-compose
  • Mergesort

    If you’ve stumbled upon my blog and you’re applying to one of these positions on my team, you’re in luck! I’m one of the interviewers and I’ll use this opportunity to help you out in the interview process.

  • Random Facts I Found While Reading Smartcuts

    Here are tidbits I jotted down while reading
  • Learning Time Roundup: August 2021

    Programming articles I found this month
  • Bye, JJ

    Saying goodbye to another teammate
  • Using `sort` and `sort_by` on Ruby Arrays

    A comparison of two native sorting methods, plus cryptic errors that are difficult to debug
  • One Year of Weekly Blog Posts – The Streak Ends Today

    Today marks the 55th straight week publishing a blog post, starting with No Bad Teams, Only Bad Leaders last June. This means I’ve been doing this for over a year.

  • Elsewhere in the Universe: Hey That Was Me Edition (June 2021)

    In this final entry, we explore memes, nostaligia, and memes about nostalgia.
  • Coding Wins: June 26, 2021

    A refresh on coding in Angular, and other lessons learned this week
  • Coding Wins: June 19, 2021

    This week I highlight a couple of the ways I’ve reorganized the test code for my application’s Rails controller.
  • Use Ruby's Splat Operator to Test Presence of a Randomly Generated Array

    How to check for an array of arbitrary length in Rspec
  • How to Properly Mock a Class in Rspec

    A tip on writing better tests
  • Elsewhere in the Universe: Let's Get Physical Edition (May 2021)

    May's entertainment recap, plus a few exercise tips
  • Productivity Hack: Skip Twitter’s Home Feed

    Whenever I post on Twitter I want to spend as little time on the platform as possible. It goes without saying that it’s a huge timesink reading all of the conversations that appear on my feed. That’s even before taking “doomscrolling“ into account, and I don’t want to subject myself to that anxiety either.

  • Course Recap: Developing on AWS

    Last month I took a course called Developing on AWS. It was an intermediate level course on using Amazon Web Services with live (albeit remote) lectures and labs. Instead of going over everything that was taught during that course, I’ll go over three topics explored the course.

  • Elder is Hiring!

    Ellen, once-CEO of Makr and one of my former managers, is at it again. This time she started a company called Elder, focused on elderly care technology. Currently they have a CTO and one of Makr’s frontend engineers, and Ellen secured the funds needed to expand the team even further.

  • Elsewhere in the Universe: April 2020 Remake Edition (April 2021)

    April's entertainment recap
  • Bye, Esther

    It’s happened again. Another engineer has left the team.

  • My Appearance at nyc.rb: Discussing Code Reviews

    This week I appeared on a panel for April’s nyc.rb Meetup. In this event we discussed entries from the book 97 Things Every Programmer Should Know. I was selected as one the experts and spoke about the chapter on Code Reviews.

  • Learning More About Jekyll

    When I work on this blog, most of my time is spent writing posts, leaving little room to work on the underlying platform. Fortunately, I had some extra time last week to learn more about Jekyll, the engine running this blog. Here’s a summary of the changes I made to the blog’s functionality.

  • Elsewhere in the Universe: TERF Wars Edition (March 2021)

    On this month’s recap: an anime series (not live action), video games (still not live action), Triple J’s Like a Version (more live than live action), and an author’s personal vendettas (too real).
  • How to Run a Stand-alone Angular App in Docker for Local Development

    My website hasn’t been worked on in three years and it’s horribly outdated. A lot has changed in that time gap, including a change of employers. It doesn’t even link to this blog! The site’s due for a refresh.

  • Ten Years as a Software Engineer

    After reminiscing on a dark moment in my life, I want to take a change of pace and celebrate a different part of my career. The very beginning.

  • My Last Days at Makr, Two Years Later

    March 8, 2019 was the last day I worked at Makr, the startup that I was a part of for years. It’s always a downer sticking around for a dying company’s last days, spending the last month or so shutting down our application piece by piece. This also marked the end of an era for me. Sure, I worked on Makr for six years, but if you follow the path I took getting to that point you’ll realize the startup’s origins go even further back.

  • Blogging With My Coworkers

    This section was originally going to be a part of last month’s content roundup, but I felt like it was large enough and important enough to move into its own feature. Without further ado…

  • Content Spotlight: Super Bowl Edition (February 2021)

    In this segment I share interesting things I find on the Internet. Some of this stuff is related to engineering, but this segment is not restricted to that topic. It is mostly a break from the usual tutorials and essays, and it’s also an opportunity to reveal more about what I am like as a person. Expect posts like these to appear once a month.

  • Bye, Inhak

    I’ve had to say goodbye to a teammate twice since I’ve had my current job, and it’s been about a year since the last time this happened. I was hoping I wouldn’t have to do this again for a while, but alas our squad had another departure this week.

  • Levels of Login Literacy

    During the holidays I helped a relative set up his new tablet. He needed an account on the device’s App Store in order to install Facebook Messenger. I tried to create an account using his email, but he didn’t remember what his email address was. Without that information I didn’t think he would be able to recover his account in case he got locked out for any reason. So instead, I created a burner account and stored the credentials on my password manager just so he can download the app.

  • Content Spotlight: January 2021

    In this segment I share interesting things I find on the Internet. Some of this stuff is related to engineering, but this segment is not restricted to that topic. It is mostly a break from the usual tutorials and essays, and it’s also an opportunity to reveal more about what I am like as a person. Expect posts like these to appear once a month.

  • 2020: I Failed to Be an Ally in a Pivotal Moment

    Welcome 2021! In lieu of a New Year’s Resolution I want to spend time to reflect on the course my life has taken and explore how I could’ve handled situations better. Over the next few weeks I’ll go over one mistake I made each of the past five years that hurt my career or other aspects of my life. I’ll describe what led me to the incident, how it affected me in the short term, and how it impacted me in the long run.

  • 2019: I Overcommitted

    Welcome 2021! In lieu of a New Year’s Resolution I want to spend time to reflect on the course my life has taken and explore how I could’ve handled situations better. Over the next few weeks I’ll go over one mistake I made each of the past five years that hurt my career or other aspects of my life. I’ll describe what led me to the incident, how it affected me in the short term, and how it impacted me in the long run.

  • 2018: I Let Personal Finance YouTube Channels Take Over My Life

    Welcome 2021! In lieu of a New Year’s Resolution I want to spend time to reflect on the course my life has taken and explore how I could’ve handled situations better. Over the next few weeks I’ll go over one mistake I made each of the past five years that hurt my career or other aspects of my life. I’ll describe what led me to the incident, how it affected me in the short term, and how it impacted me in the long run.

  • 2017: I Almost Started a Sports Bar (and Put My Friend in Financial Trouble)

    Welcome 2021! In lieu of a New Year’s Resolution I want to spend time to reflect on the course my life has taken and explore how I could’ve handled situations better. Over the next few weeks I’ll go over one mistake I made each of the past five years that hurt my career or other aspects of my life. I’ll describe what led me to the incident, how it affected me in the short term, and how it impacted me in the long run.

  • 2016: I Kept My Return to Game Development a Secret

    Welcome 2021! In lieu of a New Year’s Resolution I want to reflect on the course my life has taken and how I could’ve handled situations better. Over the next few weeks I’ll go over one mistake I made each of the past five years that hurt my career or other aspects of life. I’ll go over what led me to the incident, how it affected me in the short term, and how it impacted me in the long run.

  • Content Roundup: Best of 2020

    In this segment I like to share content I run into that’s not related to work. It’s not just a break from the usual engineering fare, it’s also an opportunity to reveal more about who I am as a person. Usually I’ll post things from creators I want to promote but sometimes I’ll share things I’ve made as well.

  • Blog Post Thumbnails on Feedly

    I use Feedly as my news aggregator, and I subscribe to my own blog on Feedly to see how it appears on the platform. I don’t always include images with my posts, but I’m excited whenever this causes a thumbnail to appear on the feed. I’ll talk about a situation I’m investigating where a blog post contains images but doesn’t show a thumbnail in the preview.

  • How-To: Get Other Countries’ Holiday Calendars to Appear on Microsoft Outlook

    In last week’s post I wrote about adding other countries’ holidays to your Google Calendar, a tool to help stay in sync with your international colleagues. This time I’ll attempt to do the same for users on Microsoft Outlook. For people on Windows computers it’s pretty simple but for Mac users…well, read on.

  • How-To: Get Other Countries’ Holiday Calendars to Appear on Google Calendar

    Many engineers interact with people in other countries, whether they are coworkers, vendors, or clients. One challenge that is often faced is finding when your international colleagues are available. Holidays are different in each country and must be kept in mind; tension may form if an employee is out on holiday in one country and is needed by teammates who are still working in another part of the world.

  • Content Roundup: November 2020

    This month’s spotlight is all about Betterment’s product blog. It’s fun to see what other companies are up to and find out what they’ve done to improve their product over time. Let’s see what they’ve accomplished recently.

  • Always Build the Naive Solution First

    As my manager remains on parental leave, I regularly revisit his past blog posts to make sure the team follows our established procedures and that these procedures achieve their intended goals. I reread my manager’s article on writing user stories and one part caught my eye:

  • Getting Acquainted With JSON API

    Recently, my manager suggested using jsonapi-rb for serializing responses in our Rails application after he learned that the Active Model Serializers gem was no longer actively maintained. At first I first I thought this change was inconsequential, since it sounded like all we had to do was change libraries. However, I learned what the upgrade entailed the hard way when I helped a teammate diagnose an error in our frontend. The UI code expected the fields of a record to be present in specific locations, but our new serializer formatted our API responses into a structure the program couldn’t recognize. After reading about the jsonapi-rb gem I found out this is the intended behavior, as it conforms to a web standard called JSON API. I have mixed feelings about conducting the migration haphazardly, but I’ve found my own reasons to accept the change.

  • Reading List: RESTFul API Best Practices

    For years, good API design was something I had clamored for. This desire originated when my previous employer Makr was acquired by Staples and sent engineers to replace the ones who left prior to acquisition. Unlike their previous counterparts, this new batch had a little bit more experience developing and using APIs. However the newcomers had trouble using and updating our backend, not for a lack of smarts but because it was cumbersome figuring how to authenticate, how to list entities, and how to take actions on those entities.

  • Content Roundup: October 2020

    A format I’m experimenting with is a compilation of things outside this blog, whether they’re projects I’m working on or content found elsewhere on the Internet. Expect posts like this to arrive once each month.

  • My Quest for Elegant Code

    I want to write code that is easy to read, easy to understand what is it does, and easy to integrate into a larger application. That’s what I want to be known for in my career, and that’s the legacy I want to leave for the companies I work for. Even better if I can also pass that skill on to my teammates.

  • My Video Game Predictions from 2005: How Accurate Were They?

    In last week’s post, I shared the predictions I made in 2005 on how the video game industry would evolve. Now, let’s take select excerpts and see how these predictions held up. Without further ado…

  • My Video Game Predictions from 2005: The Original Text

    In 2009 the gaming news site Gamasutra held a competition called “Games Of 2020” where entrants envisioned a game that would be played in the year 2020. Some of the predictions were surprisingly accurate and were made into reality over the course of the following decade. Among the highlights:

  • Content Roundup: September 2020

    A new format I’m experimenting with is a compilation of updates on projects outside of this blog. Expect posts like this one to arrive once each month.

  • Ruby Discourages Private Class Methods

    Ruby is an object-oriented language. As such, applications written in Ruby consist mostly of operations performed on objects. Even primitive values like integers are objects in Ruby. One may want to transition to a pure functional approach to programming, but aspects of this language limit one’s ability to do so.

  • Refactoring: Replace Conditional with Polymorphism

    At NYU I took a course called Production Quality Software, which was taught by an engineer at Google. While I took the class before I programmed professionally, it served as a foundation on how I approached software development throughout the years. The course taught me several software engineering practices such as refactoring, the act of making code easier to read without changing its functionality.

  • Future Content Plan

    When I started this blog I wasn’t sure what to put here or how often to post content. Recently, I committed to a weekly schedule when I ran a series of posts on the book Extreme Ownership. Now that I’m done with that project, I plan to continue posting weekly with different types of content.

  • Discipline Equals Freedom – The Dichotomy of Leadership

    Happy Labor Day, and welcome to the conclusion of my series on Extreme Ownership! For the past three months I’ve been taking a chapter from the book Extreme Ownership and reflected on how the principles in the book were exemplified (or should’ve been exemplified) in my past experiences. I’ve learned lessons on what it takes to be a good leader, and I hope my readers can learn some as well. Here’s the list of previous posts in case you missed them:

  • Decisiveness amid Uncertainty

    This is part eleven of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part 8 Part 9 Part 10

  • Leading Up and Down the Chain of Command

    This is part ten of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part 8 Part 9

  • Plan

    This is part nine of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part 8

  • Decentralized Command

    This is part eight of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7

  • Prioritize and Execute

    This is part seven of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5 Part 6

  • Simple

    This is part six of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4 Part 5

  • Cover and Move

    This is part five of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3 Part 4

  • Check the Ego

    This is part four of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2 Part 3

  • Believe

    This is part three of a series on Extreme Ownership. View the previous parts if you haven’t already: Part 1 Part 2

  • No Bad Teams, Only Bad Leaders

    This is part two of a series on Extreme Ownership. View Part 1 if your haven’t already.

  • Extreme Ownership

    Last year Publicis Groupe acquired the marketing technology company Epsilon, and as part of the deal Epsilon would own the product I’m working on (now called Epsilon PeopleCloud). In February Brian Trevor, the Senior VP of R&D, visited the Groupe’s New York office to present his plan for the future of PeopleCloud. More importantly, he also shared details about his management style and the leadership team he organizes to explore how his teams can be run more effectively. Brian Trevor hosts a book club in his leadership team, and recently they went over the book Extreme Ownership.

  • Do I Just Have a Different Skillset?

    I initially had a couple of projects in the works that would become the topic of upcoming posts. However, I heard a tidbit from last week’s episode of Daniel Miessler’s podcast Unsupervised Learning that I chose to use as a conversation starter instead. From the 16:19 mark:

  • Our LinkedIn Connection Needs to Mean Something

    In my previous post, I gave readers a link to my LinkedIn account and invited them to connect with me on the social network. While I’m usually open to connection requests there’s a specific type of request I decline on a regular basis, which I’ll describe later.

  • Bye, Kajal

    So Friday was my coworker Kajal’s last day. Aside from myself, she was the only senior engineer on our team. We worked on different initiatives, but she was always helpful whenever she had to intervene. Kajal will be returning to the west coast where she’ll be closer to family.

  • I Just Added Google Analytics to This Blog

    I’ve already added Google Analytics to my main site to see if people are visiting, but I haven’t done so on this blog until now. There’s already a fine guide on Desired Persona on adding GA to your GitHub Pages site, but it your site runs on the Minima theme adding Google Analytics is even easier.

  • Setting Up a CDN on CloudFront

    A content delivery network, or CDN, is a useful method of delivering web content to your users. They are designed to solve several of a website’s perfomance issues, such as being able serve multiple users simultaneously.

  • Putting Your GitHub Pages Site on a Custom Domain

    GitHub Pages is a very convenient service. If you’re a programmer you can create a static website as a code repository on GitHub and GitHub will host the content for you. Moreover, with the Jekyll framework you can write a blog using plaintext files instead of having to sign up for a blogging service or pay for a database. All you need is experience writing Markdown and just enough familiarity with Ruby on Rails to run Jekyll on your computer.

  • DD64 Codes is Now blog.dandelarosa.net

    Happy New Year everyone! It’s been a while since I contributed to this site, and my plan for 2020 is to add more content. Here’s what I have lined up:

  • Bye, Lily

    So today was my coworker Lily’s last day. I haven’t been on the squad for very long but I’ve been pairing with her for the past two weeks to learn the ins and outs of our system. It’s evident she knows her stuff and it’s pretty clear she was heavily involved in our product’s development, which is impressive for someone early in her career. She’ll be a valuable asset wherever she ends up.

  • Using Vagrant for Local Development

    When I interviewed for my current job I traded notes on engineering practices with my future manager. Test Driven Development was a process he wanted his squad to adopt, and to demonstrate the merits of TDD he wanted to show the codebase’s test coverage (my new squad had over 90% code coverage, while my old team struggled to get around 30%). The tests failed to run due to a bug in one of the database libraries installed on my manager’s Mac, and we couldn’t find a solution since all of the troubleshooting articles we found were written for other UNIX-based operating systems.

  • Time to Be a Grownup With a Grownup Job

    Imagine this scenario: the night before you launch your app your team finds a blocker on the site’s checkout flow. They can’t continue to the next page because of a CORS error. I was an iOS developer; I did some backend and I wrote HTML code as teen but I had no clue how to tackle a browser-side issue like that. Our intirim VP of Engineering coded the web portal and should’ve been there to take care of it but he flew out on vacation with his fiancé that week. He booked the trip in advance and we were supposed to launch back in July, but of course you can’t roll out a brand-new ecommerce platform in three months, and somehow we OK’d moving the launch date to when he was away. We couldn’t delay the launch again because we had a Wired article say the app would be out tomorrow.