Blog
Learn how to add full-text search to your Eloquent models using the free, self-hosted search engine MeiliSearch and Laravel Scout.
2020 has been described as many things–unprecedented, a year like no other, a dumpster fire, a train wreck. It has indeed been a challenging year, for many reasons.
Rather than rehashing those challenges, I asked my favorite team to share some of...
Late last year, Tighten founders Matt Stauffer and Dan Sheetz were planning how they could contribute positively to the Laravel community. They made a pledge: Tighten would sponsor ten guests to attend Laracon US, and they'd focus on inviting folks...
A modern take on Joel Spolsky’s “The Joel Test: 12 Steps to Better Code” listing 12 qualities we think the best software development teams have in common.
Many of our clients have legacy PHP apps and want to move to Laravel. We’re often asked "should we rewrite or refactor?" While full rewrites are appealing, they’re also risky. Here’s our approach to gradually refactoring legacy code that lets you start using Laravel right away.
Did you know you can use your PHP skills to build a powerful Alfred Workflow? Creating custom workflows can allow you to fully utilize the power of Alfred to save time and automate tasks. It's also a lot of fun to share workflows with others....
At Tighten, we want to bring our best selves to work, so that we can bring our best work to our team and clients. In order to do that consistently, we make time and space to care for our brains as well as our bodies.
Keeping code organized, readable, and maintainable is tough, and there's no one-size-fits-all solution. Separating your features into dependencies is a good first step for most applications, resulting in cleaner code without the huge complexity cost of a microservice architecture.
Learn how to build cross-platform, native mobile apps using familiar Vue.js syntax and Tailwind CSS.
The average Laravel app sends between a few and a few dozen notifications to users, but what happens when they want to opt out? With legal regulations like GDPR, it's more important than ever to give users control over the emails they receive.
At Tighten, we do lots of open source work. We even have a whole day every week devoted to it. And, thankfully, we have many members of the open source community contributing pull requests to our projects and packages.
But occasionally we have...
Internet tracking has gotten out of control, and some users are turning to "blocker" browser extensions to protect themselves. Learn how to adapt your website so these users (and all other users) have a better experience.
Tighten will be closed from Monday, December 23rd 2019 through Wednesday, January 1st 2020 to celebrate the end of year holidays with family and friends.
As we close out 2019, we took a little time to celebrate and reflect on team...
In software development, we have a tendency to glorify the self-taught. It's understandable—self-directed teaching is an important skill! Our industry changes rapidly, and to keep up we have to do some of the learning on our own. However, we tend to...
Team culture and a sense of community can develop naturally in physical offices, but remote companies like Tighten must build them deliberately. Here are some ways we foster a positive culture based on our shared values.
So, you want to work as a web developer, but you don’t have a Bachelor’s degree. Does that mean you’re out of luck? No, it turns out, not at all.
I’m a new kid on the web development block. My first ever job as a developer is also my...
Learn how you can quickly open the GitHub Pull Request page from your terminal by using bash functions. Walk through the scripts so you know what's happening.
Moving can often be painful—but fortunately, if you’re moving your site from WordPress to Jigsaw, it doesn't have to be. With just a few steps, you can export your existing WordPress data and drop it into a...
Writing tests for real-world applications can be messy. Our intentions are good: we write a few tests to cover our edge cases, but we soon notice very similar logic repeated in each of them with only slight variances in the setup data. Maybe we're...
Jigsaw, the static site generator created by Tighten, has always had two important goals: to be powerful and flexible enough to handle all sorts of creative uses, while at the same time being easy to use,...
Web developers have been adding interactivity to our web sites since JavaScript was introduced in 1995. For much of the last 20+ years, jQuery was the tool to use to add that interactivity. jQuery is simple, and provides a standard API to...
At the end of last year, I set a goal for myself to speak at a handful of conferences in 2018. At the time, it had been almost two years since my last speaking engagement, and I knew that sharing some of the knowledge I’d gained was the best way to...
Every time Laravel developers start or clone a Laravel app, generating the application key or
APP_KEY
is one of the most important first steps.
A recent Laravel security update fixed an issue with how APP_KEY
...
Laravel Nova gives us an easy way to manage the data in our Laravel applications. With a few lines of code, you can define "resources" corresponding to your Eloquent models, and Nova will generate beautiful...
July 25 and 26 were big days for the Laravel community as we came together in Chicago for Laracon US 2018 at the Museum of Science and Industry. We had a lot of fun putting together the Laracon Visitor’s Guide and sponsoring a code challenge....
Team Tighten is pretty excited for this year’s Laracon! We’re looking forward to welcoming the Laravel development community to Chicago, where our company headquarters and three members of our team are located.
We’ve prepped a few things...
About a year ago, we streamed the inaugural Tighten Dev Battle, during which senior developers Samantha Geitz and...
As you begin writing automated tests, one of the first questions you will find yourself asking is, "How do I make it clear what this test is accomplishing?" It's important for tests to have a natural and logical flow that any future developer can...
Unit testing Vue components is something that has always intimidated me. I’ve relied on acceptance testing tools like Laravel Dusk for all my JavaScript testing needs because of its ease of use and place in the Laravel ecosystem. Although extremely...
Awhile back, we shared how our team does coffee.
We’ve grown a lot since then, both in people and the variety of our setups. What hasn't changed,...
Laravel’s
.env
files are fascinating things. They seem so innocent on the surface, but underneath the friendly façade they are vicious beasts capable of bringing your entire application to its knees. In this post we’ll look at some...
I love pair-programming with other developers, in part because I always end up learning new ways to improve how I work. One aspect of my workflow that has benefitted from pairing is writing pull requests (or "PRs"). A clear, well-built PR is an...
Tighten has sent a contingent to Laracon US for the last four years, and we've loved the opportunities and relationships that have come from our time there. We've tried to give back with talks, sponsorships, fun events, and more. But this year, we...
After receiving some great feedback on my post, Debugging: Configure VS Code + Xdebug + PHPUnit, I had a few people ask me for some help configuring their Xdebug setup on their...
I've lost track of how many hours I have spent trying to configure and use Xdebug. The process usually begins with me noticing how often I've been using dd() while re-running my PHPUnit tests. I think to myself, "There has to be a better way."...
At Tighten, we value kindness, compassion, and empathy, and our hearts are heavy as we continue to see and hear stories from Puerto Rico. How can we help? What can we do?
One of the hardest parts of writing acceptance tests in a tool like Laravel Dusk is choosing selectors for targeting elements. Since these tools use CSS selectors, you suffer all the same problems you...
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...
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...
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...
Caleb Porzio and I started a podcast recently in our Tighten-provided 20% time . We call it...
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...
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...
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...
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...
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,...
There are two issues that cause a bitter divide within the Tighten family:
1) The proper pronunciation of the word "gif"
2) The best JavaScript framework in the year 2017: Vue or React
While we...
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 to...
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...
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...
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...
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...
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,...
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...
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 projects...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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 stress of...
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...
Articles in the React 101 Series:
Part 1: Building a GIF Search Engine
Part 2: Refactoring...
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...
Articles in the React 101 Series:
Part 1: Building a GIF Search Engine
Part 2: Refactoring...
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...
Articles in the React 101 Series:
Part 1: Building a GIF Search Engine
Part 2: Refactoring with...
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:...
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 here...
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,...
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...
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...
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...
Tighten co-founder Matt Stauffer recently released a side project called Pulled Over to help folks have...
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...
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...
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...
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...
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....