Blog

A Look at the Tighten Crew's Battlestations
Tighten is a 100% remote company, and one of the best parts about working from home is that you're able to set up your office however you'd like. Today, we thought we'd give you a peek into the inner sanctums of the Tighten crew...
Extending Models in Eloquent
We’ve come a long way since the days of hand-writing SQL queries in our web apps. Tools like Laravel’s Eloquent ORM allow us to interact with databases at a higher level, freeing us from lower...
A Cautionary Tale of Nondeterministic Laravel Pagination
TL;DR: There's a very common pagination setup that may end up with users never seeing some of their results because of how SQL handles sorts by columns other than the index. I'll show why and how to fix...
Introducing Ziggy - a package providing Laravel Named Routes in JavaScript
Caleb Porzio and I started a podcast recently in our Tighten-provided 20% time . We call it...
Calculating distance using MySQL
On a client project recently, we had to make it easy to filter database query results based on the distance between a user and an entity in our database. It's easy to get overwhelmed in that context, worrying about the crazy amount of PHP calculations...
Testing Laravel framework contributions in a local Laravel install
Imagine this scenario: You want to contribute to the Laravel framework, whether it be an idea for a new Collection method, a string helper, or even just a small spelling fix. Naturally, you fork Laravel, pull down a local copy, and make the change you...
A Brief Introduction to Progressive Web Apps, or PWAs
If you're like me, you like to keep at the relative forefront of frontend web development, but trying to stay on the bleeding edge is exhausting. I know Vue and React and ES6; I haven't touched broccoli, next.js, or whatever else is the newest...
Laravel Tip: Bootable Model Traits
TL;DR Use bootNameOfTrait() instead of boot() in a model trait to avoid being overwritten by the base model’s boot() method. Adding behavior through a boot method Let’s say you have a...
The Inaugural Tighten Dev Battle: A Retrospective
Last week was Tighten's annual company on-site, where we bring the entire company together in one place for a few days to get to know each other, make plans for the future, and accomplish a few high-level tasks that are easier in person--for example,...
Tighten Senior Dev Battle: JavaScript Death Match
There are two issues that cause a bitter divide within the Tighten family: 1) The proper pronunciation of the word...
Supercharge Your Laravel Tinker Workflow
Laravel's command line tool is called "Artisan," and it comes with a few powerful features out of the box. Tinker, accessed via php artisan tinker, is arguably my favorite Artisan command. It speeds up my workflow and allows me...
Supercharged Static Sites: Introducing Jigsaw Collections
Last year, Tighten introduced Jigsaw, a simple but powerful static site generator based on Laravel's Blade templating engine, created by Tighten Alum Adam Wathan. We use Jigsaw to power our own site, and...
The Magic of Laravel Macros
Ever wanted a piece of functionality in a part of Laravel that doesn’t exist? Let me introduce you to Laravel macros. Macros allow you to add on custom functionality to internal Laravel components. Let’s start with a simple example on the...
Q&A With The Speakers from Laracon Online 2017
Wednesday was the inaugural Laracon Online, an online conference devoted to bringing great Laravel teaching to folks who may not be able to attend an in-person conference. Tighten co-founder Matt Stauffer spoke on...
On Being New to Tighten
Today, you get to meet two newish members of the team at Tighten: Caleb, Developer; and Marje, Operations and Content Manager. They’ll be sharing thoughts on these things: What made you apply? What met your...
How I Quit My Job at Tighten
Last week, I handed in my resignation to Dan and Matt. After three years with Tighten, I'll be moving on to work with another company. At Tighten, we always want to find new ways to improve our company. Whether we're working with people,...
UX Lessons Learned from a Snapchat Addiction
In the last few weeks, despite my inclinations to the contrary, I have become a Snapchat addict. (I have also decided to double-down on becoming a Millennial cliche by adding the term “bae” to my regular lexicon, but I digress.) In that short...
Why You Should be Giving Your Developers 20% time
About a year ago, Tighten officially implemented a "20% time" policy for its developers. This means that, on any given week, we only bill our clients for 32 hours of developer work; for the other 8 hours, developers can work on whatever...
Let the Developers Carry Your Message
Tighten loves the Cubs. Dan's a lifetime Cubs fan and he finally got me on the bandwagon this summer, and even folks in the company who weren't previously fans became fans temporarily when Dan promised the whole company a day off in the case of a Cubs...
You Might Not Need Redux
One of the best things about React is how large and vibrant its ecosystem is: there are robust libraries to help with everything from forms to HTTP requests to state management, making it far easier to build incredibly complex and scalable...
Building Your Sense of Code Smell with Mindfulness
There is a feeling familiar to many programmers. You're sitting (or standing, if you're fancy) at your desk, working on a programming problem, when out of nowhere you’re overcome with what can only be called a “weird vibe.” You start to...
A Better dd() for Your TDD
An important part of every Laravel developer's debugging arsenal is the humble dd() helper function—"dump and die"—to output the contents of a variable and terminate execution of...
Adding React Components to a Laravel Application
It's no secret that Vue.js is a favorite in the Laravel community, but what if you want to use React in a Laravel project? While Laravel isn't set up to use React...
Lambo: Quick New Application Creation with Laravel and Valet
Imagine, if you will, a web developer who, for some reason, wants to spin up a Laravel app to develop in as quickly as humanly possible. Maybe this developer wants to write a blog post about a new feature in Laravel, or wants a quick test...
Caffeine Fiends: Coffee and Tea When You Work from Home
At Tighten, if there's anything we take as seriously as our code, it's our caffeine addictions. Because we all work from home (or our own individual offices), there's no shared, decades-old office Mr. Coffee that nobody ever cleans; we are responsible...
Pair Programming at a 100% Remote Company
At Tighten, one of the ways we ensure high-quality work is to always try to avoid putting code into production without at least one other set of eyes reviewing it. While on single-developer projects this often comes in the form of a code review from...
Tools of the Trade: Software We Love (or Tolerate) at Tighten
Sometimes it's easy for us to forget just how much software goes into the process of writing software. All day long, we interact with tools that are the result of thousands of hours of work from developers just like us. Above all, we expect these...
What I Learned at The Basecamp Way To Work Workshop
Last week, along with 40ish of my peers, I attended Basecamp's latest Way to Work Workshop here in Chicago. We were treated to a window into the inner...
MailThief by Tighten - a Package for Testing Mail in Laravel
Last week we launched a package called MailThief that's designed to make it simple to test your Laravel mail. Laravel's current integration testing features make it easy to test that certain...
Introducing Laravel Echo
Tighten partner Matt Stauffer has written an in-depth introduction to Laravel's new Event Broadcasting tool, Echo. So, what is Laravel Echo? It's a tool that makes it easy for you to bring the power of WebSockets to your Laravel...
The Great Tighten Experiment
Dan and I are asked often about the backstory of Tighten. How did Tighten begin? That's an interesting-ish story, I guess, but what's more interesting to me is, "why?" There are other consultancies out there; why put ourselves through the...
Why We ❤ Working Remotely—and Why You Might Too
At Tighten, we run a completely distributed shop—we live and work remotely from two countries, six states, and seven different cities. It’s great! But as great as we think it is, the concept of remote working often prompts all sorts of...
React 101, Part 4: Firebase
Articles in the React 101 Series: Part 1: Building a GIF Search Engine Part 2: Refactoring...
Searchable Documentation (for Free!) with Jigsaw and Algolia DocSearch
Good online documentation is one of those things that can be critical to the success of a software project, yet which is always a bit of a pain to build and maintain. Project maintainers, fear not: building and hosting a documentation site just got a...
React 101, Part 3: Routing and Auth
Articles in the React 101 Series: Part 1: Building a GIF Search Engine Part 2: Refactoring...
Simple SSL Verification Using Laravel & Environment Variables
In my previous post, I detailed an nginx config structure for providing white label domain services in your application under SSL. When you run a...
React 101, Part 2: Refactoring with Redux
Articles in the React 101 Series: Part 1: Building a GIF Search Engine Part 2: Refactoring with...
Introducing Jigsaw, a Static Site Generator for Laravel Developers
That's right, Tighten has created a Laravel-based static site generator named Jigsaw, and we think it's pretty great. Before I write another line of this post, I want to address the looming question:...
React 101, Part 1: Building a GIF search engine
Last updated 06/01/17 to use Create React App, Redux Form v6, React-Router v4, and Firebase v3. Looking for the old version of the code? Find it...
Setting Up Your First Vue.js Site Using Laravel Elixir and Vueify
It's true what they say—there seems to be a new JavaScript framework every day. We haven't tried them all at Tighten, but we've tried quite a few, and while we've found some lacking, we've found one that truly excels: Vue.js. It's not actually new,...
Creating a Password-less, Medium-style, Email-only Authentication System in Laravel
Recently I was working on a project where one of our major pain points was users' passwords. Users were added to the application by administrators, so they didn't have passwords when they were first added, and forcing them to set and remember...
Serving Multiple SSL-Encrypted Domains from One Application in Nginx
It's a common pattern for web applications to want to provide each user a unique subsection of the site. It might be a single user information page, or it may be an entirely separate application (think something like Harvest or Slack). The two...
Tighten's Slack Channel Strategy for Client Projects
At Tighten, Slack is our office. As a fully remote team, we live in our Slack instance every minute of every working day. It's our conference room, our cafeteria, our water cooler, our TGIF watering hole, and...
PulledOver.us - Increasing Accountability
Tighten co-founder Matt Stauffer recently released a side project called Pulled Over to help folks have a...
Craft CMS: Building Complex Queries by Extending the ElementCriteriaModel
One of the great things about Craft, from a developer's point of view, is the amount of flexibility it provides when it comes to working with your site's data, giving you the power to accomplish things that would be...
Unpacking Webpack
Introduction You might have heard some of the buzz around Webpack in the last few months. If you’re anything like me, you probably took one look at it, decided not to bother with its hipster black...
Statamic v2 Beta: First Impressions of a New Laravel-based Flat-file CMS
I've been a CMS guy for a long time. The first web site I was paid to create—back in 2000, I think—was hand-written PHP, but I quickly made my way through MovableType, then WordPress, and finally ExpressionEngine before I moved out of the CMS...
Why We're Writing A Company Handbook
One of the things that Matt & Dan are proud of at Tighten is our company's values — we want to be good to our clients, be good to our employees, and be good to the world. I still remember listening to them explain the company's values to me...
Writing Custom Slack Slash Commands: Basic GIF Search
Background Once upon a time, Tighten—an entirely distributed team—did all of our chatting in Campfire. Like many Campfire-enabled teams, we had a HUBOT that we used for primarily silly purposes....
×

Got an idea? Let's talk.

Leave us a note here, or give us a call at (312) 448-7405.