By: Joshua Go
The story is familiar to any young company fortunate enough to survive and thrive beyond its early years: build fast, find a way to get things done, and jump on opportunities before the market moves on.
This mode of operating works for years, until it doesn’t. And when it doesn’t, building isn’t fast anymore. Getting things done somehow feels much harder than it used to. All the opportunities that worked out and made you successful? Those became your core business, which means more systems to keep running, and it sure doesn’t help that you had to make a bit of a mess along the way. …
By: Regis Wilson
Webpack can be used to bundle assets for websites so that browsers can load resources at runtime to display data. There are many things that Webpack can do for you, including the following:
This GitHub page includes a subset of the most popular and “awesome” loaders and plugins available for Webpack, to give you a flavor of what’s available.
The difficulty for anyone who isn’t an expert in Webpack is to understand what it does, what it’s capable of doing, and how to apply it to what you’re doing, and to find the correct magical incantations that are required to make it work the way you want. …
By: Regis Wilson
A common pattern for serving static content using Amazon Web Services (AWS) is to use CloudFront to deliver content from Simple Storage Service (S3). This pattern is quick and convenient for getting static assets published and viewed on the internet. However, there are some deeper issues and technical problems needing solving that are hidden from view with this naive approach.
During a recent project, in which we tried to increase the performance of our landing pages, we discovered some strange problems with the way images are hosted for our site. Read on for more details about how we found the issue and subsequently solved it. …
By: Regis Wilson
At TrueCar, we spend a lot of time making sure our pages look attractive and display information cleanly and clearly. Most of our engineering time is spent making sure our web pages have the most useful content available, look great and are intuitive to use. We have a solid development platform and cloud infrastructure that delivers pages quickly and effectively. However, there are some glaring spots in our site where pages render slowly or perform less than optimally on mobile connections.
We are working with a new set of initiatives toward creating useful and beautiful landing pages, with great consumer information for browsing and comparing cars and trucks. These pages will help consumers find more information about the cars and trucks they are interested in. Some of these pages have required gathering larger amounts of data than we had previously worked with in building our site. Some of these new pages, those that incorporate data in the form of reviews and long lists of options, are accessed relatively infrequently, while still containing important information for users. All of this meant that our page load times, in some cases, were longer than a few seconds. …
By: Jesse Mandel
While “build your existing datacenter in the cloud” shouldn’t ever be your long-term solution, sometimes there are reasons to lift and shift. AWS Server Migration Service easily moves servers to the cloud so you can continue your data center shutdown plan and tackle some of the legacy systems later.
When TrueCar decided to migrate from a self-managed data center to AWS, we decided to take the time to rewrite everything in the cloud instead of just moving our servers. TrueCar is not a simple system, but it was easy to see the path: take a bunch of APIs that power truecar.com, dealer tools, and many partner sites and rewrite them into a new scalable monolith API. Similarly, write a new unified UI in React that allows business logic to be reused and still allows us to provide a custom look for our partner sites. Very straightforward. …
By: Noah Matisoff
The benefits of functional programming have become well-known and battle-tested, especially in recent years, and are being adopted in languages that aren’t touted as functional programming languages.
Specifically, in Ruby, there have been many great articles and talks on how to adopt functional style, and even how to mix it with object-oriented programming. Some insightful articles can be found below that will help with prefacing the rest of this article:
By: Rohan Mendon
One of the ways TrueCar fosters its culture of creativity and innovation in the automotive marketplace is through our annual Hackathon. This 48-hour social coding event allows our Product and Technology teams to come together and build out-of-the-box ideas in a very short time. Fueled by DJs, coffee, and seated massages, 15 teams worked tirelessly over two days to produce some amazing results. Here’s a look at one of those projects.
TrueCar has been always been a one-stop site for in-market consumers looking to buy their next car, where they research cars and their prices, and connect with TrueCar Certified Dealers to make their purchase. Once consumers finish purchasing their car they typically don’t revisit the site until their next purchasing cycle, which can be 3 to 5 years in the future. Inspired by health trackers like FitBit®, this project aims to provide a valuable service to returning consumers even after they purchase their vehicles. …
By: Kyler Stole
The Spacepods CLI works closely with Spacepods, our internal build management and deployment tool. Learn more about how we manage infrastructure (in an abstraction we call Pods) in this post on Spacepods.
Much of the functionality in the Spacepods CLI was first implemented in a Slack bot. You can read about that in this post on SpaceBot.
The Spacepods CLI is a command line interface built in Ruby that interfaces with Spacepods. …
By: Kyler Stole
SpaceBot works closely with Spacepods, our internal build management and deployment tool. Learn more about how we manage infrastructure (in an abstraction we call Pods) in this post on Spacepods.
Like many companies, we use Slack for internal messaging. It works great for quick messages and sharing content with colleagues, but it is also a wonderful development environment. Slack provides the platform for Spacepods to expand and get closer to where developers spend a lot of their time. SpaceBot is a Slack app built from scratch to take advantage of this platform. …
By: Noah Matisoff
Global ordinals are the internal data structures used in Elasticsearch for pre-computing and optimizing the performance of terms aggregations. They “maintain an incremental numbering for each unique term in a lexicographic order.” Global ordinals play a significant role in the execution of terms aggregations in Elasticsearch.
An example of a global ordinal mapping can be seen below, assuming the document has a field for
make , indicating the manufacturer of a vehicle. Assuming we have many documents and five or so makes across all of them, it would look something along the lines of:
Ordinal | Field
0 | Audi
1 | BMW
2 | Honda
3 | Lexus