Rails: Parsing iCal calendar on a password-protected WebDAV server
It took me a little while, but I finally got this working. You’ll need the iCalendar plugin.
require 'icalendar'
def view_ical
request = Net::HTTP::Get.new('/calendars/calendar.ics')
response = Net::HTTP.start('webdav.site.com') {|http|
request.basic_auth 'username', 'password'
response = http.request(request)
}
calendar_text = response.body
calendars = Icalendar.parse(calendar_text)
calendar = calendars.first
end
Featured writing
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Busy is not a state
We've built work cultures that reward activity, even when nothing actually changes. In technical systems, activity doesn't count—only state change does. This essay explores why "busy" has become the most misleading signal we have, and how focusing on state instead of motion makes work more honest, less draining, and actually productive.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Books
The Work of Being (in progress)
A book on AI, judgment, and staying human at work.
The Practice of Work (in progress)
Practical essays on how work actually gets done.
Recent writing
When execution becomes cheap, ideas become expensive
This article reveals a fundamental shift in how organizations operate: as AI makes execution nearly instantaneous, the bottleneck has moved from implementation to decision-making. Understanding this transition is critical for anyone leading teams or making strategic choices in an AI-enabled world.
Dev reflection - February 02, 2026
I've been thinking about what happens when your tools get good enough to tell you the truth. Not good enough to do the work—good enough to show you what you've been avoiding.
Dev reflection - January 31, 2026
I've been thinking about what happens when your tools start asking better questions than you do.
Notes and related thinking
Google Criticized for Privacy Issues
Explore the critique of Google’s privacy practices as Ian Hickson defends the company's intentions and highlights the impact of public skepticism.
Llama 2 avoids errors by staying quiet, GPT-4 gives long, if useless, samples
Discover how Llama 2 outperforms GPT-4 in generating reliable code, revealing crucial insights on the effectiveness of large language models.
NoMethodError (undefined method `finder') with Engines and Rails 2.2
Fix the NoMethodError with ActionMailer in Rails 2.2 by applying a simple patch. Save time and troubleshoot efficiently with our guide.