This whole section makes me think of construction which has similar abstraction and hidden complexity problems. It strikes me that they solve it by having design be entirely separate from implementation. Which is usually the corner where all our luck as software developers inevitably runs out.
Our methods are still rather "cowboy." We have cool "modernized cowboy" languages that make it hard to shoot your foot off, but at the end of the day, we're still just riding old horses and hoping for the best.
The core of the problem is really in this very paragraph:
> Right now, the tradeoffs people are asked to make online are too significant. Yes, advertising enables free access to most of what the internet provides, but the lack of practical control we all have over how our data is collected and shared is unacceptable. And solutions to this problem that simply rely on handing more of our data to a few gigantic private companies are not really solutions that help the people who use the internet, at all.
There is no solution to this. You can't advertise effectively and profitably without personal information. No matter how much you try to chop up and anonymize data, it's still personal and even in the absence of information you can wind up collecting a lot of data about someone (as browser fingerprinting does often times). The more information you have, the more is paid. Not even Apple avoids this, despite their privacy claims, and they too see there's far more money to be made as an ad network than letting Google gobble up the space.
But as much as I personally dislike this, my guess will be that this is the most successful (financially) change Mozilla enacts.
1. Work out of a separate office, ideally with a door. Don’t go in that room except when you’re working. If you work from a laptop, (mostly) never take it out of that room. Obviously some don’t have this luxury, but if you do and you’re not doing this, I highly suggest trying it.
2. Remove work communications from your phone. If you have a separate email account for work (highly likely), remove it from your phone. If you have Slack or some other chat app installed for work, remove it or remove your work account. If your company truly cares about a healthy work-life balance, this shouldn’t be an issue. If you need it for oncall, only install it then, then remove it.
3. Stick to a schedule. Log on and off about the same time each day. Don't jump on work for an hour or two here and there throughout the whole day. Log on, put your time in, log off. Don't work on weekends. There are times when you may need to put in extra and/or odd hours, but this should be the exception, not the norm.
With these three things in place, I am — quite successfully — able to get the pre-smartphone feel of disconnecting from work while working from home.
> "foo","bar,baz"
# This function takes a line i.e. $0, and treats it as a line of CSV, breakin
# it into individual fields, and storing them in the passed in field array. It
# returns the number of fields found, 0 if none found. It takes account of CSV
# quoting, and also commas within CSV quoted fields, but doesn't remove them
# from the parsed field.
# use in code like:
# number_of_fields = parse_csv_line($0, csv_fields)
# csv_fields[2] # get second parsed field in $0
function parse_csv_line(line, field, _field_count) {
_field_count = 0
# Treat each line as a CSV line and break it up into individual fields
while (match(line, /(\"([^\"]|\"\")+\")|([^,\"\n]+)/)) {
field[++_field_count] = substr(line, RSTART, RLENGTH)
line = substr(line, RSTART+RLENGTH+1, length(line))
}
return _field_count
}
It's not perfect but gets the job done most of the time and works across all awk implementations.That was not the kind of developer I was thinking about.
> But as I've become an advanced programmer, some of my opinions have become much stronger
I don't mind strong opinions at all. What I mind is extremism, and how terms like antipattern and code smell contributes to it.
You called the singleton pattern you described a "pretty much 100% bad pattern", then went on to explain your experience and opinion in a humble way. I think that's a great example of a strong opinion which was not "extreme".
I thought its features would make it the basis of a good coding font, too. Old Timey Mono is much closer to the original while Old Timey Code makes it an even better typeface for writing source code.
It was the coding font used in the Turbo Pascal 3.0 user manual. I've not seen it elsewhere except old patents' cover pages.
Enjoy and if you have any comments or questions, comment or enquire away.
https://github.com/dse/old-timey-mono-font
https://webonastick.com/fonts/old-timey-mono/