- 2024 - 3 posts
-
March 23 2024
Building a 10-Million Parameter LLM with 300 Lines of Python and Training It in 10 Minutes
Let's walk through how to build a small-scale version of OpenAI's GPT model in 300 lines of Python, train it for free in 10 minutes on Google Colab, and think about deep neural networks as a leaky abstraction.
-
March 16 2024
A Glossary for Understanding Large Language Models in AI such as OpenAI's GPT-4, Meta's Llama2, and Google's Gemini
LLMs such as GPT-4 and Gemini feel magical, but at their core, these models are token-prediction algorithms. Let's walk through terminology that comes up for LLMs to help demystify and ground their performance.
-
February 16 2024
SudokuAI 1.1: Solve Sudoku Instantly at Night with Dark Mode
SudokuAI 1.1 for iPhone and iPad, now with Dark Mode support. I made a quick update to my open-source side project, SudokuAI. Now you can instantly solve any Sudoku puzzle at night. Available on the App Store now.
- 2023 - 1 posts
-
January 28 2023
Prompt Engineering for Stories: A Generative AI Children's Book using ChatGPT and Midjourney
Connecting ChatGPT to Midjourney to create visual stories from prompts creates an AI-driven creativity pipeline. With prompt engineering, one person can fuse words and art into a story in minutes instead of months.
- 2022 - 7 posts
-
December 31 2022
SudokuAI: Instantly Solve Any Sudoku Puzzle with Your iPhone
Delivering a new product requires understanding the needs of customers in addition to the resources of an Engineering team and finding the best intersection between them. SudokuAI was a side project, but even this simple app, implemented by just me, highlighted the tension.
-
December 31 2022
How to Solve Any Sudoku Puzzle in One Second
Any Sudoku puzzle can be solved with constraint propagation and search. Let’s walk through how to build an algorithm to solve a puzzle and implement it in Ruby.
-
October 29 2022
Adopting a Continuous Delivery (CD) Jenkins DevOps Pipeline
Retrospect Engineering adopted a continuous delivery (CD) Jenkins pipeline for automation from codebase to customers, eliminating manual steps and improving the team's efficiency.
-
March 6 2022
Anomaly Detection with Retrospect Backup
Congratulations to the Retrospect Engineering team for shipping Anomaly Detection with Retrospect Backup 18.5, extending our ransomware focus beyond protection with immutable backups to detection.
-
February 19 2022
Containerizing our Web Development Toolchain with Docker
We migrated from a local macOS development environment to Docker to abstract away library and service management, reducing our dev setup time from multiple hours to five minutes.
-
February 5 2022
Building a Technical Documentation DocOps/DevOps Pipeline
Customers need well-written, up-to-date documentation, in the form of user guides and knowledgebase articles in their language, with targeted content accessible as a URL. We built that DocOps/DevOps pipeline.
-
January 2 2022
Leveraging Forever-Incremental Backup Technology for Customer-Centric Data Protection
Let’s say you have a computing environment, and you need to protect its contents over time. You need a backup: a versioned snapshot for point-in-time restores. Let's walk through how Retrospect solves this problem.
- 2021 - 16 posts
-
December 30 2021
Scaling Data Ingestion for a Web Application to 250 Million Requests
Data requests are like ocean waves hitting a service. Ingestion is trivial for small waves, but the larger and more frequent they get, the harder it is to finish ingesting before the next wave. Your service needs to auto-scale.
-
November 1 2021
Retrospect, Inc. Turns 10
Retrospect, Inc. incorporated ten years ago today. I’m extremely grateful to be a part of such a fantastic team and to work on a product that has helped so many. Thanks to everyone who is or has been a part of Retrospect!
-
October 30 2021
MVP and Iteration: How We Built a Web Application for Backup Analytics
Building an MVP represents a compromise between Sales, Engineering, and Product Management. Finding a balance between these competing views comes down to a well-defined product roadmap that satisfies all three.
- October 29 2021 Jekyll Tip: Absolute URLs for Links and Images in RSS Feed
-
October 24 2021
How I Managed Cash Flow at a Bootstrapped Startup
At Retrospect, Inc., we needed to know our current financial position, predict the company's cash flow, and minimize past-due AR. Let's walk through how we did that with a simple spreadsheet.
-
October 17 2021
Technical Deep Dive on Object Lock, Ransomware Protection, and Immutable Backups in Retrospect Backup
Retrospect Backup supports ransomware protection using Immutable Backups with Cloud Object Lock–one of the first in the industry. Let’s dive into the technical details of Cloud Object Lock and Immutable Backups.
-
October 16 2021
How to Protect Cloud Storage with Retrospect Backup's Cloud Data Protection
Retrospect has used Amazon S3 for storing various assets for the last decade. Today, we store tens of terabytes of content on it, and now, Retrospect Backup can seamlessly protect it.
- October 15 2021 Jekyll Tip: Adding Years and Post Counts using Liquid
-
July 25 2021
Building Deep, Scalable Customer Relationship Management Tools
Engineering can enable Sales, Marketing, and Support to deliver deep, scalable interactions with prospective buyers, customers, and partners, tailored to each departments’ needs.
-
July 24 2021
Retrospect Backup + Azure: Cloud Backup, Protection, and Deployment
Congratulations to the whole Retrospect team! We launched a massive release this spring with ransomware protection, cloud data protection and deployment, virtual improvements, and now Microsoft Azure integration.
-
July 11 2021
On-Demand Infrastructure: Migrating On-Prem Engineering Tools to Amazon AWS
During a colo move, I migrated GitHub Enterprise and Bugzilla to Amazon AWS, available through AWS VPN Client. The entire deployment cost $300 for the two weeks we had it active without a day of downtime for the team.
-
July 10 2021
Second-Order Benefits to Consistent Communication as a Manager
I used to be Chief Operating Officer at Retrospect, so Sales, Marketing, Support, Operations, and Finance reported to me—around 25 people. Now, I manage the Engineering team, making backup software for businesses.
-
June 19 2021
Optimizing Retrospect's Algorithm for Resource Scheduling
AI and ML aren't necessary to vastly improve many solutions for customers. The Retrospect Engineering team designed a simple algorithm to optimize backup for a wide variety of data sources.
-
May 31 2021
Saving $100k per Year with Order Processing Automation
Order processing is one of those unglamorous corporate tasks that is tedious, repetitive, and absolutely essential.
-
May 30 2021
Retrospect Backup 18: Ransomware Protection
Retrospect Backup 18 launched last week with ransomware protection. It creates immutable backups by integrating with Object Lock on Amazon S3, Wasabi, Backblaze B2, and MinIO.
-
March 31 2021
Thirteen years at Retrospect
I joined Retrospect thirteen years ago today.
- 2020 - 5 posts
-
September 27 2020
Retrospect Engineering Internship Program 2020
During the summer, I organized a low-key internship program for Retrospect Engineering.
- September 26 2020 Rails Tip: Non-Database Attribute in ActiveRecord SQL Query
- September 25 2020 Rails Tip: How to Insert Middleware First
-
March 31 2020
Twelve years at Retrospect
I joined Retrospect twelve years ago today.
- January 9 2020 Ruby Tip: Local Variables from Unexecuted Code
- 2019 - 2 posts
-
June 25 2019
Retrospect, Inc. acquired by StorCentric
We're really excited to be part of the StorCentric family, so we can continue improving Retrospect Backup.
- March 31 2019 Eleven years at Retrospect
- 2018 - 3 posts
- September 28 2018 Web Developer Tip: Clear Cache on Safari
- August 17 2018 431,529 Views: A Decade of Blogging
- March 31 2018 Ten years at Retrospect
- 2017 - 9 posts
- December 30 2017 Granular Forecasting with Salesforce
- December 23 2017 Why Retrospect Standardized Its Release Cycle
- October 13 2017 EC2 SSH on the iPhone with Panic Prompt
- April 20 2017 Xcode Tip: Diagnosing 'Read Failed' for .strings file with plutil
- March 31 2017 Nine years at Retrospect
- March 25 2017 How we built a modern, responsive Retrospect.com
- March 18 2017 Tracking Retrospect's Releases with Salesforce
- January 29 2017 How to Fetch Any Salesforce Report using Ruby and Restforce
- January 15 2017 Datacube: Replacing my sales analytics app with Salesforce
- 2016 - 6 posts
- December 28 2016 Salesforce Tip: Adding US Timezone to Accounts
- December 26 2016 Salesforce Tip: Lookup Contact by Email via Enhanced Lookups
- December 25 2016 Salesforce Tip: Territories with a Read-Only Custom Formula
- December 17 2016 Deconstructing Flora Tea from Tea Forte
- December 5 2016 How to Disable Multi-touch on Apple Magic Mouse
- March 31 2016 Eight years at Retrospect
- 2015 - 4 posts
- November 22 2015 Family FaceTime with BookBook for iPad
- November 3 2015 Rethinking MRDs and PRDs at Retrospect
- August 18 2015 10,000 actions in Alfred
- March 31 2015 Seven years at Retrospect
- 2014 - 11 posts
- October 12 2014 iStat Menus
- September 11 2014 Apple Watch
- September 9 2014 Novelty versus need – Fitbit and iWatch
- September 6 2014 Ruby integration with YouTube API v3
- September 1 2014 Rails internationalization at scale
- July 18 2014 Git Tip: Auto completion in Terminal
- June 21 2014 Dollar Clock 5.0
- June 11 2014 Git Tip: Logical commits with git stash
- June 8 2014 Making Remote Work
- April 2 2014 Migrating Retrospect from SVN to GitHub Enterprise
- March 31 2014 Six years at Retrospect
- 2013 - 3 posts
- November 10 2013 Markdown in WriteRoom
- November 8 2013 Why I moved from Wordpress to Jekyll
- November 7 2013 There and back(up) again
- 2012 - 2 posts
- May 3 2012 Writing Retrospect for iOS
- April 27 2012 rescue_from RoutingError in Rails 3
- 2011 - 38 posts
- December 14 2011 Creating UITableView badges like iOS Mail
- December 14 2011 Modal views in universal iOS apps
- December 12 2011 Ad-Hoc and App Store IPAs with xcrun
- November 21 2011 Deleting large AWS S3 buckets
- November 17 2011 iPhone Tip: Tether to your Mac
- November 13 2011 Git Tip: Better 'git log'
- November 7 2011 Migrating JIRA to Bugzilla
- November 3 2011 3 Lessons from Google Apps
- October 30 2011 EC2 SSH on the iPad with Panic Prompt
- October 29 2011 Server Tip: Screen
- October 23 2011 Ruby Tip: Sort a hash recursively
- October 19 2011 Ruby Tip: 1.8.7 and 1.9.2, Side by Side
- October 19 2011 Searching GitHub Wikis with Gollum
- October 9 2011 Logging slow queries in MySQL
- October 8 2011 Rails Tip: Logger in Rake
- October 6 2011 Rack Tip: ActiveRecord with Logging
- October 1 2011 Rails Tip: Locking Cron Jobs
- September 29 2011 Converting MySQL from LATIN1 to UTF8
- September 18 2011 Sanitizing POST params in Rack
- September 15 2011 Compiling PowerPC with LLVM GCC 4.2 in Xcode 4.1 on 10.7
- September 7 2011 Server Tip: Better SSH Timeouts
- August 18 2011 Remind Me Later 1.4.1
- August 6 2011 Dollar Clock 4.2
- August 4 2011 Design Iterations for Dollar Clock
- August 2 2011 Dollar Clock 4.1
- July 24 2011 Dollar Clock 4.0
- July 21 2011 Remind Me Later 1.4
- July 18 2011 Visualizing 144,000 Minutes in iTunes
- June 28 2011 Developer Tip: Remap Caps Lock to Command
- June 26 2011 Visualizing GTD with 1.8K To-Dos in Things
- June 25 2011 blog.data.visualize()
- June 20 2011 Server Tip: preserve the user environment
- June 19 2011 Developers: Just Handle It
- June 14 2011 Xcode Tip: Debug vs Release
- June 13 2011 Iterating to iCloud
- March 1 2011 Remind Me Later 1.3.3 is live!
- February 16 2011 Remind Me Later 1.3.1 is live!
- February 3 2011 Remind Me Later 1.3 is live!
- 2010 - 36 posts
- November 27 2010 Remind Me Later 1.2: UI Hints
- November 27 2010 Dollar Clock 3.0: Project Meeting Waste on Walls!
- November 7 2010 Remind Me Later 1.1: Calendar Selection
- October 19 2010 Cocoa Tip: Hot Keys without Key Equivalents
- October 14 2010 Cocoa Tip: Global Hot Keys
- October 8 2010 Remind Me Later: Quickly add events to iCal
- September 25 2010 Cocoa Tip: Enabling "Launch on Startup"
- September 24 2010 Cocoa Tip: NSDate, to the nearest 15 minutes
- August 27 2010 WordPress Tip: Debug Logging
- August 24 2010 Dedupe Files with 50 Lines of Ruby
- August 17 2010 Cocoa Tip: NO vs nil for Preferences
- July 10 2010 Cocoa Tip: URLs in NSTextFields
- June 15 2010 Don't make users feel bad
- May 26 2010 A Mac App Store
- May 17 2010 class-dump: Dumping Classes
- May 15 2010 Symbolification: Shipping Symbols
- May 12 2010 Measuring Design Changes
- April 28 2010 Dollar Clock on the iPad: Meeting Waste in HD
- April 24 2010 Cocoa Tip: Losing UITableView Selection
- April 18 2010 Communicating with a Privileged Tool
- April 16 2010 Marketing Tip: Name Your Downloads
- April 13 2010 Xcode Tip: Update Version Numbers with agvtool
- April 11 2010 Time is money: Quantify wasted meetings with Dollar Clock
- April 9 2010 Wordpress Tip: Recent, Relevant, and Random Blog Posts
- March 31 2010 Multicast Ping on a Mac
- March 29 2010 Tracking and Staging Wordpress Changes
- March 27 2010 ibtool "Missing object" Confusion
- March 1 2010 iPhone Tip: Larger Hit Area for UIButton
- February 27 2010 Codesigning on Different OS Versions
- February 25 2010 Create iTunes Link Arrows
- February 22 2010 Cocoa Tip: NSApp's currentEvent
- February 19 2010 Cocoa Tip: Continuous Updates and Bindings
- February 16 2010 iPhone Tip: Rotating UIView
- February 13 2010 iPhone Tip: Capturing a Shake Event
- February 10 2010 Obligatory iPad Post
- January 25 2010 Cocoa Tip: NSImage Composites
- 2009 - 29 posts
- December 27 2009 Creating a Menu Bar Item
- December 24 2009 You are a user
- December 22 2009 UITabBarController from a XIB
- December 13 2009 System Preferences Pane Lock
- November 28 2009 iPhone Tip: No NSHost
- November 24 2009 Cocoa Tip: Extend NSNumber
- November 21 2009 Cocoa Tip: Extend NSDate
- November 18 2009 iPhone WordPress Theme with WPtouch
- November 15 2009 iPhone Tip: Fading Views In and Out
- November 11 2009 Blog Breadcrumbs: Relevance, Recognition, and Trust
- November 8 2009 iPhone Tip: Conditional Toolbar
- November 7 2009 iPhone Tip: Automatic Focus for Text Input
- October 1 2009 Design Iteration
- September 30 2009 Rereading Info.plist
- September 29 2009 Syncing Arrows in an iPhone App
- September 25 2009 Syncing Arrows in iTunes
- September 24 2009 Icons, Iterated
- August 10 2009 ibtool scripts on Google Code
- June 28 2009 Custom UITableViewCell from a XIB in Interface Builder
- June 27 2009 ibtool Caveats
- June 4 2009 WWDC 2009
- April 26 2009 Core Animation on the iPhone
- April 26 2009 Core Animation on the Mac
- April 24 2009 Leveraging setObjectValue: in an NSTableView
- April 16 2009 Tips for Xcode and Interface Builder
- April 15 2009 ibtool: Localization Made Easier
- April 14 2009 Hitting space bar with two NSButtonCells in an NSTableView
- April 12 2009 Debugging Preference Panes in Xcode
- March 15 2009 ibtool: Localization Made Easy
- 2008 - 21 posts
- December 8 2008 UITextView in a UITableView on the iPhone
- December 7 2008 PackageMaker tips
- December 6 2008 Key-value observing uses paths, not data
- December 6 2008 NSProgressIndicator in NSTableView or NSOutlineView
- November 23 2008 RssBucket on Google Code
- November 23 2008 FilePile: Finder for the iPhone
- November 23 2008 sudo NSTasks with Mac OS X's Security framework
- November 10 2008 Cocoa Tutorial: Source List Badges, Part 2
- November 10 2008 Cocoa Tutorial: Link Arrows, Part 2
- November 9 2008 Mac OS X 10.6 for $30
- November 2 2008 Appear on TV in "Windows: Life Without Walls" ads
- October 25 2008 Microsoft's "Windows without Walls" Ads
- October 4 2008 Where The Magic Ends in Cocoa Bindings
- October 4 2008 Filter Failure
- October 1 2008 Triggering didReceiveMemoryWarning on the iPhone
- September 30 2008 RssBucket: Yet Another RSS Reader
- September 15 2008 Atomic Transactions
- September 13 2008 Cocoa Tutorial: Yesterday, Today, and Tomorrow with NSDate
- September 5 2008 Cocoa Tutorial: iTunes Link Arrows
- September 3 2008 Cocoa Tutorial: Source List Badges
- August 17 2008 fill the void
- 196 posts
- SudokuAI
- Remind Me Later
- Dollar Clock