Eliminating Nondeterministic (“Flaky”) Tests in Ruby and RSpec

At Panorama, we strongly believe in automated tests. No code gets deployed without passing both a thorough code review and a battery of thousands of automated tests, and no code makes it through code review without updating tests for the new features it’s adding. Automated tests help us build new features and refactor old code without introducing bugs, and are a big part of the reason we are able to confidently deploy new changes to our production apps multiple times a day.

What are flaky tests?

But with an automated test suite comes the dreaded possibility of tests that fail nondeterministically—that is, most of the time they pass, but every once in a while they fail for no obvious reason. When the tests are retried, they pass again. Flaky tests.

Read More

My reflection on being the first designer at a tech startup (Letter to Julia)

Hi Julia,

Hope you had a great weekend. It’s so great to hear about your new position! (Can you share a link of your new company? Would love to check it out!) Here are some of my thoughts as the first designer in a tech startup.

Read More

Our Git Workflow

As happy git users, we love learning how other people use our favorite version control system. So, we thought we’d add to the discussion and share how we use git and other tools to drive our engineering work. We’ve been improving our git workflow for a few years, and our current solution is optimized around:

  • Easing work parallelization
  • Communicating who’s working on what
  • Allowing us to prioritize tasks
  • Allowing external stakeholders to view task progress
  • Preventing us from deploying un-QA’d code
  • Creating a clear path for engineers to take their tasks through the pipeline of development, testing, QA, all the way to production without blocking on work from others

We’ve been pretty satisfied with our setup – check it out, and let us know what you think!

Read More

Designing educational products with emotions

What is unique about designing for educators?

A new team member asked this question during her recent design on-boarding session at Panorama Education. This isn’t an easy question to answer. Just as there’s no perfect architecture for a building, it is difficult to define one single design that solves every problem for teachers and principals.

Read More

Support Engineer: Experiments & Learnings

Each year Panorama Education helps thousands of teachers, principals and school administrators across the country to gather feedback from their stakeholders in a several different ways. Our relatively small engineering team (we just hired our 10th engineer!) strives hard to make sure that it is not only a great experience for millions of students who take our surveys but also a delight for schools and districts to gather and analyze feedback. With ever-increasing engineering needs, teams in a growing startup like ours often have to balance product development with operational and support-related tasks. And one of the ways we address this at Panorama is by a weekly support engineer rotation process.

Read More

Generating PDFs From Webpages With A Large Number Of Graphs

When we generate survey reports for clients, along with online reports with interactive graphs we also generate PDFs that clients can print out and share. Converting our online reports-each of which sometimes has several hundred graphs spread across multiple pages-to PDFs has been an interesting challenge.

Read More

What I’ve learned after half a year of working remote

Early last year my wife and I got the great news that she had been accepted for a research fellowship at the NIH in Bethesda, MD. Although very excited for the opportunity, that unfortunately meant that we had to move down there and leave Boston. At the time I had been working for Panorama for just a few months, but it was definitely enough time for me to get hooked with the company’s mission, its energy and above all my coworkers who I already called friends.

It has been over half a year now since I went remote, and with the new year I feel it’s time for a little retrospective.

Read More

Ruby Gem – ExternalFields

ExternalFields

We recently released a rails gem called ExternalFields (Github). As the name suggests, this gem allows you to create the illusion that an object has specific attributes when those attributes actually belong to an associated object. This is particularly useful for different classes within a single-table inheritance table to have access to separate fields in class-specific associations. In addition, this gem gives us more power than standard Ruby/Rails built-in delegation methods by automatically creating necessary objects and associating them.

Read More

How we added accessibility to our web app

We recently held our Fall Hackathon where all teams at Panorama take a 24-hour period to collaborate across the whole company to hack on great things. Many of our Hackathon projects are outside of our day-to-day work, would move Panorama’s efforts forward, or just solve that nagging problem that you just hadn’t gotten around to yet. For the four of us (1 engineer, 2 account managers, and 1 director) on Team A11y, we focused on the accessibility of our product.

Accessibility here refers to the design of products, devices, services, or environments for people with disabilities. Our products are used by students, families, and educators around the world, and we need to be able to serve every user as equally as we can. Fortunately, there are some initiatives in the tech world that provided us a lot of guidance and helped to shape our thoughts on how to approach this, in particular: the a11y project and W3C’s guidance on accessibility.

Read More

A Homemade Distributed Computing Project

One of the things that gets me really excited is making the world a better place. As an engineer, I’m often in the mindset of automating as much as possible. But can we automate making the world a better place?

Read More
1 2