“When the entire household goes to bed, I do curl development for 2 more hours.”
twitter.com
twitter.com
"Getting off the ground" is for me, a great big open-ended architectural decision making process with an ocean of second-guessing myself. It's very very likely to keep me awake for hours reevaluating everything I did in that last couple of hours.
Smaller pieces of work are different. Actually fixing a bug has a fairly well defined "ending" and I can sleep easy basking in the warm glow of satisfaction. Even getting part way through implementing a feature is a thing that doesn't put my brain into "wide open exploration of all possibilities" mode. It's maybe not so easy to bask in achievement and sleep as a quick bug fix, but at least the "code dancing in my head" is a fairly narrow path of implementation I've probably already got the structural problems solved for.
For me - starting projects need empty weekends.
I've found that giving myself a solid hour to wind down helps immensely with slowing my brain down and letting me sleep more peacefully. Sometimes I read, or listen to music, or watch youtube, or have a beer or an edible and just hang with out, or just tidy the house or something. Whatever it is, it's not work, it's not in my office, and it's not hard. I've found I've been sleeping far better because of it.
Even on nights that I work super late on some head scratcher, with a full 12-15 hours at my desk, I still give myself the hour before going to bed.
If my mind is really stimulated, this may feel a bit awkward initially, forcing my mind to "calm down and focus on the video", but at the end of the hour it's usually fine.
And then do not start thinking about a related problem again when you shut the iPad off. I made that mistake so many times.
This made me always get the right amount of sleep no matter what.
This is why flexible/remote work time is good. If you need to go late you can but you won’t be punished for it by a 9am standup.
For me this formula works like magic because I can't control my mind from constantly iterating when starting new projects so I use this as a chemical brake.
This will invariably affect my sleep with either no sleep at all for 1-2 hours or dreams of fixing an issue over and over again resulting in me being less rested the next day.
I'd love for there to be a quick way to 'snap' out of programming mode but after over a decade of programming I haven't really found one (except for having a couple of pints...).
1. Batter my brain
2. Do something else
3. Sleep on it
4. Aha moment
I do it so often, I just say to colleagues that “It’s stewing in the back of my head for a bit” or “Need to sleep on it”.Before I was fully aware of it, I’d get super disheartened, sleep on it, then come in the next day and nail it by 10.
That’s another thing: if something becomes comical, there’s usually a pattern. If it’s the positive kind of comical, repeat the pattern. If negative, consciously avoid (but that appears comically harder).
I’ve come to terms that, for me, hacking into the night, dreaming about solutions, then waking up and implementing them... is manic and deeply unhealthy.
Maybe waking up was a segfault
However, they are downright tortuous if they come as fever dreams (though fever dreams are of course unpleasant no matter what the subject, and are often hard to willingly wake up from, since you're having a fever).
Every once in a while I’ll try to code something. I’m able to get by if I want. I get bored with it quick though and it doesn’t bring me the same kind of flow buzz mental stimulation it used to.
I’ve gotta say though, the modern web wtf happened?
I need a good 2-3 hours away from the problem before my brain relaxes and I can actually talk without sounding like I'm stoned or mildly autistic.
It’s only really for citations, not ‘scare quotes’.
Their closing quotes look inverted though.
As others already said, the French actually use the guillemets with thin spaces but the Swiss use them without.
But the outward pointing of the guillemets looks really odd to me. I like that the inward pointing guillemets basically scream "look at me, I'm a quoted part!".
I didn't know there was “ AND ”. I hate those fancy/smart quotes. They are not internationally understood and confuse computers and people alike. Just like I wish we would all just speak English, I wish we would all just use """".
Or do you mean the characters? Yes, I am indeed living in the German area and software here often uses those stupid, stupid "smart quotes". I believe we are also taught to write like that on paper. One opens, one closes the quoted phrase. Though I have no idea how this happened here, as right now, in Chrome, I can only produce "normal" quotes. """"
It's good to be aware of what type you are and what works for you. Conversely, recommending anyone just gets up earlier may be more harmful than helpful, depending on the person.
I m in a phase where the code at work interests me so much that I think I sleep 5 hours a day, the rest I touch that code. Non stop, and I have a kid.
Thank god it s usually just a phase :D
I had to adjust my bedtime to accommodate waking up so early. I'm fairly disciplined about it and never stay awake past 9:30pm.
The reason I chose morning instead of evening is I'm pretty tired after work to do anything. And so I get to dedicate my evenings to family time.
Edit: typos.
Modern life is just so depressing, we have so little free time. Everything must be scheduled, compartmentalized, etc
I usually do some programming when the kids and partner have gone to bed but I also do some exercise at lunch together with my partner.
So, 6.5 hours of sleep though? I need either 7 or 9, but 8 does not work for me.
So, I would be looking at 5a.
Let me ask you, do you immediately start coding, or do you need a few minutes to ‘warm up’?
What is the morning ritual, if you don’t mind me asking?
On my whatever laptop - the Internet is fair game.
I will wake up and let my brain wonder, then get up after 15 mins or so. By that time I'm wide enough awake to start coding straight away and know what I want to accomplish in the time I have. I don't check my phone at all in this time, as that'll lead to spending two hours down a rabbit hole on Reddit.
I wake up, get dressed in the dark, and go downstairs where I immediately start coding. I leave all the lights off and focus solely on my task at hand, and I typically use a todo list in bear.app to know immediately what to work on.
Breakfast comes at 6:30am when house wakes up. Since I'm WFH for day job I can shower do morning routine before work, which usually starts around 8am.
edit: typo
But the screwed up sleep cycles from years and years of this are starting to take their toll, so I've been trying everything I can to replicate that peace of mind during daylight hours. No silver bullet yet.
It's a different world and definitely has advantages. However, like you, I'm not sure it's worth the tradeoff of being horribly tired long before my usual bedtime.
In total, I think I still prefer getting up late and sleeping late.
There's less local news. There's nobody to call or text. There are no deliveries. Slack is quiet. My email is quiet. Our repos are quiet. The dev logs are quiet. My family is asleep so I know they're good. If I need a minute to think, I can sit on my front porch and not worry about being distracted.
Now that I have a young kid, it's really hard (and generally selfish) to work those hours. I miss it.
It's so bad that I've started to get anxiety every time I open my computer. I start to panic because I know a distraction is coming. It makes it so difficult.
It's probably frowned upon in some places, but when I _really_ need to focus (during daytime hours), I generally shut down slack, email, my phone, etc.
Generally, the teams I've worked with over the years have been amenable to this. I try to promote it with my teams as well: actual time off (no popping in while on vacation or sick), good sleep, time for focus, shutting off slack - especially when not working.
The last thing any of us need is to burn out because of notification overload. It makes us a stronger team if we're all healthy, well-rested, and able to get things done.
If people are up, I can’t lock in; there’s a constant distraction somewhere in my mind.
If I’m the only person awake in the house, I seem to hit flow state with ease.
Personally, I find I sometimes have trouble accepting good enough solutions. I want more structure, a better defined start. At night I can drop into a productive flow state with much less resistance, ignore many of the day-time wants. The hours run short; let's seize what we can from the waking hours. As well that "inspiration," I think there is probably a physiological barrier lowering that happens as we go into the night. As we recede from the gods' light, as it were.
I think we generally earn enough not to sell the best years our lives for an extra 20%. I don't think I'll lie on my death bed and wish I spent more time at the office. Hell, I wish I earned less and spent more time elsewhere.
Additionally doing that for 23 years, you can get done a lot of work.
I could see creating quality implementations of each of those taking that long.
A sensible plugin architecture would let you do either
curl --plugin=LDAP
or a naming convention would load the appropriate plugin based on the protocol.Yes I know, armchair code design. And I also know it's nice not to have to deal with configuration, a large app "just works" (though FYI, it does have 15-20 dependencies which are similar to plugins, it has 3 direct and more indirect dependencies). But, 2hrs a day * 23years = 16790hrs!!!!! Something seems wrong for that much time to be spent on "curl"
Just to be clear, first, thanks so much for curl! And second, of course having not touched the code ever I have no idea why it required 16k hours of dev time and continues to require more, it could totally be justified.
I'm only saying that at a glance, 2hrs a day, 23years sounds surprising and it makes me wonder if there isn't some ways to reduce the load.
You seem to be conflating curl as only an app that deals with http/https. Curl really does a lot more.
> we add features, improvements and bug-fixes continuously. With 240 command line options , 26 transfer protocols and countless combinations of things done over a crazy Internet that's just the nature of it all...
Curl has 170k lines of code, so it's bound to require some maintenance.
What was striking was just how happy and energetic he seemed to be. Really nice guy. That he spends so much time in front of the computer is quite a shock for me.
Because when I do it I become a nervous wreck when doing hobby projects, always looking for “more programming time” (like an addict), and without energy for anything else. So even though I like coding a lot, I just become the opposite: unenergetic and not that happy.
He has solved the puzzle somehow, it’s impressive.
I find it's really helped my mental health, especially when work can be a bit frustrating (in entirely normal ways)
Why waste those precious 'awake' hours on code when I can be enjoying my family?
For me, 7 kids was the point at which I could no longer effectively maintain procps.
IMO your comment is even more inspiring than the thread itself :)
- not working in the last few hours before going to sleep improved the quality of my sleep
- going to sleep together with my partner improved our relationship a lot (I'm not talking about sex life, just actually synchronizing the time of going to bed)
I’m guessing most our our personal metrics for what makes software “good” are only somewhat aligned with capital.
I'd imagine manual laborers sleep much more soundly, and are less likely to code in their down time. (but maybe!)
[0] https://medium.com/@hfuecks/so-we-went-with-a-hamburger-menu...
Push-ups are almost universal in fitness tests. They are a solid proxy for strength. Additionally, they are an exercise that is manageable enough that you can do daily and reap significant returns if you do them consistently.
What are the push-ups of programming? More specifically for me, c++.
I mean, sure, you can do Project Euler (or many other things), but you can also work on cool projects. I'm writing a superoptimizer (and I have C++ coding stuff at work). For both, I make a conscious effort to try to figure out better ways of doing that stuff (rather than just banging out ancient idiomatic C++ that isn't modern or good) - it's easy to slip into "doing things a dumb but quick way" that doesn't teach you much about the language or coding.
I have a similar attitude to push-ups, honestly. I'd rather bench press once a week and do a sport than be constantly banging out push-ups. In both things, you quickly get to the point where you're hitting diminishing returns from the "push-up" type of operation, unless your goal is "to be the best at exercising".
If we're comparing someone who couldn't complete 10 pushups or do a basic Project Euler problem with someone who can, I'd say "sure, that first person needs pushups (or programming equivalent)". I'm not sure once you're well beyond that point whether it makes sense to do that many more "pushups", unless you are going to a push-up competition in a month's time.
What are you trying to accomplish with C++?
If you’re looking to have a better command of syntax, then do advent of code or something aimed at that. If you’re trying to implement algorithms in C++, get an algorithms book and implement them in C++. If you’re trying to get better at designing and architecting C++ code, look at good implementations (easier said than to find).
What ever you practice, that’s what will improve, so it’s best to align that with your goals and work backwards.
Athletes tend to have different phases of their training. Some periods of pre-season training, season, post-season where there may be a greater emphasis on things like strength, endurance, power.
I think building is good, but there must be some other phases too. You can’t just build all year or else you might get stuck in a local maxima. So, there should be phases of learning, building, refining. Again, aligned with what your end goal is.
I don't think performing a specific exercise is the route here. It's probably best to work backwards and find projects/challenges you find interesting and implement them in c++. You'll inevitably build new muscles + strengthen existing ones and most critically, be motivated to do it.
Once you're not a beginner, programming mostly becomes about the specific domain youre working on, rather than the code. So improvement comes from a better understanding of banking or file systems or whatever you're doing, rather than cross-training in some proxy thing the way you do with exercise.
Come 9pm through 2am a beautiful, undisturbed coding period.
Super effective for getting it off the ground and knuckling down.
This however was not sustainable due to it all getting too much and sleep deprived.
Over 2 years of sub 6 hrs I started to get palpitations and fully burnt out and a week of weird fever brought me back but I couldn’t do that again.
We find it preferable to live in a society where a handful of people can accumulate billions of dollars. Dollars which have been extracted from the labor of others and influenced by the duress of losing food and shelter.
I find that I have 2 really good productive hours right before bed. I also find 3pm-5pm to be extremely unproductive for me. So my schedule is usually 7am-10am work, 10am-12pm exercise, 12pm-3pm work, 3pm-7pm dinner/family time, 8pm-10pm work.
This type of schedule feels very liberating to me. I don’t feel like I’m working that much, but when you add it up it’s quite a few productive hours in a day.
* https://stackoverflow.blog/2020/08/03/getting-started-with-c... * https://www.firsttimersonly.com/ * https://opensource.guide/how-to-contribute/ * https://github.com/MunGell/awesome-for-beginners
I assume she is not happy going to bed alone every night for 23 ??
Every time I read about one of these projects, I am at once SUPER THANKFUL for the time that this person puts in, to improve a project that I depend upon daily, but also somewhat incensed that there are thousands of large corporations that have a dependency on this stuff that they aren't giving back any support for.
link rel: https://curl.se/donation.html
I am not a Curl contributor, or related to the project, but I do donate.
Is it really not cool to wish that developers would get compensated for their time if their work is valuable?
I understand that the developer chose the license and distribution model, but if they hadn't chosen this model, then the community would have settled on whatever the best solution was that was permissive enough that they didn't have to pay for it. Passion projects in OS are a race to the bottom compensation-wise, due to dynamics outside of the control of the developers building them.
Usually, this is due to decisions the author made, and the author is in full control of changing the situation.
I come from a society where it's normal for people to give stuff with no strings attached, and then later claim I have a moral obligation to pay back for all the benefits I received. It sucked being in that society.
Scientology? China?
A sincere 'thank you' for curl.