Programming

PHP Localbox – an easy way to test email on WampServer or XAMPP

A few weeks ago we automated a portion of our inventory management system involving kits that contain several individual items. For example, one of the things that now happens is that when a product goes out of stock, all of the kits that contain that item now also go out of stock. Previously we managed this manually. Sometimes we’d mark the kit out of stock, sometimes we’d substitute a different product in, other times we’d ship a portion of the kit to customers and then… Continue reading

7/14/20

Our Warehouse Package Cutoff System Wasn’t Designed For This, But It Is Saving Us Right Now

Every once in a while you win one by accident. About a year and a half ago I wrote a post A New Tool for Managing Busy Warehouse Days where I described a system that we built for handling volume spikes in our warehouse, both planned and unplanned. From that post: On our back-end we’re able to set a package cutoff for any upcoming shipping day. We use historical data along with staffing information to aid us in picking the number. Once our shipping queue… Continue reading

5/28/20

Supporting Old Software

Basecamp has this really unique policy for their software called Until the End of the Internet. It reads, in part: The day you become a Basecamp customer you can trust that Basecamp will be around. In the event that the Basecamp product you’re using enters a legacy phase you’ll be free to keep using it as-is indefinitely, assuming you continue to abide by our terms of service and keep your subscription active. Co-Founder David Heinemeier Hansson wrote a post about this policy several years back,… Continue reading

12/23/19

Improved Site Search

After completing my site improvements recently, there was one thing that I realized I still wanted to fix. If you searched the site – currently only available on the Archives page – you’d be brought to a Google site search. The reason for this is that in addition to the 816 WordPress posts that I’ve published, I have an additional 296 that were published via Blogger and were migrated from SportsLizard.com over to this site in 2007. It seemed as though the easiest way to… Continue reading

12/2/19

Responding to Raw Ideas

Ryan Singer, designer and developer at Basecamp, recently released a web-only book entitled Shape Up: Stop Running in Circles and Ship Work that Matters. I’ve been working my way through it, and one passage about responding to new product improvements stood out: Responding to raw ideas Our default response to any idea that comes up should be: “Interesting. Maybe some day.” In other words, a very soft “no” that leaves all our options open. We don’t put it in a backlog. We give it space… Continue reading

8/12/19

When Skills Accidentally Get Stuck in Time

One of my goals after I caught up on my programming projects was to brush up on my web development skills, particularly CSS and Javascript. One of the things that tends to happen when you’ve been around for over a decade in a rapidly changing industry is that your skills get “stuck in time” at the point in time when you developed the systems that you’re currently using. Our last big redesign for Detailed Image was our responsive redesign in 2013. Shortly before that, we… Continue reading

8/7/19

Packing Slip Routing Optimization: How Our Expanded Warehouse Made Our Packing Slips Obsolete & How We Improved Them

We recently completed our warehouse renovation just in time for Memorial Day. I snapped a quick photo of the new space, which you can see we’re already utilizing: The big advantage of this new space is that we have almost 6,000 sq-ft more to dedicate to products. That means we can space products out better and reduce the usage of separate overstock areas. It also keeps the aisles and shelves more organized. Deciding on the new shelving layout and product flow was pretty easy. We… Continue reading

5/30/19

Programming Debt Paid

I’ve been working tirelessly the first half of 2019 because I saw a major goal in sight: for the first time since we launched the Detailed Image shopping cart in 2007, I could be caught up on all of my programming projects. Early in the year I set a goal to accomplish this by Memorial Day, giving me the summer to dial back and relax a bit. This morning I pushed out the code for my last project and hit my goal 10 days early!… Continue reading

5/17/19

A New Tool for Managing Busy Warehouse Days

Typically our busiest shipping day of the week is Monday. This is pretty intuitive, given that we’re shipping out orders from Friday afternoon through our 1 PM same-day cutoff on Monday afternoon. Three-day weekends during our peak season, such as Memorial Day, Labor Day, and (sometimes) July 4th, when we’re also typically running a big sale, are even busier. And as we’ve grown over the years, those peaks have become even greater proportionally. Essentially, it’s easier to find growth during a big sale in peak… Continue reading

1/24/19

Software as a Competitive Advantage

One of the best podcast interviews that I’ve listened to in a while is Tim Ferriss’ interview with Stripe founder and CEO Patrick Collison. Around minute 35 they discuss something that I find fascinating. Patrick says: We surveyed companies fairly broadly across multiple industries. And we just asked them what’s holding them back. And that’s a very imperfect methodology, of course, because it’s hard to know what the candidate answers there should be. And maybe those questions are – do they all interpret it the… Continue reading

1/9/19