thoughtbot
thoughtbot
Blog Post
  • thoughtbot is a consulting company that designs and develops software for our clients. We’ve also invested our own time to create, improve and support products that come out of our consulting work, like Upcase, Hound, FormKeep and FormLinter. We built FormKeep to be an easy-to-use cloud database that gives developers and web designers a simple way to capture, store, and share data collected from ...

thoughtbot
thoughtbot
Blog Post
  • It’s common to host a blog on wordpress.com, wpengine.com, or to use a self-installed blog on AWS or Heroku. If you have the option of hosting your blog on https://blog.example.com, please just do that and stop reading now. It’s much easier. But if you’re familiar with terms like SEO, “link juice”, or “google juice”, and someone is telling you that it’s better to host your blog in a subdirectory i...

thoughtbot
thoughtbot
Blog Post
  • As an agile product consultancy, we often have to make adjustments to team sizes to accommodate new clients and optimize current teams. Our current scheduling process gets the job done, but it has its problems. In our offices we have several people doing sales and scheduling and several other people serving as directors for designers and developers. Sometimes there is overlap in those roles and s...

thoughtbot
thoughtbot
Blog Post
  • Design Sprints, a five-phase process pioneered by Jake Knapp and Google Ventures, are a great way to get a team working together with a shared understanding of a problem, coming up with potential solutions, and quickly testing those ideas. We’ve found the process great for products or features that haven’t been validated. Because of the amount of new knowledge and thinking that goes into the spri...

thoughtbot
thoughtbot
Blog Post
  • Ruby and Elixir make it fun to write beautiful code, but I still see bugs in production that could have been caught with a better type system. Rails is productive, but I quickly run into speed issues that require view caching. Then there’s Elm. It’s beautiful. Fun. But only available on the front-end. Where’s my Holy Grail! Enter Lucky, a new web framework and ORM written in Crystal ...

thoughtbot
thoughtbot
Blog Post
  • It was Startup Week here in Austin a couple weeks ago, and it was an excellent opportunity for our local team to get a better sense of the businesses that call Austin home. Our favorite events during Austin’s Startup Week were: A Startup in Government: The First Year of the City of Austin’s Design, Technology, and Innovation Fellows Program Ben Guhin and Marni Wilhite presente...

thoughtbot
thoughtbot
Blog Post
  • Elm is a programming language for building client-side web applications that compiles to JavaScript. Because it’s strongly-typed and pure, Elm provides a handy mechanism for interacting with the “unsafe world” that is JavaScript to help maintain boundaries between the two. That mechanism is ports. Why Ports? Because Elm relies on an explicit understanding of the data it describes via...

thoughtbot
thoughtbot
Blog Post
  • I recently worked on a daemon application. No web stuff in this one. It served as a sink for real-time vehicle location data. It took all that data in on a normal TCP port. While I’ve done this kind of thing before, it’s been a while, and I hadn’t done it with Elixir before. The actual mechanics of the port were simple and quite standard: Listen on a port. Accept incoming connections. Receive d...

thoughtbot
thoughtbot
Blog Post
  • Testing a scenario where an app sends an email is easy, but how do you test something random in an email, like a password reset token? When we test a function that intentionally returns random data, it’s a little tougher. In those times, we often tackle the problem by: Testing behavior and static data, ignoring the dynamic data. Using a mock to rid the randomized data, and then test everything. ...

thoughtbot
thoughtbot
Blog Post
  • I’ll be at the Release Notes Conference in Chicago this week. The conference is for the iOS and Mac development community to share our experiences, our struggles, and our victories in the face of an ever-changing software market. In addition to the conference, I’ll be at the Relay.fm live recording Sunday night. If you see me around, please say “hi”, or get in touch on Twitter or in the confer...

thoughtbot
thoughtbot
Blog Post
  • In a previous article, I showed how we can refactor messy Boolean code using enums (AKA union types). Many languages turbo charge their enums, allowing them to have parameters. These are often called tagged unions or Algebraic Data Types (ADTs). Tagged unions are a killer language feature as they allow you to expressively model problem domains and avoid some of the pitfalls of relying entirely on...

thoughtbot
thoughtbot
Blog Post
  • We’re just as excited about the most recent version of Rails 5 as you are! So much so, that we’ve created a new trail for it. Ruby on Rails has remained a popular framework for many reasons: it’s great for rapid development, there is a strong ecosystem behind it, it’s highly compatible, and it’s downright fun to use. Matt Mongeau, who leads us through this trail, has been immersed in Rails for ov...

thoughtbot
thoughtbot
Blog Post

Swift Imports

  • If you’ve been developing applications in Swift for any length of time, you’ve grown accustomed to often having one or more lines of text at the top of your file. No, I’m not talking about the Xcode generated commented-out metadata when you make a new Swift file (if you’re like me and don’t particularly care for it either, we’ve got you covered) — I’m talking about our friend the import declaratio...

thoughtbot
thoughtbot
Blog Post
  • We’re looking for a Marketing Director to join our team in either Boston or New York City to lead our marketing efforts. If you or someone you know are interested in this position, please get in touch. We believe there is always a better way to do our work, and we want to find it and share it with as many people as possible. As our Marketing Director you will be an important part of helping pursu...

thoughtbot
thoughtbot
Blog Post
  • I’ve been enjoying developing with Elm for a while. In case you’re not familiar with Elm, it’s a strongly-, statically-typed language that compiles to JavaScript. The developer experience is fantastic, largely due to the awesome compiler. Thanks to Webpacker, it’s now straightforward to integrate Elm into a Rails app. I recently worked on my first Rails + Webpacker + Elm app and I’ll talk about a...

thoughtbot
thoughtbot
SlideShare Presentation
  • An overview of the Elm language by Joël Quenneville given at the thoughtbot Boston lunch and learn on May 11th, 2016. Raw speaker notes can be found at: https://gist.github.com/JoelQ/8a4eec67ac29b6d42c9ca019ec5c295c Find more articles about Elm on our blog: https://robots.thoughtbot.com/tags/elm

thoughtbot
thoughtbot
SlideShare Presentation
  • We presented at StackUp in NYC how we work. How does thoughtbot manage to build consistently high quality software? How does thoughtbot avoid any kind of Technical Debt? We explained how every day life looks like at thoughtbot, and linked to some of our online projects where we explain it in more detail.

thoughtbot
thoughtbot
SlideShare Presentation
  • A few times now, I've been asked, "Haskell looks cool, but what should I use it for?" This presentation attempts to showcase some of the unique parts of Haskell in order to make it easier to understand why you might be interested in learning it.

thoughtbot
thoughtbot
SlideShare Presentation
  • What does geolocation mean? How about geocoding? Reverse-coding? Geospatial? Is Google Maps' JavaScript API the best service to use? How do we avoid being rate limited? Should we import a free geographical dataset to make local SQL queries upon it? When do we move from Postgres and the Geocoder gem in Rails to PostGIS? Integrating location into your Rails app brings up a number of questions. Thi...

thoughtbot
thoughtbot
Blog Post
  • React took the frontend development scene by storm a long time ago. It’s great, and made a JavaScript fan out of me. However, being just a view layer and all, it usually takes a few more parts to reach a complete solution. If you find yourself overwhelmed with property-passing down components trees and starting to lose your grip on event handlers, then Redux, a “predictable state container for ...

thoughtbot
thoughtbot
Blog Post
  • Downloading recipes I wanted to experiment with a reasonably large recipe dataset, to play around with some meal planning ideas. The trouble was, I didn’t have a dataset. No problem, I thought, there are loads of recipes on the Web—I’ll use some of those! Thanks to embedded data formats like the h-recipe microformat, and the recipe schema from Schema.org, many of the recipes publish...

Out-Market Your Competitors?

Get complete competitive insights on over 2.2 million companies to drive your marketing strategy.

Create Free Account Log in

By signing up, you agree to the Terms of Service and Privacy Policy.

Out-Market Your Competitors

Get complete competitive insights on over 2.2 million companies to drive your marketing strategy.

Create Free Account

Already a user?  Log in

By signing up, you agree to the Terms of Service and Privacy Policy.