惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News | PayPal Newsroom
Application and Cybersecurity Blog
Application and Cybersecurity Blog
O
OpenAI News
S
Security @ Cisco Blogs
宝玉的分享
宝玉的分享
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
TaoSecurity Blog
TaoSecurity Blog
Help Net Security
Help Net Security
Latest news
Latest news
NISL@THU
NISL@THU
S
Security Affairs
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
AI
AI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
AWS News Blog
AWS News Blog
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
I
InfoQ
Schneier on Security
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Exploit Database - CXSecurity.com
IT之家
IT之家
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
腾讯CDC
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
News and Events Feed by Topic
L
LINUX DO - 最新话题
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
H
Heimdal Security Blog
S
SegmentFault 最新的问题

Chip Cullen

The need for importance, and AI: Chip Cullen An updated Colorosetta: Chip Cullen The Return of the Font Combinator!: Chip Cullen Changing the number of an item in an ordered list: Chip Cullen My pizza dough recipe as of May 2025: Chip Cullen Gonna try to be a bit more personal: Chip Cullen How I built dynamic social media images in Eleventy using Cloudinary: Chip Cullen My current approach to AI : Chip Cullen Lessons Learned Surviving a Major Product Launch: Chip Cullen How to Build a Drop Down Menu with Modern CSS: Chip Cullen How to stop page scrolling when you have an open dialog element: Chip Cullen Distraction Driven Development: Chip Cullen How I learned to code: the art of letting go: Chip Cullen In praise of the switch statement: Chip Cullen Project stuck? Think about how you’re breaking it down & question everything: Chip Cullen So how did the onboarding experiment go?: Chip Cullen Ideas for an Onboarding Checklist: Chip Cullen I really like Post Mortems: Chip Cullen Raise Red Flags Early: Chip Cullen How to mock fetch requests in React Testing Librarty tests: Chip Cullen Running a Structured Meeting: Chip Cullen Adding the View Transitions API to my personal site: Chip Cullen A Lightweight Way to Read GraphQL Data: Chip Cullen How to make a color changing favicon: Chip Cullen Using a Pros/Cons list to help navigate technical discussions: Chip Cullen How to use variable fonts from Google Fonts: Chip Cullen A new website: now on Eleventy!: Chip Cullen How to Truncate Type at More Than One Line with Just CSS: Chip Cullen Colorosetta: the VS Code Extension!: Chip Cullen Using CSS Custom Properties and Logical Properties Together: Chip Cullen Browser Dev Tools: Element Inspector Popover: Chip Cullen The Link with rel=preload is a Seperate Thing: Chip Cullen How to have Dark & Light Mode Images that also works with User Choice: Chip Cullen Don’t use Viewport Units for Font Size on their own: Chip Cullen A little known Media Query: Aspect Ratio: Chip Cullen Meta thinking: Managing Decisions: Chip Cullen Give Your To-Do's Context: Chip Cullen Say What the Impact is when Reporting Issues: Chip Cullen Firefighting 101: How to Manage Breakages: Chip Cullen How to Deal With Large Pieces of Technical Debt: Chip Cullen Make Your Request Clear: Chip Cullen Analytics events, HTML classes, and protecting against refactoring: Chip Cullen How We Removed jQuery from a large app: Chip Cullen New tool: ColoRosetta: Chip Cullen What width and height attributes should you use with responsive images?: Chip Cullen Django 3.1 gotcha: Referrer Policy has a new default, and it might break iframes and links: Chip Cullen A Javascript Component Pattern: Chip Cullen CSS min(), max() and clamp() Functions: Chip Cullen Pointer Events and Inline Elements in Chrome: Chip Cullen Resolving a github repo and a new Create React App: Chip Cullen How to POST *Data* with the Fetch API: Chip Cullen The Contrast Triangle: Chip Cullen Advice on interviewing for Junior Developers: Chip Cullen A (Brief) intro to Search Engine Structured Data: Chip Cullen Javascript Fallback Values on Variables and Booleans - a hard lesson: Chip Cullen Alfred Tip: Quickly Access Common URLs: Chip Cullen Responsive Images in Hugo - by Laura Kalbag: Chip Cullen Making a Gatsby Site with Multiple Content Types: Chip Cullen How to Create and Use Fixtures in Cypress Tests: Chip Cullen Fixing the 'Bad Interpreter' Error from AWS and Python 3.7: Chip Cullen Creating a Canonical Tag in a Django Template: Chip Cullen Responsive spacing with viewport and ch units: Chip Cullen Welcome to my New Design - 2019: Chip Cullen Django Templates: Block and If statements don’t work like you might expect: Chip Cullen Books I Read in 2018: Chip Cullen Lifehack: 4 ways to help tame common email noise: Chip Cullen How to make better Pull Requests: Adding Steps to Test: Chip Cullen The unsung develpment tool: Spreadsheets: Chip Cullen Troubleshooting Adding and Removing EventListeners: with Arguments, Debounced, and in a React Class: Chip Cullen How to Fake the Window Object in Jest and Enzyme: Chip Cullen Migrating From Wordpress to Hugo: Chip Cullen Background Repeat and its Possibilities: Chip Cullen Getting Started With Front End Tests: a Mindset: Chip Cullen Migrating a Blog - An Opportunity for a Content Inventory: Chip Cullen Moving to Hugo: Chip Cullen JavaScript events: .target vs .currentTarget: Chip Cullen Things I wish I knew when starting with Python: Chip Cullen Leading Ampersands for modifiers in Sass: An anti-pattern: Chip Cullen How to get rid of the "You have mail" message in your terminal: Chip Cullen Why three typefaces rule the web, and what you can do about it: Chip Cullen You shouldn't worry about Section 508 - it's Section 504: Chip Cullen Looping Video Backgrounds: pointers and pitfalls: Chip Cullen How to “preview” a click event tag in the Google Tag Manager console: Chip Cullen Moving on from a technology, or: life after Drupal: Chip Cullen Don’t be a dumb developer: Chip Cullen Two level breadcrumbs with CSS :only-child: Chip Cullen Simplicity comes with experience: Chip Cullen Do the least amount possible: Chip Cullen SVGs vs. Icon Fonts: Two points in favor of Icon Fonts: Chip Cullen Accessible links without underlines: Chip Cullen The Strategic Job Hunt: Chip Cullen Surviving Getting Laid Off: Chip Cullen How to structure your typography in Sass: Chip Cullen Layer Cake: A Responsive Design Layout Pattern: Chip Cullen Creativity is yet to come in Web Design: Chip Cullen Front End Testing with Wraith: A Step by Step Recipe: Chip Cullen Where to begin? How I start a visual design for the web: Chip Cullen If you could only have five Google Fonts: Chip Cullen Why SVG is so cool (or: what happens when you're late to the party on something): Chip Cullen How to apply classes to elements with CKEditor 4, in Drupal 7: Chip Cullen
Life Lessons Learned From Running a Marathon: How to do something really hard: Chip Cullen
2019-11-03 · via Chip Cullen

On October 5th of this year, I accomplished something that had been in the back of my mind for most of my adult life: I ran a full marathon.

26.2 miles. I did it. The whole thing.

It's been a month, and I've had a chance to get some perspective, and here are some of the things that I learned that I think can be applied to life in general.

Something worth doing is worth doing twice

That's a saying a professor of mine in college said. He was alluding to that sometimes you start a project, and you have to go through it once, only to do it again with some lessons learned.

I was forced into this because I attempted training for a marathon last year, but due to an unrelated injury had to stop about 3 months in. I was frustrated, but for whatever reason wasn't discouraged. I simply started my training again this year, but with that previous set of experience. And it really helped make the second go around go much more smoothly. How? Namely:

When trying something hard, you need to communicate clearly to those around you

I have a very supporting wife, and understanding children, who wanted me to do the thing I had set for myself as a goal. But the first time I started a training program, I didn't do a great job at communicating my needs clearly.

In my case it was when I had to go on runs, and how long they would be. The first time around, I knew my running schedule, but they did not. I would get all bent out of shape when I couldn't get my runs in, or if I did go for a run, it was a surprise to them. It led to a lot of stress within the family.

The second time around, I was very straight forward about how often I needed to go running (I had a regular schedule of days in the week), and in the days leading up to my long training runs, how long I would be. This way, they had clear expectations about what I was doing. For instance, my wife would know that Sunday mornings were my long runs, and that also meant that I was also going to be wiped out for a good part of the day.

I think that the first time I went through this, I was feeling selfish enough trying to do this, so blatantly saying what my needs were felt really selfish. However, I now know the opposite is true.

The people around you, the people that care about you, will support you - but you need to be clear and up front about what you need.

This means being blunt and to the point and saying things like "I need to go for a run sometime tonight" or "tomorrow morning I'm going out for a 10 mile run". This was really uncomfortable for me at first, but it really led to better communication, which meant everyone was happier.

People who care about you want you to succeed if you're trying something hard, but you can't be coy about the time or resources that you need.

Find a way to break it down

This has been said in many, many ways before, but it is true - when tackling a big, hairy challenge, you need to break it down into small achievable pieces.

In my case, I found a book that had a training program all laid out. Each run was specified, every week. It showed the progression in distance from a few miles in week one, to a 20 mile run near the end.

Your ability to look at a big problem and deconstruct it into smaller pieces is an incredibly important skill. It's the "trick", if there is such a thing, to true achievement.

The goal: make the thing itself as close to a non-event as possible

This is sort of a frame of mind that I've learned from development work, but it became clear to me it's also for other things in life during the course of my training.

When working towards something hard, your focus should be not just that one day or event, but working towards making that one day or event as trivial as possible.

On the face of it, I realize it sounds kind of bananas. But my running program had me running all the time, and building up to longer and longer runs. My longest training run was 20 miles. Because I had built up gradually to that point, the 20 mile run, while long, was just a continuation of the program.

But here's the thing: the marathon itself was just an extension of my training.

By the day of the marathon, I felt very prepared. I knew I could do it. It was just a slightly longer version of what I had already done.

The hard part of running a marathon wasn't the day itself, but the work leading up to that day that made the marathon, frankly, a foregone conclusion. Or to paraphrase my running book - it isn't getting to the finish line that's hard, it's getting to the starting line.

This doesn't apply to just running, either. Gymnasts and ice skaters practice their routines relentlessly to the point that when the big performance comes, it's just one more run through the program.

In web development I've also learned that "big launches" need to be broken down as much as possible so that the actual launch is as trivial an event as can be managed. That could mean working with feature flags while still pushing code to production so that the 'big reveal' is a flip of flag.

Now, I stress as possible in the header above because, hey, you're still doing a hard thing. A 26 mile run is still a 26 mile run, even if you are prepared.

Control the venue as much as you can

When attempting something really hard, try to control what you can control. You have more control over the venue of your challenge than you might think. Don't get trapped by typical approaches or other's expectations. You're defining your challenge. As much as is within your control, dictate when and where it will happen.

In my case, my goal was to run a full marathon and finish. My goal wasn't running a particular marathon, or a particular time. I happen to live in the Washington D.C. area, so most people would jump to the conclusion that that meant running in the Marine Corps Marathon. And I did look into it.

However - the MCM has 40,000 runners. And I hate crowds. No. Way.

I decided to look around and see if there were any other DC area marathons. I found a very small one (200 or so runners) that was run on the banks of the Potomac. It was perfect for me - I got to be surrounded nature the whole time, and I wasn't fighting crowds.

Conclusion

I know this is a diversion from my usual code-focused posts, but I hope these lessons are helpful for you if you decide to tackle something really, really hard.