The Future of AI-Assisted Development
How AI is reshaping the way we build software, from intelligent code completion to full-stack generation.
Our definitive typography assignments combining Windsor, Satoshi, Metropolis, and Courier Prime across all UI contexts.
The semantic font assignments that define our design language.
--font-headline
--font-body
--font-button, --font-label
--font-nav, --font-nav-section
--font-input
--font-code
Two card variants: Windsor + Satoshi (editorial) and Satoshi throughout (minimal).
Built the curriculum and learning platform that helped thousands launch software engineering careers.
Built the curriculum and learning platform that helped thousands launch software engineering careers.
Blog post previews with both typography variants.
How AI is reshaping the way we build software, from intelligent code completion to full-stack generation.
How AI is reshaping the way we build software, from intelligent code completion to full-stack generation.
Modern approaches to API design with Rails 7.1 and beyond.
Strategies for maintaining quality while moving quickly.
Full article typography with Windsor headlines and Satoshi body text.
The difference between ideas that become products and ideas that stay in notebooks comes down to relentless focus on what matters.
Great products are not born from feature lists or competitive analysis. They emerge from a deep understanding of the problems people face and a relentless commitment to solving them elegantly.
When we built Flatiron School, we did not start by asking what features a coding bootcamp should have. We started by asking: why do so many smart, motivated people struggle to break into software development?
The answer was not a lack of free resources or tutorials. It was the absence of structure, community, and real projects that mirror what professional developers actually do.
"The best interfaces feel inevitable, as if there were no other way to design them."
Every feature you add makes everything else harder. It makes your product harder to understand, harder to maintain, and harder to evolve. The right question is not "would this be nice to have?" but "would users quit without this?"
def ship_it cut_scope until viable? build_smallest_version measure_and_iterate end
This approach applies to code as much as product. The ship_it method above captures the essence: start minimal, measure reality, and iterate based on data.
Detailed project pages with both typography variants.
A coding bootcamp and learning platform that transformed thousands of careers through immersive, project-based education.
Traditional CS education was not producing job-ready developers, while self-taught paths lacked structure and accountability. We needed to build something that combined the rigor of formal education with the practicality of learning on the job.
A coding bootcamp and learning platform that transformed thousands of careers through immersive, project-based education.
Traditional CS education was not producing job-ready developers, while self-taught paths lacked structure and accountability. We needed to build something that combined the rigor of formal education with the practicality of learning on the job.
Form elements with Metropolis labels and inputs.
Get notified when I publish new articles on engineering, product, and education.
Courier Prime for all code elements.
class User < ApplicationRecord
validates :email, presence: true, uniqueness: true
has_many :projects, dependent: :destroy
def full_name
"#{first_name} #{last_name}"
end
end
Use the User.find_by(email:) method to look up users by email address. This returns nil if no user is found, unlike find which raises an exception.
Reference specimens for each font family.
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 {} [] () <> = + - * / # @ $ % ^ &