AOL chief cuts 401(k) benefits, blames Obamacare and two "distressed babies" - <AUTHOR> http://www.washingtonpost.com/blogs/wonkblog/wp/2014/02/06/aol-chief-cuts-401k-benefits-blames-obamacare/ <comment><USER2> I'm surprised the company (not the insurance) had to pay that much for the babies medical bills.

I had a friend die to leukemia a year ago (she had just turned 27). 6 months prior to that, her first month in Stanford Hospital for chemo led to a bill to the insurance on the order of one million dollars.

I don't know how much the insurance billed the company (a small one without AOL's income), but they upheld it.

Tim Armstrong is the same CEO who last year fired Abel Lentz, chief creative officer of Patch, on the spot during his company-wide layout call [1]. I'm inclined to label him a Gordon Gekko-level psychopath.

[1] [http://www.forbes.com/sites/susanadams/2013/08/14/aols- chief...](http://www.forbes.com/sites/susanadams/2013/08/14/aols-chief- demonstrates-the-worst-way-to-fire-someone/)

<comment><USER3> >I'm surprised the company (not the insurance) had to pay that much for the babies medical bills.

my understanding that AOL self-insures for medical.

<comment><USER4> Which makes this even more offensive to pass off as increased costs because of "Obamacare". They were either providing sub-par coverage before or he's lying about increased costs.

</comment></comment></comment><comment><USER5> There are things you tally in the back of your mind as costs -- like, for example, a couple of outliers in the health benefit cost spreadsheet that correspond to newborns with urgent medical needs -- and then there are things you kinda-sorta bring up to the media as having caused you to cut benefits back.

It doesn't reflect too well on this guy's people skills if something in his brain didn't say, "I'm about to blame sick children for cutting my employees' benefits, maybe I should shut up."

</comment><comment><USER6> _" We had two AOL-ers that had distressed babies that were born that we paid a million dollars each to make sure those babies were OK in general," said Armstrong_

AOL does something like $2 billion in revenue per year. This cost would have been a fraction of one tenth of one percent of revenue. What. a. shithead.

<comment><USER7> He's saying he's cutting 401K matching for people who leave the company during a given year so that the company can continue paying for extraordinary medical costs for its employees.

It's a tradeoff, and morally it looks like the right one to me. Pay less to people who left to the company so you can continue paying more in health benefits to those who remain.

<comment><USER8> They aren't in a position where they actually need to choose one or the other. They can do both. Your position (penalize people for leaving before year end) will hurt the company. The article mentions the financial losses for both the people that leave (for a multitude of reasons), and the financial loss for those who stick around. But it's also a destruction of a very useful benefit that should help the company be competitive in hiring. 401k matching is one of the major tradeoffs people use for determining which job to take (or stay at). Now AOL is telling prospective employees: You'd better be loyal or we'll screw you over.

<comment><USER7> The financial loss for missing out on compounding of the matching funds for few months is likely much lower than the financial loss of passing on the increased cost to the employees.

That was the choice being made here.

<comment><USER9> It's a dumb choice to even have to make, if your profits are more than enough to not have to make it.

However it's their right to make it. If they want to run their company into the ground like that, why not.

</comment></comment></comment></comment></comment><comment><USER10> Old style, hired gun, selfish, cost-cutter CEO with absolutely no original ideas, or any clue how to turn the company around. It appears AOL's corporate culture is as out of date as their products.

Why would anyone voluntarily work with someone who's obviously such a shitty human being? The board of directors must be as bad at their jobs as he is.

</comment><comment><USER11> Here's the thing, it's a hot market, if you work at AOL, just walk out the door. It's Feb so you're not missing much contribution.

Or calculate how much you lost by the decision and go ask for a raise for 4 times as much. Tell them you gave $100 to someone down the street because their baby was sick and so now you need more money because your wife doesn't like the way the quarterlies are going to look after you spent $200 million at the bar getting drunk.

<comment><USER12> Now that we don't use CDs to install software anymore, what does AOL produce?

<comment><USER11> Like Google,Facebook,Yahoo they produce ads / eyeballs, nothing more, nothing less.

</comment></comment></comment><comment><USER13> This is why both healthcare and benefits from employment beyond cash and salary are many times bad. Companies should have no part in your healthcare/insurance, retirement savings or any other private aspect beyond reimbursing you for costs. I think independent pools of healthcare is the only way, outside of a company, wider nets with less impact.

</comment><comment><USER14> This seems more like a political statement than an actual explanation.

Armstrong pissed away $200 million on Patch, and is still blaming the $7.1 million in Obamacare costs for reducing employee benefits.

<comment><USER15> The sad thing is I know a couple of mommy blogs that get more traffic than Patch.

<comment><USER9> That so sounded like a bad yo momma joke.

</comment></comment></comment><comment><USER16> The worst thing about a struggling company is the petty, demoralizing measures management takes to cut costs. Save a few million in 401k costs but waste eight figures in decreased productivity, increased employee turnover, and lower morale overall. This seems shortsighted.

<comment><USER17> I'm confused as to how this will actually save them any money over time. Won't it just encourage everyone who wants to quit to wait until the 401k payout date to the extent possible and then do it all at once?

<comment><USER4> They could fire a lot of people before the end of the year...

</comment></comment></comment><comment><USER18> I feel for those poor women whose colleagues probably know about their "distressed" babies.

<comment><USER4> Luckily, thanks to "Obamacare" they can leave AOL and know they will be able to have affordable insurance.

<comment><USER19> They will be able to get insurance, but it won't be affordable.

<comment><USER12> As always, the cost will depend on whether the insured or their s.o. is employed, and what's been negotiated by the employer. The only thing that the Affordable Care Act ensures is that an insurance company can't deny insurance. If you're on your own you're still screwed.

In general, if a law like the _Affordable_ Care Act, or a product, has an adjective in its name, you won't find that adjective anywhere in the law or product except right there, in the name.

<comment><USER4> > The only thing that the Affordable Care Act ensures is that an insurance > company can't deny insurance. If you're on your own you're still screwed.

Where are you getting this stuff? It ensures a lot more than that... Coverage minimums, no policy maximums, pre-existing condition coverage, free annual checkups, etc etc. Pricing is also fixed within age groups except for smoking (which comes at a standard premium to your age group).

Another part is guaranteed affordability based on income. If you don't make a lot of money or live in an area where the plans are higher cost you will quality for a subsidy which brings the price down to an affordable level. If you make a lot of money the good news is the plan is already affordable.

Before the ACA I could only get a high-deductible plan that never covered a single thing in the half dozen years I had it. It would have been handy if I had gotten hit by a bus, but I would run into problems even then because it had a maximum policy outlay and they had the ability to drop me (then leaving any remaining medical problems as a "pre-existing" condition for a future insurer). The only good part about it was the Health Savings Account that allowed me to pay the exorbitant rates for medical care with pre-tax money. Without a subsidy I'm paying about the same now (hard to do an exact comparison without the HSA), but I can actually use the insurance. It won't be $150+ every time I walk into a doctors office, eye clinic, dentist or pharmacy.

<comment><USER12> I stand corrected. I look forward to my affordable care when I have to buy on the open market.

</comment></comment></comment></comment></comment></comment><comment><USER20> tl;dr: Tim Armstrong is a sociopath. AOL is a terrible place to work. Take your skills elsewhere.

</comment><comment><USER21> We just saw that big tech firms collude to hold down employee pay! See [https://news.ycombinator.com/item?id=1699529](https://news.ycombinator.com/item?id=1699529)

That means, in effect, there's only one employer in the tech industry. So the labor market in tech is not an example of a perfectly competitive market. It actually follows a monopsony model.

In a monopsonistic labor market, raising wages/benefits doesn't reduce employment, it actually increases employment, increases output and lowers prices...all good things! See my comments here for a fuller explanation: [https://news.ycombinator.com/item?id=7185717](https://news.ycombinator.com/item?id=7185717)

Therefore, Obamacare did _not_ hurt the tech labor market. Tim Armstrong is full of $hit. They should take away his degree in economics if he really believes his own bullcrap. He was just covering his own a$$. Maybe what's hurting his employees, stockholders and customers is his own overblown $3,216,534 salary in 2011. Source: [http://www.forbes.com/profile/tim- armstrong/](http://www.forbes.com/profile/tim-armstrong/)

</comment><comment><USER22> Sounds like he just hurt his company's prospects for hiring quality employees here in the DMV area with that crap explanation.

</comment><comment><USER23> Tim Armstrong already has a reputation as being a bit of a jerk: [https://news.ycombinator.com/item?id=6197081](https://news.ycombinator.com/item?id=6197081)

Previously, though, he was head of advertising at Google (1999-2009), and I don't remember him causing much negative publicity in that role.

</comment><comment><USER24> It's not often someones actually makes my skin crawl.</comment>


Show HN: HTML5 MMORPG – Node.js - <AUTHOR> http://mo.ee/?hackernews=2

<comment><USER2> This is the least-branded thing I've ever seen. After I got through the tutorial I asked in chat, and nobody seemed quite sure what the game's name was.

<comment><AUTHOR> Thanks for the reply. Game is called RPG MO. I might have to start showing the logo on loading and log-in screen then :)

</comment></comment><comment><USER3> I was interested until I noticed it was pay-to-win. Instantly closed the tab.

<comment><AUTHOR> It is not pay to win. In fact, you can get everything without paying a penny, it just takes longer. For example top players have not paid anything.</comment></comment>


Pause Me – Apply the 20-20-20 rule to prevent eyestrain while working - <AUTHOR> https://github.com/ppratscher/pause.me <comment><USER2> Implementation for Linux:

        #!/bin/bash
        set -e
        while true; do
            sleep 20m
            xlock -allowaccess&
            pid=$!
            sleep 20s
            kill $pid
        done

Check the manpage for xlock and choose a screensaver that won't keep you looking at the monitor.

<comment><USER3> I accidentally did something similar quite a few years ago when I stupidly set up a grep to run updatedb every two hours. There was several months lag as well between when I did that and my computer started locking up every two hours for a few minutes. And embarrassingly, it took me a week or two to put it together.

<comment><USER3> *stupidly set up a cron

</comment></comment></comment><comment><USER4> On the topic of eye strain. For anyone not familiar with f.lux, highly recommend you check it out. Everyone that I have recommended it to so far loves it. [https://justgetflux.com](https://justgetflux.com)

<comment><USER5> I recommend f.lux too. The only problems I've encountered with it are:

\- doesn't take into account wacky sun hours in nordic countries during winter, I get around this by setting my location to be somewhere else

\- isn't able to automatically detect when I'm playing a fullscreen videogame, when I would prefer it automatically switch off

<comment><USER6> \- every now and then I'll edit a photo, upload it somewhere, and then get very confused about why it looks so weird when showing it to somebody on my phone -- it would be great if f.lux shut off when certain user-configurable applications are in focus

<comment><USER7> This is what's kept me from using it, I'm often jumping in and out of photoshop.

</comment></comment></comment></comment><comment><USER8> I've found f.lux indispensable for long hours of computer work, be it coding or reading. Surprised when I find friends who haven't installed it (or an alternative) yet -- this stuff should be standard, especially on incredibly bright-screen Macs. If you're on Linux, try Redshift instead.

When will something like this be available on my non-jailbroken iPhone? Heck, maybe someone could make a third-party browser app that tints itself ... turning down the brightness is just not the same.

<comment><USER9> _Surprised when I find friends who haven 't installed it (or an alternative) yet_

And here, I am ridiculed for using Flux. Some marketing people just hate it. One co-worker has me disabling it anytime he has to look at my monitor (not much, but still an annoyance!)

</comment></comment><comment><USER10> There is also a Chrome App called Eye Care. It has slightly more flexibility and runs on Win/Mac/Linux

[https://chrome.google.com/webstore/detail/eye- care/ingonfahm...](https://chrome.google.com/webstore/detail/eye- care/ingonfahmmfgbamnahjpkccllhpmidcp?hl=en&gl=001)

+1 for f.lux

<comment><USER11> Another alternative is Melatonin[1] which tries to imitate f.lux for chrome(book) users.

[1] [https://giraj.github.io/melatonin](https://giraj.github.io/melatonin)

</comment></comment><comment><USER12> I have experienced that eyes strain much lesser while using a LCD display instead of an LED display. Experienced this pretty much consistently. LEDs start hurting my eyes after some time.

And I use a MBP with Retina display for long hours - and I have to say, it has never put stress on my eyes at all (unless I make the screen too bright). Also I do not work at super-high small font resolutions - that allows me to keep distance from the screen. The only thing that I find better than it is Kindle reader.

<comment><USER13> I hate HN lately. Now you can get downvoted for your personal experience. Take my upvote.

<comment><USER14> He probably got downvoted for messing up the technical terms as castell and geococcyxc pointed.

<comment><USER13> Huh, I hadn't even considered that as a reason. Oh HN, I am disappoint.

</comment></comment></comment></comment><comment><USER15> Has the 20-20-20 rule actually been scientifically verified as the optimal regime for relieving eye strain or was it something thought up by some bloke off the top of his head?

<comment><USER16> I wasn't able to find any conclusive evidence, but there are studies that have shown that taking breaks and changing the distance of what you're focusing on (things that the 20-20-20 rule suggests to do) can help improve eye strain. One study: [http://www.ajronline.org/doi/pdf/10.2214/ajr.184.2.01840681](http://www.ajronline.org/doi/pdf/10.2214/ajr.184.2.01840681)

</comment></comment><comment><USER17> Is this even usable as a developer?

Seems it'll be annoying for something to break my concentration every 20 minutes, losing my flow all the time.

<comment><USER18> From practical experience, the break in the flow is minimal: you lose your immediate context, not the entire structure you've built up in your mind. And the loss of context isn't always bad, as it's helped me figure out small problems or identify potential problems which I normally miss from being constantly heads down.

</comment></comment><comment><USER19> Workrave is a great cross platform application for doing this.

</comment><comment><USER20> I use Time Out for OS X, works like a charm:

[http://www.dejal.com/timeout/](http://www.dejal.com/timeout/)

</comment><comment><USER21> Sounds incredibly disruptive: [http://heeris.id.au/2013/this-is-why-you- shouldnt-interrupt-...](http://heeris.id.au/2013/this-is-why-you-shouldnt- interrupt-a-programmer/)

After 20 minutes, when you may finally be reaching flow... "POP"...

Using coloured glasses works for me to limit eye strain.

<comment><USER22> I have RSI and use Workrave to force me to take a 30 second break (where I stand up and stretch etc usually) every 10 minutes and a 5 minute break every hour of typing (which, since software development is a lot of discussing and thinking as well as just typing, doesn't usually mean it comes up every hour).

You get used to it, and I honestly don't think it disrupts any kind of flow. That cartoon is about disrupting you with some other information, not with a break.

</comment></comment><comment><USER23> If you use this, you might as well take the opportunity to stand up every 20 minutes.

</comment><comment><USER24> Would like to see multiple screen support too..

<comment><AUTHOR> Thanks for the feedback. Multi-Screen support has been added.

</comment></comment><comment><USER25> Thanks a lot, it seems simple and useful.

</comment><comment><USER26> Anything similar for OSX?

<comment><USER27> And for Linux(Mint/Ubuntu)?

<comment><USER28> For Linux - workrave [http://www.workrave.org/](http://www.workrave.org/)

<comment><USER29> Can also recommend workrave for Windows.</comment></comment></comment></comment>


Microsoft President Acknowledges They Were Previously Wrong on Open-Source - <AUTHOR> https://www.phoronix.com/scan.php?page=news_item&px=Microsoft-Pres-On-Open-Source <comment><USER2> So, now they're ready to Embrace, Extend, and Extinguish open source?</comment>


Reconstructing Gödel - <AUTHOR> http://rjlipton.wordpress.com/2014/11/01/reconstructing-godel/

<comment><USER2> >Kurt Gödel left a large amount of unpublished writings and notebooks and preserved correspondence. These writings were cataloged and organized by his first biographer, John Dawson, for a heroic two years. Those of highest scientific and general interest were published in volumes III, IV, and V of "Kurt Gödel: Collected Works".

>Among them was a list of 14 numbered assertions titled "My philosophical viewpoint" but without elaboration.

It would be cool if said numbered assertions were simply the Gödel Numbers of statements formally derived from his philosophical axioms.</comment>


Show HN: A Good CompSci T-shirt, Inspired by Donald Knuth - <AUTHOR> https://agoodcstshirt.com <comment><USER2> I tried to get through his books. Man, there's so much math. Gotta brush up on Calculus again.

Anyway, this is great. Its nice to honor those before them. I'm being cheep this year, so I'm not going to make many impulse purchases this year.

I would totally get the Dennis Ritchie shirt. Learning about him was my first assignment in CS101.

Maybe also have Charles Babbage. I learned about him back in 5th grade. Very VERY important guy in computing history.

<comment><AUTHOR> Hey - thanks. I'm also happy with the Dennis Ritchie portrait. As a "hobbyist" it took me some time to get that portrait right! I'll be adding Ken Thompson soon and most likely will add Charles Babbage to that list at some point.

Edit: I just took a look at your drawings, they are impressive. Is there any way I can get in touch with you privately?</comment></comment>


Postmates Driver Leaves Threatening Letter for Customer Who Didn't Tip - <AUTHOR> http://www.businessinsider.com/postmates-driver-leaves-threatening-letter-for-customer-who-didnt-tip-2017-8 <comment><USER2> Are we finally nearing the tipping point for tipping? This antiquated practice needs to go.

<comment><USER3> Sure, cause the next step is a Threatening Letter for too small of a tip....</comment></comment>


Is the world wide web a waste of water? - <AUTHOR> http://www.bbc.com/news/business-37471911 <comment><USER2> My knee has jerked and called this BS. Take electricity generation. When you include water used to generate electricity in this "cost" calculation, you're implying that money was spent to source the water or put it in the dam. It wasn't. The water was put in the dam by the sun, and the water cycle continues whether or not you put a turbine in its way. Does the dam have costs? Sure. But water is not one of them.</comment>


How Not to pitch Joel Spolsky - <AUTHOR> http://www.garinickson.com/how-not-to-pitch-joel-spolsky

<comment><USER2> IMHO - There are 3 distinct types of conversations at professional events.

1 - I want to sell you something. (Something can be part of a company too)

2 - I want a job.

3 - Let's connect and be friends. (This includes "Let's hook up" but that's a dangerous objective at professional events. And would require much more space)

If you go too quickly down one path, and then switch to another, it looks insincere. This is also why it's hard to sell to friends. If you're pitching a VC, and then ask about their kids, it's awkward. If you're looking at someone's dog pictures, and then ask them for money, you look like you were faking the interest.

</comment><comment><USER3> How Not to pitch _Anyone_.</comment>


FCC.gov reboots as an open government platform - <AUTHOR> http://radar.oreilly.com/2011/04/fcc-website-reboot-open-source-cloud.html

<comment><AUTHOR> "Everything should be an API," said Van Roekel, speaking in a briefing on Monday. "The experiences that live outside of FCC.gov should interact back into it. In a perfect world, no one should have to visit the FCC website." Instead, he said, you'd go to your favorite search engine or favorite app and open data from the FCC's platform would be baked into it.</comment>


Rewriting the heart of our sync engine - <AUTHOR> https://dropbox.tech/infrastructure/rewriting-the-heart-of-our-sync-engine <comment><USER2> I really liked this article because they spoke more of their decision making process than tech. Rewrite It In Rust is a meme by this point, but the blog actually goes through every point that could be discussed in such a strategy and why it made sense for Dropbox at this moment.

Really good blog post, imo.

<comment><USER3> The author (and some of his coworkers) gave a lot of interesting answers on reddit as well: [https://www.reddit.com/r/rust/comments/fjt4q3/rewriting_the_...](https://www.reddit.com/r/rust/comments/fjt4q3/rewriting_the_heart_of_our_sync_engine_in_rust/)

<comment><USER4> and on lobste.rs too :)

[https://lobste.rs/s/ob6a8z/rewriting_heart_our_sync_engine](https://lobste.rs/s/ob6a8z/rewriting_heart_our_sync_engine)

</comment></comment></comment><comment><USER4> hey everyone, author here! happy to answer any questions about the post, our system, or our usage of rust :)

<comment><USER5> Interesting to see Rust praised for its ergonomics, possibly not the first word that springs to mind (to an interested observer, not yet a user). Could you say a bit more about that?

<comment><USER6> Rust is funny because in one sense it's hard and clunky. However, it's only ever _precisely as hard and clunky as it needs to be_. Everywhere something can be made more concise, or readable, or convenient, without sacrificing any control, it has been. Anytime something is hard or inconvenient, it's because the underlying domain really is exactly that hard or inconvenient.

Contrast this with other languages, which are often clunky when they don't need to be and/or "easy" when they shouldn't be.

<comment><USER7> You're the second person I've seen approach that "Anytime something is hard or inconvenient, it's because the underlying domain really is exactly that hard or inconvenient." point in the last little while.

Have you read [https://fasterthanli.me/blog/2020/i-want-off-mr-golangs- wild...](https://fasterthanli.me/blog/2020/i-want-off-mr-golangs-wild-ride/)?

</comment></comment></comment></comment><comment><USER6> This is a wonderful examination of the "why" (which usually gets glossed over in these kinds of posts). Looking forward to the subsequent posts on the "how".

</comment><comment><USER8> I wonder what's the incentive to write such a thing on company blog?

Any ideas? To help with recruitment?

<comment><AUTHOR> As someone who's written a Dropbox blog post - yes. A tech blog is often cited by candidates as something they were intrigued by.

</comment></comment><comment><USER9> A bit light on details, but it seems more are incoming. Can't wait for those blog posts!

</comment><comment><USER10> Anyone know what the hero image is supposed to be?

<comment><USER11> Looks like a construction crane arm to me. Filename is `Infrastructure-3-1440x305px-light.png` so most likely a stock or free image, just ran through ascii-art filter.

Hint, open the file directly, zoom out a bit, and squint.

</comment></comment><comment><USER12> Its unfortunate that everybody's rewriting stuff with futures only to realize five years from now that structured concurrency is much safer and easier.

<comment><USER13> Citation on that?

<comment><USER14> Well, it's an opinion, however I'd like to know what exactly "structured concurrency" is supposed to mean.

<comment><USER12> Good intro here

[https://vorpus.org/blog/notes-on-structured-concurrency- or-g...](https://vorpus.org/blog/notes-on-structured-concurrency-or-go- statement-considered-harmful/)

</comment></comment></comment></comment><comment><USER15> You rewrite because it has to be done, despite the fact that it is no doubt the inferior solution both in terms of technical complexity and economic benefits, as Joel articulated well many years ago (and many others even earlier as well).

The code goes into this state because no one appreciates piece size enhancement. And those enhancement has no "impact". Everyone is waiting for the point that everyone's suffering from the bitrotten code is beyond most people's tolerance. And everyone knows well that some really bad things happen during the process, and they'll wisely refrain from doing anything meaningful.

That's basically one fact of how software engineering is done in practice.

Poor humans.

And this phenomenon is well known even in ancient time in other areas of society. Like even in Qin dynasty cicra 300BC, a Chinese physician Bian Que once claimed that his brothers are better than him [1], because they prevent illness before they occur.

And of course, everyone only knows Bian Que.</comment>


Answers on Stackoverflow can't be edited just because they are dangerous - <AUTHOR> http://meta.stackoverflow.com/questions/276496/how-to-deal-with-dangerous-answers/276577

<comment><AUTHOR> This is a question I myself asked on meta.stackoverflow, but I thought people might be interested in the answers (I was). Just because a top voted answer can lead to the generation of insecure PGP keys doesn't mean moderators can edit or delete it.

</comment><comment><USER2> It wouldn't have even crossed my mind to delete an answer like this. Answers should be downvoted and/or commented on if you believe they're incorrect.

If an answer receives downvotes it can then be voted for deletion; it takes only three "delete" votes (this may be rep-based, I don't know anymore since nothing I do will get me any more privileges) to delete it.

This is a better process than potentially arbitrary deletion by a single person.</comment>


Donald Knuth speaks about his life [video] - <AUTHOR> http://www.webofstories.com/playAll/donald.knuth <comment><USER2> I hate watching videos, and the transcript as provided was just unreadable, so in 2010 I put the transcript on GitHub and started reformatting it: [https://github.com/kragen/knuth- interview-2006](https://github.com/kragen/knuth-interview-2006)

Pull requests welcome!

<comment><USER3> The transcript is very nice thank you for putting it together. You are right though, I hate the bold face. Luckily a quick trip to the developer tools took care of it. A better way to index large bodies of free form text is a topic index that points to the correct areas of the text for phrases and topics. These are sometimes known as concordances. That way the reader can decide what is important to them rather than letting you decide.

<comment><USER2> Thanks for the feedback!

</comment></comment></comment><comment><USER4> Maybe it's just genetics, but the thing about this video that I've never been able to get out of my head is how a smile is etched into Knuth's face. Even happy elderly folks usually have heavy, distinctive frown wrinkles, and you almost never see cheek wrinkles like these, let alone so pronounced. Maybe the way Knuth aged only indicates that he doesn't grimace when concentrating as most of us do, but I like to think a lifetime of smiling is responsible for the appearance. Whenever I get into the rut of thinking that life is a steady decline into loneliness and dissatisfaction, memories of this video remind me to be positive and playful.

</comment><comment><USER5> I highly recommend the "Web of Stories" site in general -- many scientists and other people of note have given interviews about their lives and work there. As many of them are elderly, it is good that somebody gets them to do this before it is too late. Already we have people like Minsky and Mandelbrot that we can no longer ask about their lives but whose stories are archived on the site.

</comment><comment><USER6> What a wonderful interview. It's very comforting to know that Knuth worked very very hard. It seemed like he had to overcome a lot of gaps in his knowledge (if that's the right way to put it) because of the environment he grew up in, yet he made the most out of the cards he was dealt.

Where most would give up, Knuth worked harder. What an inspiring man.

</comment><comment><USER7> I like these two quotes of Knuth where he lets us know how hard he worked.

\--

From this other small interview [1]:

"When I'm working on a research problem I generally begin by filling dozens of sheets of scratch paper with partial calculations. When I eventually get to a point where I can think about the problem while swimming, then I'm often ready to solve it."

\--

From OP's interview [2]:

"So I went to Case, and the Dean of Case says to us, says, it's a all men's school, says, "Men, look at, look to the person on your left, and the person on your right. One of you isn't going to be here next year; one of you is going to fail." So I get to Case, and again I'm studying all the time, working really hard on my classes, and so for that I had to be kind of a machine.

I, the calculus book that I had, in high school we — in high school, as I said, our math program wasn't much, and I had never heard of calculus until I got to college. But the calculus book that we had was great, and in the back of the book there were supplementary problems that weren't, you know, that weren't assigned by the teacher. The teacher would assign, so this was a famous calculus text by a man named George Thomas, and I mention it especially because it was one of the first books published by Addison-Wesley, and I loved this calculus book so much that later I chose Addison-Wesley to be the publisher of my own book.

But Thomas's Calculus would have the text, then would have problems, and our teacher would assign, say, the even numbered problems, or something like that. I would also do the odd numbered problems. In the back of Thomas's book he had supplementary problems, the teacher didn't assign the supplementary problems; I worked the supplementary problems. I was, you know, I was scared I wouldn't learn calculus, so I worked hard on it, and it turned out that of course it took me longer to solve all these problems than the kids who were only working on what was assigned, at first. But after a year, I could do all of those problems in the same time as my classmates were doing the assigned problems, and after that I could just coast in mathematics, because I'd learned how to solve problems. So it was good that I was scared, in a way that I, you know, that made me start strong, and then I could coast afterwards, rather than always climbing and being on a lower part of the learning curve."

[1] [http://authenticinquirymaths.blogspot.pt/2015/11/maths-in- sc...](http://authenticinquirymaths.blogspot.pt/2015/11/maths-in-science- interview-with-don.html)

[2] Transcript from here: [https://github.com/kragen/knuth- interview-2006](https://github.com/kragen/knuth-interview-2006)

</comment><comment><USER8> I hope he offers a reward check for any inaccuracy in his interview.

[https://en.wikipedia.org/wiki/Knuth_reward_check](https://en.wikipedia.org/wiki/Knuth_reward_check)</comment>


Ask HN: Is there a general bisect tool? - <AUTHOR> Everyone loves `git bisect` but is there are more general tool for bisection in situations where you aren't dealing with git repositories? <comment><USER2> What situation do you have in mind? git bisect is a pretty simple idea in general. You hold the first and second reference and then update one of them to the new "middle" after testing it. The completely generalised implementation is trivial, so it's hard to tell what you intend to do.</comment>


Amazon S3 Path Deprecation Plan – The Rest of the Story - <AUTHOR> https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/ <comment><USER2> Thank you for listening! The original plan was insane. The new one is sane. As I pointed out here [https://twitter.com/dvassallo/status/1125549694778691584](https://twitter.com/dvassallo/status/1125549694778691584) thousands of printed books had references to V1 S3 URLs. Breaking them would have been a huge loss. Thank you!

<comment><USER3> If we're talking textbooks, well then. This is a textbook case for the 301 HTTP response code.

<comment><USER4> The old REST-style S3 URLs are specifically excluded from being able to redirect:

[https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to- page-...](https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page- redirect.html)

You can create a new bucket or switch your existing one to "Static Website Hosting" mode to enable the ability to 301 your content going forward. But the URL for the "website" version isn't the same as the REST URL. And again, there's no way to redirect from the old naming scheme to the new one.

If you have content that you've ever linked with one of those URLs, it's stuck there forever.

<comment><USER5> > And again, there's no way to redirect from the old naming scheme to the new > one.

For customers, no. For Amazon itself, yes. And I think that is what parent commenter meant. That Amazon should 301 all requests that are using old paths.

<comment><USER6> It's not that simple, unfortunately - it won't work for the old dotted addresses and S3 is not HTTP

</comment></comment></comment></comment></comment><comment><USER7> Still doesn't help with domain censorship. This was discussed in-depth in the other thread from yesterday, but TLDR, it's a lot harder to block [https://s3.amazonaws.com/tiananmen-square- facts](https://s3.amazonaws.com/tiananmen-square-facts) than [https://tiananmen-square-facts.s3.amazonaws.com](https://tiananmen-square- facts.s3.amazonaws.com) because DNS lookups are made before HTTPS kicks in.

<comment><USER8> It actually helps tremendously, since at the very least now there can be a "black market" for legacy (pre-Sept-2020) buckets, especially those on dedicated accounts that can be provided to organizations spreading facts like this.

<comment><USER9> > It actually helps tremendously, since at the very least now there can be a > "black market" for legacy (pre-Sept-2020) buckets

Err, no, countries will just block the legacy bucket URL style and say that only the bad guys would still be using it.

<comment><USER10> That would mean they are blocking all S3 buckets indiscriminately.

<comment><USER11> Couldn't they just middle-man the traffic and block specific URLs?

<comment><USER12> ssl prevents that.

<comment><USER13> It explicitly does not. It means there are additional barriers to doing it - people would need to accept a bad cert (we already know the overwhelming majority will), or they would need to slip in their own CA that allows them to generate their own valid certs for MITM, but that is eminently doable for the Chinese government inside of China. They can then block all traffic for people that do not use the cert that allows them to decrypt said traffic. It functionally is the exact same thing, and would still allow "legitimate" traffic without problem.

<comment><USER12> That's not what explicitly means. Ssl explicitly does prevent mitm attacks from intercepting URLs of requests.

The fact you can get around it by ignoring the cert is a bit irrelevant. It's like saying locks don't work because people can break your window.

<comment><USER13> As noted, you don't have to ignore the cert, and we're talking about state level actors.

And it's not the window. It's like saying locks don't work if the state has a master key, which they do.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> This is interesting for a few reasons. IMHO, the original deprecation plan was reasonable. Not generous, but reasonable. Especially compared to what other cloud providers (eg. Google Cloud) have done. It did seem like a diversion from their normal practice of obsessively supporting old stuff for as long as possible, but it really wasn't too bad.

Responding to feedback, publicly, and explaining what they were trying to do and why they needed to do it, is incredibly refreshing.

This seems like a big PR win for AWS. I'm left trusting and liking them more, not less.

<comment><USER2> How was the original plan "reasonable"? S3's FAQ talks about durability in terms of tens of thousands of years [https://aws.amazon.com/s3/faqs/](https://aws.amazon.com/s3/faqs/). To honor that claim, AWS has the burden to support v1 URLs until the end of the internet.

<comment><USER15> Storage durability has nothing to do with this. Changing how you access data saved in storage is a reasonable change to keep up with the evolution of networking technologies.

The change here was deprecating an access pattern, not destroying data or anything remotely similar.

<comment><USER2> Tell that to the author of "The Peace Corps and Latin America", who used S3 v1 URLs dozens of times in the book, with the assumption that they'd be available forever: [https://books.google.com/books?id=Q312DwAAQBAJ&pg=PA135&dq=h...](https://books.google.com/books?id=Q312DwAAQBAJ&pg=PA135&dq=https://s3.amazonaws.com&hl=en&sa=X&ved=0ahUKEwiA2tek3o3iAhWYHjQIHVOjDSwQ6AEIKjAB#v=onepage&q=https%3A%2F%2Fs3.amazonaws.com&f=false)

And thousands of other books like that.

<comment><USER16> Did they discuss that with Amazon prior to publishing? That seems like a completely silly assumption to make for a product that's been around for only 13 years.

<comment><USER2> Also every AWS book out there that has instructions on how to install the AWS CLI uses the v1 URL! You know why? Because that's the official URL! [https://twitter.com/dvassallo/status/1125502432924975104?s=2...](https://twitter.com/dvassallo/status/1125502432924975104?s=21)

</comment></comment></comment></comment></comment></comment><comment><USER17> > Bucket Names with Dots – It is important to note that bucket names with "." > characters are perfectly valid for website hosting and other use cases. > However, there are some known issues with TLS and with SSL certificates. We > are hard at work on a plan to support virtual-host requests to these > buckets, and will share the details well ahead of September 30, 2020.

I'm mystified how they're planning on doing this. Anybody care to speculate?

<comment><USER18> They're already a CA, could they reasonably just issue a certificate for every bucket? I have no idea how many buckets there are in total.

~They probably couldn't take the Cloudflare approach of jamming 100 customer domains onto each certificate, since that would leak bucket names too easily.~

<comment><USER19> > They probably couldn't take the Cloudflare approach of jamming 100 customer > domains onto each certificate, since that would leak bucket names too > easily.

Issuing one certificate at a time wouldn't make a difference since they're all submitted to public CT logs. Bucket names shouldn't contain sensitive information and security through obscurity is a bad idea.

<comment><USER20> > security through obscurity is a bad idea

Obscurity is a good and sensible layer for defense in depth. Systems A and A' were the only difference for A' is added obscurity will result in A' being more difficult to attack.

</comment></comment></comment></comment><comment><USER21> For anyone still confused to why AWS dominates the cloud market, it's because they're willing to grandfather features with a reasonable sunset horizon.

<comment><USER22> I'd say the momentum from having no competition in the space for nearly a decade is far more impactful.

<comment><USER23> I'd say it's a combination of both.

Not having competition means they got a lot of users, but having long-term feature support means people didn't run away.

</comment></comment></comment><comment><USER24> Malloc for the internet: "We launched S3 in early 2006. Jeff Bezos' original spec for S3 was very succinct – he wanted malloc (a key memory allocation function for C programs) for the Internet. From that starting point, S3 has grown to the point where it now stores many trillions of objects and processes millions of requests per second for them. Over the intervening 13 years, we have added many new storage options, features, and security controls to S3."

</comment><comment><USER25> It's nice to see that instead of deprecation support for the old paths will continue for all buckets created on or before the cut-off date of Sept 30, 2020.

So if you don't want to change, you can continue using the old paths. Just might limit access to some new features coming later that are dependent on the virtual host sub domains.

</comment><comment><USER26> This is a great step forward. Particularly changing the rules a little so that old buckets won't break after a certain date.

Thank you for taking the time to write this up Jeff.

<comment><AUTHOR> You are welcome. And now, back to my stay-cation.

</comment></comment><comment><USER27> Okay probably a dumb question but why can't they just have an automatic redirect from the path style to the virtual hosted ones under the hood? People get both options up front while they can work with the one they like.

</comment><comment><USER28> "In this example, jbarr-public and jeffbarr-public are bucket names; /images/ritchie_and_thompson_pdp11.jpeg and /jeffbarr- public/classic_amazon_door_desk.png are object keys."

I think this should be:

"In this example, jbarr-public and jeffbarr-public are bucket names; /images/ritchie_and_thompson_pdp11.jpeg and /classic_amazon_door_desk.png are object keys."

<comment><AUTHOR> You are correct; thanks for spotting this! All fixed.

</comment></comment><comment><USER29> Props to Amazon for listening to feedback and altering course.

</comment><comment><USER30> Grandfathering is a good idea. GJ AWS.

<comment><USER31> "GJ"?

<comment><USER32> Good job

</comment></comment></comment><comment><USER33> Kind of tangential, but is Bezos a programmer type? I thought he came from banking or the big 4. I'm curious if the "malloc for the internet" bit is verbatim.

<comment><USER34> I don't think Jeff is a programmer, but I think he is very smart and his success shows that he can understand and create businesses around lots of different types of concepts and ideas. I imagine in reality there is some amount of collaboration that happens before Bezos spouts off something like "create a malloc for the internet", but in any case, it's very strong for his brand of leadership that the lore states it came straight from him.

<comment><USER35> 1.) He graduated from CS at Princeton.

2.) Only an actual programmer would know what malloc is and how it works (he knows what it is exactly since he has the idea "malloc for the web")

<comment><USER34> Point taken, I didn't know Bezos had an engineering background! Amazing.

</comment></comment></comment></comment><comment><USER36> It seems to me that adding a 301 redirect from the old URL to the new would not unresonably stress the resources of AWS? It seems perfectly resonable to update the library access, but breaking old URLs seems unessesary. They could even add a second of latency to incentivise people who can update their links.

<comment><USER37> Some HTTP clients don't support redirects, or at least require an explicit configuration to enable them. So this would still be a breaking change for some applications.

</comment></comment><comment><USER38> Yeah pushing the new way is fine but not removing the logic to resolve the old way is better.

<comment><USER39> Agreed! I think Amazon definitely made the right call here.

</comment></comment><comment><USER40> Pre-signed urls still come back from the S3 SDK as a V1 path style. I'm assuming this either changes at some point, or that will continue to work?

</comment><comment><USER41> This was a DOA when I first read it. S3 or AWS wouldn't break a single customer before changing anything.

</comment><comment><USER42> Does this change affect S3 access via the various AWS SDKs, or just the format of URLs?

</comment><comment><USER43> I still don't get why there was such an uproar about this: Amazon should just issue a "301 Moved Permanently" and be done with it.

If your app for some arcane reason doesn't understand an HTTP status code that's been around for 20 years... your code is bad and you should feel bad.</comment>


Experimenting with Pricing Lifted My App Revenue Almost 500% - <AUTHOR> https://medium.com/@stuartkhall/experimenting-with-pricing-lifted-my-app-revenue-almost-500-79d90546e7fe <comment><USER2> I think the reason people are willing to pay subscriptions is that they want the product to get updates and stick around. Learning to use a new productivity tool takes time and effort that some people don't want to spend. On the other hand, I think the number of people that are willing to pay a subscription is much lower.</comment>


The next ODROID-N1 - <AUTHOR> http://com.odroid.com/sigong/blog/blog_list.php?bid=193 <comment><USER2> If you like Arch for ARM, it seems to support the used Rockchip RK3399 already, which is nice: [https://archlinuxarm.org/platforms/armv8/rockchip](https://archlinuxarm.org/platforms/armv8/rockchip)</comment>


Show HN: WolfPack – Distributed Computing Network - <AUTHOR> https://www.kickstarter.com/projects/250036859/wolfpack-distributed-computing-network

<comment><USER2> [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

 _If your work isn 't ready for people to try out yet, please don't put "Show HN" in the title. Once it's ready, come back and share it then.

For example, blog posts, email signups, and fundraisers can't be tried out, so they don't count as Show HNs._</comment>


Flat, marriage and family – Why young Indians don't turn entrepreneurs - <AUTHOR> http://abhinavsahai.com/flat-marriage-and-family-3-reasons-why-young-indians-dont-turn-entrepreneurs/ <comment><USER3> I get what he's trying to say, but the rant is far too sophomoric.

> These relatives are probably the ones whose kids would have done "nothing" > in their lives

The point could have been made without insulting their kids.

> One of my ex girlfriend had started talking about marriage barely when we > had graduated ... Of course, she's happily married and I, having failed 2 > startups in the past, am still building another startup! (I hope this post > reaches you, lady!)

> In another relationship, [my girlfriend] asked "Abhinav, hum ghar kab > lenge?" [Abhinav, when will we buy a home?] That day itself I knew – she > wasn't the one! No wonder that relationship didn't last long.(I am quite > sure you're reading this!)

Nothing classier than getting on an internet soapbox to tell your exes they were wrong.

> one such highly respected family member told me to look for a career in > animation, back in 2007-08. Recently, I met him at another family gathering > a few months back and he said "tum animation me kuch kyu nahi try karte?" > [Why don't you try something in animation?] I was like…dude? You are still > the same! Your thoughts are still stuck where they were 4-5 years back!

The author has, as of that moment, been involved in two failed startups and is working on the third. The other guy, doubting the author's ability to win the startup lottery, helpfully suggests a career in a rapidly-growing industry.

Author's response: Make fun of him for suggesting the same industry twice. Wat.

<comment><USER4> Agreed, I'm disappointed this made the front page. It's more or less a rant on people with different ideas than the author.

> graduated from some (worthless) A league institution in India and landed a > fat paying job. And believe me these are absolutely good for nothing folks. > If you are a startup guy, you already know that, don't you ;)

I stopped reading after that, it reads like a YouTube comment.

</comment></comment><comment><USER5> There is such thing as having 'enough' in life. For many people, having a mediocre job is OK if you can simply take care of your family, and have a happy home life.

I for one, will never judge anyone who chooses happiness and life balance over career success.

<comment><USER6> +1

It's the people giving up all those things for a tiny chance at career success that are the insane ones. Those 3 things are non-negotiable to me, and frankly, don't prevent career success.

</comment></comment><comment><USER7> To be fair, I don't think the author expected the rant to be critically analyzed at HN. He probably just wanted to vent, share some anecdotes and move on - won't be happening now.

Either way, what he said is not completely untrue. Obviously India has a very family oriented culture. A lot of educated young people are first generation educated, and thereby there are always expectations. Expectations, that are not just limited to settling down but that also lean towards making people risk averse. Times are changing, but the hangover of the days when people used to join one company right after college (preferably a government job) and retire after 40 years are still here.

Couple that with the fact that our higher education system is pretty much a mess, with very little directly applicable skills taught. And you can see why such questions are part & parcel of life if you have been out of college for 3-4 years.

Not all bad though, the big cities are seeing an enormous number of startup events. I cover startups and have seen very passionate student startups coming out of even Tier2/3 colleges and there are plenty of incubators/accelerators around.

If you are a young aspiring entrepreneur, you will have far more complex things to worry about than an occasional relative asking, "When are you getting married"

</comment><comment><USER8> Why do Indian devs feel compelled to blame their parents, families, wives, society for everything?

Come on guys, this is 2013 and not 2005. There are tons of product startups in Delhi/Bangalore/Pune/Chennai. If you don't find one that works for you, start one on your own.

Sure India isn't the US or Israel. But neither is it the India of 10 years back. _Carpe diem!_

<comment><USER9> I won't defend the quality of the article itself and rants are never a good thing, but Westerners are never really going to understand how crippling societal norms in the Indo-Pak region are.

Maturity has differing definitions in the East compared to the West and personally I think it's a little unfair to make comparisons. What's considered mature in the west can often be considered immature in the east. The youth that belong to ethnic minorities in the west often under go major identity crises, and takes them a very long time to come to terms with it.

Yes, we're in 2013 and there are great start-ups in India, but I'll be the first to tell you these are still huge exceptions to the rule. Things are starting to change, definitely and things are starting to move, but it's still going to take time.

You cannot begin to imagine the pressure young easterners face from their parents and their families to live to the ideals of their parents and extended families. I live in the UK, I could give you over 20 examples of my own life that held me back - Now i've learned to ignore those pressures and am taking corrective action, but believe me it's not easy.

I could give you over a 100 examples of others. Even when living within the West, ethnic minorities have huge pressures from the sub-culture.

It's never good to blame anything or anyone - that I agree with, but to suggest that it's easy to overcome the cultural obstacles would be an unfair statement.

<comment><USER8> I'm sorry but I don't agree. Cultural notions and societal pressures exist in all cultures, and India is no different.

Yet in a world that is being "eaten by software", if young, educated and ambitious software developers are bemoaning centuries-old practices for their inability to take risks, the blame lies closer than they think.

If they can't handle the heat, they shouldn't be in the kitchen. Get a safe, salaried job and shut up. Else cope with it. Society isn't going to change overnight, so stop moaning about it.

I'm sorry if I sound harsh but I'm been seeing more than a few of these whiny posts on HN lately.

<comment><USER10> IMO author isn't blaming anyone here. He has failed in 2 startups and riding the 3rd one, so he pretty much seems to be trying than just complaining. He is sharing his opinion about society with a catchy title (which isn't the only take away) and should be valued.

<comment><USER8> > Flat, marriage and family – 3 reasons why young Indians don't turn > entrepreneurs!

Um, the whole point of the post is to _blame_ those three reasons - <USER2> external, societal or environmental - for personal decisions that educated and young programmers don't make.

</comment></comment></comment></comment></comment><comment><USER11> I long for the days, long past gone, when people waited to be successful in their endeavors before stepping up onto a soap box to tell us why everyone is wrong for not embracing the same lifestyle as them.

</comment><comment><USER12> I'm not sure that this is specific to India - I think there's an obvious incompatibility between taking on financial responsibility for others and the level of risk inherent in start-ups.

The difference may just be that Indian's marry younger so it kicks in earlier.

</comment><comment><USER13> saying that marriage and kids discourages entrepreneurship, is not entirely correct. think it depends on the person, yes your risk profile changes once you are married, and some would be discouraged. not all will be, I quit my job for a startup with a 1 year old daughter. Granted I had saved up to last me 6 months though its not enough.

The challenge however is when your wife has a different risk profile, 3 months in of living on the bare minimum, eating noodles/beans everyday she may convince you to get a real job. The challenges faced my married entrepreneurs are different, you have to manage the expectations and sell them on the dream. If your partner is not sold, it can cause probs in the marriage.

Also it can be a serious motivator, you will do anything hustle your way to makr sure you can at least eat and pay the rent.

<comment><USER12> Certainly if you're going to enter into this sort of venture when you're married with a young family, it's a decision you need to make as a family rather than make yourself and try to impose on them.

Other than the capacity for risk and relative poverty elements, two other things I'd throw out there as factors are:

1) Exhaustion: I've two young children and the first few years of their lives I was exhausted most of the time and I know that I wasn't at my best professionally (lack of sleep makes you stupid and forgetful). It really isn't the best state to be risking everything on your own abilities.

2) Balancing work and life: If you're going to have kids you probably want (that's genuinely want rather than feel obliged) to spend time with them. It's different to a lot of other things you might want to do with your time in that there are things you can't say "I'll do later in life". They grow up incredibly quickly in those early years and it's not something you get a second shot at experiencing - you can't go back and see your infant child five years down the line when your business is settled.

And that's before the practicalities of child care and everything else that goes with it...

</comment></comment><comment><USER14> I couldn't agree more. Dude, I am going through the same. Here is my solution. Flat := I am not buying one. Life-long-renting rocks. Marriage := No marriage till my business settles. Family := My parents understand what I am doing. And I don't give a shit about anyone else.

</comment><comment><USER15> Most of it is true.

I would want to add that our education system does not support/encourage a start-up/business/creative mindset.

Even today, most of the bachelors degree courses are oriented towards teaching for and endorsing high grades (just to qualify for jobs and PG entrance exams) rather than developing critical thinking.

</comment><comment><USER16> A bit immature, shall I say? Everybody finds their own mojo in life, for some it is entrepreneurship. You will not be successful just by being in a profession, you have to be outstanding in that profession. Understand and appreciate other's choices. Entrepreneurship needs some wisdom too.

<comment><USER17> Yes, very immature.

"Of course, she's happily married and I, having failed 2 startups in the past, am still building another startup! (I hope this post reaches you, lady!)"

erm, what?

</comment></comment><comment><USER18> Poor author wouldn't have heard of HN if this post had not made it here. :P

</comment><comment><USER19> Flat, marriage, and family. That's 3 reasons.

Flat, marriage and family. That's 2 reasons.

<comment><USER20> It's called the "serial" comma, or "Oxford" comma. [http://en.wikipedia.org/wiki/Serial_comma](http://en.wikipedia.org/wiki/Serial_comma)

Some style guides promote use of it, some do not.</comment></comment>


Slouchy – a small Python script that warns you if you're slouching - <AUTHOR> https://github.com/pyskell/slouchy <comment><USER2> I can recommend to peruse the source code. It's well written and documented. Such projects always put a smile on my face, since they demonstrate how far we've come in some respects:

\- We've learned how to write and produce reusable, easily digestable code

\- Python gives us a language that is concise, readable

\- Frameworks like OpenCV let us do incredible things

\- Open Source allows us to share it and collaborate*

\- Platforms like Github facilitate the entire experience

10 years ago it took forever to configure my webcam on my Linux machine. I had to scour mailing lists and custom web sites to download various versions of kernel patches. Now my webcam is built-in and it takes 2-3 commands to take something off of Github and have fun.

* Of course Open Source is not new, but today it really seems like "Open Source won".

<comment> V-2 What about these magic string: "slouching_alert(QString, QString)"? I don't know Python. Does it work by reflection? I assume these are some kind of bindings to an underlying native API or something? It doesn't look very maintainable...

<comment><USER3> Qt uses slots and signals to control messaging between threads (e.g. the UI and the workers).

The Python binding to Qt is good, but it is auto-generated (from C++) and some of it shows up as non-Pythonic mechanisms or conventions.

<comment><USER4> Newer versions of PyQt have replaced the magic strings with a system that's much more Pythonic, using decorators and OOP.

I guess the author just wanted to keep backwards compatibility with old versions (or isn't aware of the change).

Edit: If anyone's interested, here's the new syntax: [http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slo...](http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html)

<comment><USER3> is PySide2 also getting that new system?

<comment><USER4> Looks like it: [https://wiki.qt.io/Signals_and_Slots_in_PySide](https://wiki.qt.io/Signals_and_Slots_in_PySide)

</comment></comment></comment></comment></comment></comment><comment><USER5> You know, I had a similar idea a few years ago. Initial idea was to prevent eye strain. You can check it out: [http://viewaide.com/](http://viewaide.com/) Here I analyze more than slouching (distance to the monitor and even blink rate). It was written in C++ in my students years and code style is a shame on me. But if someone is interested, I can upload this on Github.

<comment><USER6> I'm aware of a commercial application that uses computer vision to monitor a computer user's posture. [http://www.postureminder.co.uk/](http://www.postureminder.co.uk/)

</comment></comment><comment><USER7> How do you install that on a mac? Do you have to use [http://www.pythonschool.net/pyqt/distributing-your- applicati...](http://www.pythonschool.net/pyqt/distributing-your-application- on-mac-os-x/)?

<comment><USER8> Hey, there's now Mac install instructions in the README. Check them out and if you have any issues let me know.

</comment></comment><comment><USER9> I stop myself from slouching on long drives by adjusting the rearview mirror such that if I'm not sitting up straight, it won't show the back window correctly.

I notice pretty quickly when I'm not seeing the full rear window anymore, and adjust my posture.

I've been wondering if a similar tactic might work for monitors -- e.g., the same tech that can make a monitor intentionally hard for someone next to you to read might also let you adjust it so that if you slump down a few inches, it's hard to see.

Not sure of a similar tactic for public speaking (since nowadays you're likely to have a mic on your lapel...) but it also works for recording; you adjust your posture how it ought to be for good voice production, adjust the mic with it, and then if you slump the mic is no longer in the right place.

</comment><comment><USER10> I've got my monitors on 2 boxes adding about 6 inches each to their height. When I first started looking up to use them it was so uncomfortable and distracting that I could not work. I kept at it though and I find my posture has improved and the thought of going back is now uncomfortable.

I also recommend the following exercises which have improved my posture such that people have been saying that I look taller. [https://www.youtube.com/watch?v=FTV6UCh- yhs](https://www.youtube.com/watch?v=FTV6UCh-yhs) I have been doing them against my wall when I have 5 minutes to wait for a build or in the shower when I'm rinsing off.

</comment><comment><USER11> If you'd prefer hardware: [http://www.lumobodytech.com/lumo- lift/](http://www.lumobodytech.com/lumo-lift/)

</comment><comment><USER12> Really interesting project!

Caveat, not to take anything away from it, but I've found that my posture is mostly correlated with how much exercise I'm getting, and that I have a pretty limited ability to consciously fix it over a sustained period of time. Maybe Slouchy will help you, but if you end up frustrated by constant warnings, consider easing into a routine with some back and shoulders exercises.

</comment><comment><USER13> I vaguely remember reading that not all slouching is equal and that some forms of slouching are actually better for you (I googled but cannot find the original article but it appears there are various similar articles).

For example the leaning backwards slouch is supposedly better for your back than just sitting completely erect.

</comment><comment><USER14> I had a similar idea for public speakers.

There are known good and bad stances when you are giving a speech. The idea would be to follow the speaker and recognize his position using for example a kinect camera.

You could then get feedback either at the end of a dry run, or in real-time during the presentation.

<comment><USER15> Maybe feedback through a hidden shock collar of sorts?

</comment></comment><comment><USER16> This is neat.

OpenCV can also detect smoking. Will this be the next step in the trend to collect as much health data as possible?

</comment><comment><USER17> Is the setup menu supposed to do anything? It doesn't do anything for me on a Mac.

<comment><USER8> Yup, it takes a reference measurement of your upright posture. You should see your webcam indicator light flash. Slouchy then uses this reference to periodically check for slouching.

Please note that some Mac cameras require time to "warm up", so if yours is one of these then check slouchy.ini for a camera_delay config option.

</comment></comment><comment><USER18> Great, now my credit score will be affected by my posture as well</comment>


How HTML5 came into existence. - <AUTHOR> http://diveintohtml5.org/past.html

<comment><USER2> this is an absolutely wonderful read. I stumbled across it about a week ago. Every web developer should at least peruse it.

</comment><comment><USER3> It's always fascinating to read up about the history of languages. Another fascinating story is about how Javascript came into existence - it's a video by Douglas Crockford. <http://video.yahoo.com/watch/111593/1710507>

</comment><comment><USER4> It's a joy to read just about anything that Mark Pilgrim writes.

</comment><comment><USER5> A while back I spent some time following some of the W3 lists relating to web fonts. It amazed me just how open the process is .. any interested party can offer a view and attempt to influence the process.

To me, someone new to the process, it seemed that this arrangement was very democratic - and I was surprised that there weren't more people involved in the discussion, when so many millions of developers are set to be affected by the decisions that are made.

I was also left wondering if I'd have as much optimism and enthusiasm if I tried to become involved in traditional government politics ...

</comment><comment><USER6> My favorite quote: "The ones that win are the ones that ship."

Word.

</comment><comment><USER7> Reading this, it occurs to me that designers probably had little to no input into the creation of HTML and CSS. In other words, everyone struggles with this format today because the creators didn't pay attention to a group of users that would turn out to be very large. I guess hindsight is 20/20.

There are many drivers towards HTML5/CSS3, but at least one of them is meeting the needs of designers, so obviously this is in the process of being corrected. Like most people, I've been pretty anti-IE, but someone pointed out to me that HTML5 actually standardizes a lot of features that Microsoft implemented years ago - shadows, gradients, glows, embeddable fonts, opacity, etc. Vector graphics? Microsoft: VML in IE5, 1999. Mozilla: SVG in Firefox 1.5, 2005.

Maybe if open source and standards-based browser developers had taken the lead in supporting designers' needs, they could have overtaken IE years ago.

<comment><USER8> > HTML5 actually standardizes a lot of features that Microsoft implemented > years ago - shadows, gradients, glows, embeddable fonts, opacity, etc

Embeddable fonts are CSS, which is orhogonal to HTML5. Shadows and gradients are in <canvas> 2D context, but the well-known ones are also CSS properties, not HTML5.

SVG is based on VML. Microsoft proposed it to W3C (<http://www.w3.org/TR/NOTE- VML>), and W3C developed it further until it became SVG.

Microsoft's shadows, gradients and opactiy were based on DirectX filters with own horrible syntax, that didn't even tokenize according to CSS syntax. It couldn't be accepted in original form. Current syntax has been mostly invented by Apple (but gradients have been deemed too ugly as well, and spec went with Mozilla's syntax).

Microsoft's APIs may have been first, but they're not pretty. PPK calls IE- derived drag'n'drop API a "fucking disaster": [http://www.quirksmode.org/blog/archives/2009/09/the_html5_dr...](http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html)

Sadly, lots of Microsoft's and Netscape's Browser War-era inventions are in HTML5 only because lots/high-profile websites rely on them.

<comment><USER7> I'm not saying they did a good job, implementation wise. But isn't it a shame that I have to thank Microsoft for helping out designers instead of the browser standards people?

<comment><USER9> Well CSS was invented by "browser standards people" to make design easier and more powerful. (Blame browser bugs and incompatibilities for making them more difficult than necessary to use.)

Microsofts inventions (Ajax, drag-drop, contentEditable) were more targeted towards application development than design.

<comment><USER7> Maybe you're misunderstanding - many of the new CSS3 properties that make life easier for designers implement features that IE has had since IE6 and even earlier. Standards-compliant browser developers are only catching up now.</comment></comment></comment></comment></comment>


Barr Urges US to Buy Stakes in Ericsson and Nokia to Compete with Huawei - <AUTHOR> https://www.ft.com/content/1aa61918-48fc-11ea-aeb3-955839e06441 <comment><USER2> In my opinion it is a mistake to thinks that to compete with China we need to become China. It would benefit us greatly in the long run to figure out and fix whatever problems in the market are preventing more companies from competing in this space.</comment>


Ansible Alternatives in Python - <AUTHOR> http://blog.rfox.eu/en/Explorations/Trying_Ansible_alternatives_in_python.html <comment><USER2> How hard is YAML to use really? The world has much more interesting problems to solve than a decent markup language.

I use Ansible with zero issues daily as do many in our team. It's perplexing coders fined it difficult or hard to use to the point where something as useful as Ansible becomes undesirable because it uses YAML?

I hate to say it, but the "alternatives" are just the least good somewhat similar products.

<comment><USER3> The problem we have with ansible is not yaml related but the push based approach, even with awx/tower as soon as you're running hundreds of machines of a given group it gets painful.

We are actually seriously considering a shift to salt atm...

<comment><USER4> The push versus pull difference between ansible versus salt is a worthwhile design choice. In my opinion, salt does start to make sense until about when you would outgrow ansible. That said having to replace all the playbooks and. Roles written in ansible.when you outgrow it is a bummer. I don't want ansible to move away from push, but it would be nice if there was a layer to let it work both ways.

<comment><USER5> Or you can use Ansible-pull.

[https://docs.ansible.com/ansible/latest/cli/ansible- pull.htm...](https://docs.ansible.com/ansible/latest/cli/ansible-pull.html)

<comment> em-bee likewise salt also has a way to push via salt-ssh which works just like ansible without a salt-minion.

so at this point both ansible and salt can go both directions, and i do infact myself make use of that. i use pull/minions on all servers in our network, and push to those servers outside our network, because they can't reach the master behind the firewall.

although zerotier has helped solve that problem, so i'll probably be able to stop using salt-ssh soon

</comment></comment></comment></comment></comment><comment><USER6> I have tried or used most of the projects cited in the blog post. I pretty much agree with the conclusion that Pyinfra looks the most promising at this point. I've also tried Bundlewrap ([https://bundlewrap.org/](https://bundlewrap.org/)) a couple of years ago though I lack the perspective to compare them. Another interesting project not cited in the post is Nuka ([https://doc.bearstech.com/nuka/](https://doc.bearstech.com/nuka/)).

Some personal perspectives:

I have used Ansible in the past and didn't like it.

I have used Fabric and Fabtools many years ago (Fabtools happens to be written by a friend) and I agree that something like Fabtools is needed to make Fabric relevant. Fabric has a completely revamped version, which was quite long in the making, but not fairly stable, but AFAIK Fabric 2 doesn't (yet) have something similar to what Fabtools was to Fabric 1.

I had great hope for opsmop ([https://github.com/opsmop/opsmop](https://github.com/opsmop/opsmop)) by Ansible's creator, which was supposed to address Ansible's shortcomings, but he dropped the project (citing lack of traction) a few months after starting it in 2018.

At this point I'm sticking to Fabric 2, but I'm still looking for alternatives.

I'm also wondering if Augeas ([https://augeas.net/](https://augeas.net/) \- a configuration editing tool which parses configuration files for a large set of software in their native formats and transforms them into a tree) could be used in combination with one the of tools mentioned in the post to ease the parts related to managing configuration.

<comment><USER7> Thanks for the links. I am kinda surprised by the activity on this blogpost, it's just something that I've put together in an hour or so, mostly as notes for myself.

I do "exporations" where I put bunch of related stuff into the wiki node and then take an evening to go over them and do some evaluation. It wasn't really meant as a comprehensive study.

</comment></comment><comment><USER8> The author of Ansible actually tried to make a Python3 DSL based Ansible alternative called opsmop.[1]

I'm not sure why but it was discontinued. I would think that if anyone could make that work it would be that particular person with their previous experience from Cobbler and Ansible.

I started using Ansible when it was brand spanking new and what I've noticed over the years is that people often over complicate their Ansible use. Sometimes it's better to out source something to an RPM or a container than to use Ansible to do every single thing.

1\. [https://github.com/opsmop/opsmop](https://github.com/opsmop/opsmop)

<comment><USER9> Here's an explanation by the sensible/opsmop creator: [https://medium.com/@michaeldehaan/revisiting-systems- managem...](https://medium.com/@michaeldehaan/revisiting-systems-management- assumptions-5eee2d5fa82e)

<comment><USER8> Thanks, I just skimmed it and found this.

>Nobody wants to keep up with a configuration management tool, especially learn another new one (which is why creating opsmop failed), learn another YAML dialect, or maintain a full active cloud abstraction layer running on top of their cloud itself.

</comment></comment></comment><comment><USER10> If you feel YAML is too complicated for you, a host of problems await for anything you want to do in infrastructure...

Ansible has it's own set of features that are largely abstracted out by it's YAML playbook syntax. You can run it across any (or almost) system, from Linux to Windows and even networking devices. You can create modules in any language you want.

For speeding up Ansible runs, a number of optimisations can be made including using Mitogen [https://mitogen.networkgenomics.com/ansible_detailed.html](https://mitogen.networkgenomics.com/ansible_detailed.html)

Alternatives listed in the blog post don't even come close to the speed and power of Ansible.

<comment><USER11> > Ansible has its own set of features that are largely abstracted out by its > YAML playbook syntax.

I don't understand what YAML has to do with abstraction. The example from pyinfra is pretty much the same as the ansible equivalent. Whether the feature set is comparable is a different question (I agree with you, it's probably nowhere close to ansible).

        apt.packages(
            {'Install iftop'},
            'iftop',
            sudo=True,
            update=True,
        )

> If you feel YAML is too complicated for you

Ansible YAML is a poor substitute for a real language once you add conditional logic to the mix. Another huge downside is that composition in YAML is much harder than in any programming language. A Python (or dhall, or cue) library that compiled to ansible would be pretty swell.

<comment><USER12> _Ansible YAML is a poor substitute for a real language once you add conditional logic to the mix. Another huge downside is that composition in YAML is much harder than in any programming language_

Given that the average devops person is already stuck with yaml, many of those problems are addressed by jsonnet. But I agree, having it in the language would be preferable. I think it stems from the desire to make infrastructure declarative, which isn't really the case when your declarations are dynamic.

<comment> dynamite-ready I've written a lot of Ansible in the past year. While I'm happy with the work, I'd admit to looking at some of the logic I've had to put together with clunky, esoteric constructs like `with_nested_items` and the super colloquial variable system, while thinking "it's great to be able to do this stuff, but htf am I going to explain this code to a newbie?".

I'd like some kind of 'sensible', backwards compatible layer in Ansible that would allow me to rewrite stuff in raw Python, with 'normal' code, where it makes sense, but keep YAML for constructs that do actually look and work like lists of basic tasks.

<comment><USER13> Stuff that gets too complex you can pretty easily abstract into a role and jump into Python.

[https://opendev.org/zuul/zuul- jobs/src/branch/master/roles/t...](https://opendev.org/zuul/zuul- jobs/src/branch/master/roles/tox/library/tox_install_sibling_packages.py) is a nice example of some pretty complex co-install of libraries for testing under tox (and you can unit test bits of it too...).

[https://zuul-ci.org/docs/zuul-jobs/](https://zuul-ci.org/docs/zuul-jobs/) is a collection of roles and playbooks that do a lot of complicated things with nice abstractions such as this. Although they're designed to be called from the Zuul CI system, there's many good examples for anyone wanting to build out their Ansible in a scalable and maintainable way.

</comment></comment></comment></comment></comment><comment><USER14> Probably worth checking out Mitogen[0] if you want to take away some of the pain points with Ansible. It's an extremely well built product that really complements Ansible.

[0] [https://mitogen.networkgenomics.com/](https://mitogen.networkgenomics.com/)

<comment><USER7> I've seen Mitogen, but that to me looks like lowlevel ssh paralelization library. Great project, but it doesn't seem to provide any abstractions, for example declarative package manager wrapper, that would work on multiple linux versions.

</comment></comment><comment><USER15> Kubernetes already requires YAML. If you use Kubernetes, you might as well use Ansible.

How YAML got so popular is a mystery to me. It's a huge pain. Then again, I've given up on fighting it, and simply learned how to use it, since I can't escape Kubernetes anyways.

<comment><USER16> > How YAML got so popular is a mystery to me.

It's good at being human-readable. It's basically json with indents and comments. What other configuration format is out there that allows for tree structure and it's easier on humans? (not XML or json).

<comment><USER17> I'd say YAML's good at _seeming_ human-readable...

JSON has some surprises and a lot of limitations, but is so much simpler than YAML that it seems worth putting up with them.

</comment></comment></comment><comment><USER18> There is no mention of Python Bundlewrap ([https://bundlewrap.org/](https://bundlewrap.org/)), which I have really liked, though I don't know how speed and scalability compares. I believe Bundlewrap will welcome contributors for these enhancements.

</comment><comment><USER19> Fabric was a casualty of the Python 2/3 split. Unicode isn't a great default for the shell interaction so the project took a long time to be ported, and by then it lost all momentum.

The successor project, Invoke, was finally released a year or two ago, but now it's unmaintained too.

<comment><USER20> I think it's more that Jeff Forcier is one – very productive – person and while tons of places used Fabric there were far fewer who contributed significantly to supporting it.

I much prefer Python to programming in a YAML derivative with multiple bolt-on extension mechanisms but at the end of the day Ansible brings a lot to the table because there are a bunch of people employed by Red Hat to work on it full-time.

<comment><USER19> Yes that's true, but turning it around: the task is too big (and also sucks too much) for one person to do mostly alone. And also like, why?

There would've been a more active community of companies depending on it and it wouldn't have blocked out on him if it had maintained the momentum it had.

<comment><USER20> I was talking about it at the peak of that momentum. This is a common problem in open source: companies often don't contribute or only support specific things they need. It's much harder to get general ongoing contributions even if that would make the entire community better off long-term.

</comment></comment></comment></comment><comment><USER21> "In Python" seems like a weird constraint on the problem. Python doesn't really read like a great deployment configuration language.

[https://en.wikipedia.org/wiki/Infrastructure_as_code#Communi...](https://en.wikipedia.org/wiki/Infrastructure_as_code#Community_content) the space has a lot of players. For upgrading like one VPS and some home servers, I'd probably go with Ansible. It probably has the lowest barrier to entry, and getting an IDE just solves the problem that you created by wanting something in Python. Basic config management doesn't need an IDE.

<comment><USER22> "In Python" does seem like an odd constraint. I take the OP's intent to be "let's find something imperative not declarative". If that's the case, I'd love to see the idempotent functionality of Ansible's modules ( _e.g._ lineinfile) made available as simple CLI commands.

<comment><USER23> I assume you consider Ansible to be "declarative". By that definition of "declarative", the following Bash script is also "declarative":

        #!/bin/bash
        rm -f /etc/bar
        mkdir -p /etc/conf.d
        cp -u /srv/src.txt /etc/conf.d/

because Anisble playbook is really just bunch of following statements

        if (!stuff_exists(stuff))
            create_stuff()

which the above utilities in Bash script do with the provided flags.

Ansible "declarativeness" isn't anything worthy of worship. It's plain dumb definition of sequence of steps to take with added guard for each step.

So let's be honest and stop pretending that this "declarativeness" is anything novel or of any value worthy of writing sequence of (guarded) commands in ad- hoc YAML language. Just add some sugar for the pattern above to a decent language and that's all that's needed.

</comment></comment></comment><comment><USER24> This is fascinating to me, as someone who manages and Ansible-based config management infra that keeps thousands of servers running. The problem I have with Ansible isn't the YAML, it's the Python. I spend at least half my time struggling with reconciling which Python runtime and modules are installed on which hosts. And between the Python 2 EOL, the growth of ARM hosts in our inventory, a fuzzy and changing line between what's "Ansible" or "Python" or "Jinja" in the syntax, and regular OS upgrades, it's a lot more work than it ought to be. And at scale there are some really frustrating performance issues that aren't entirely Python's fault but which would be much better if we could use native code. I've been hoping for years that someone would build a Golang tool that could take Ansible playbooks and do the right thing with minimal tweaking, but I think we're beyond the point where anyone is going to invest that much time and effort into new CM tooling.

<comment><USER25> I suspect if anybody is going to write something new it won't benefit so much by being constrained by Ansible's YAML parser, etc.

I toyed with writing a simple thing, inspired by Fabric, and that was moderately useful:

[https://github.com/skx/deployr](https://github.com/skx/deployr)

Later I tried again, with something more puppet-like, to experiment with how you might handle dependencies in a simple and consistent fashion, ideally without using a complete language (i.e. puppet/ruby):

[https://github.com/skx/marionette/](https://github.com/skx/marionette/)

The problem with the simpler approach is that they do only basic things, to support "everything" means writing a hell of a lot of glue, and making a lot of busywork until it is remotely useful to others.

Puppet/CFengine/Chef/Salt/Ansible sometimes seem like they're a dead-end with how many things are moving to master /golden images (packer, etc), and containers.

</comment></comment><comment><USER26> It's healthy to look at alternatives, good on OP.

I wanted to comment on a specific part that mentions that Ansible's YAML is a nightmare to debug.

I wouldn't describe it like that but I'm biased because I've written ARA Records Ansible exactly to make playbooks easier to understand and troubleshoot: [https://github.com/ansible- community/ara](https://github.com/ansible-community/ara)

I've been using Ansible for many years in different contexts and I think it is easy to get into the trap of "when you have a hammer, everything looks like a nail".

For me, Ansible shines as an excellent abstraction layer for supporting different operating systems or as a glue between different tools.

I am very much a believer of using the right tool for the job. Ansible isn't always the answer and I think that's OK.

<comment><USER27> So when is Ansible not the answer?

</comment></comment><comment><USER28> I think there would be value in providing idempotent operations to all common Linux tools. This often exist, but sometimes with weird side effects. Sometimes an add operation returns a failure code because item already exist and so on. It would be quite worthwhile to go through the Ansible documentation and document a command line alternative for each. Then it would be easier to use a regular programming language to achieve the same effects.

</comment><comment><USER29> If one is not tied to python, NixOps is a breath of fresh air.

</comment><comment><USER30> I don't see anyone else mentioning that the selling point of using YAML in Ansible is "human readable."

I see no practical benefit to requiring devops people to use one scripting language over another, when there are so many equivalent choices to accomplish the same tasks.

<comment><USER20> This isn't a simple binary flag - there's an inflection point for most projects where YAML starts easier to read for simple tasks but you end up having to do things with loops, value manipulation, etc. which would be much easier to read in normal Python.

<comment><USER30> Well, that presumes the person is a regular user of Python. Maybe they write bash scripts instead. Maybe they're using a BSD and write bourne shell scripts and hate bash. Maybe they're Windows servers using powershell.

As someone else stated the beauty of Ansible is that it abstracts away the most common functions so that the scripts are portable, and the person maintaining the scripts doesn't have to keep up with every syntax change in version if they keep Ansible updated.

Unless you're going to convince individual open source project maintainers to agree to and convert to a somewhat rigid style guide for command line flags, API syntax, and configuration syntax (which no one has managed to do, hence the existence of distros, containers, and Ansible), you're gonna have a hard time convincing anyone to give up on markup languages in deployment tools, I think.

<comment><USER20> My point was that language complexity needs to be there once you get over a certain level of project complexity, which many projects hit. Once you need to do more than the most basic operations you're learning something which is going to be better off learning a regular programming language which can take you much further rather than learning at least two separate syntaxes (Python and Jinja2) plus all of YAML's quirks and duplicate syntax structure, and almost all programming tools have better IDE support, linting, and validation tools.

If you want a document language, TOML is a better choice (or JSON or even non- enterprise XML). If you want to write programs, anything else is a better choice. Hashicorp's HCL is interesting in that it's much better designed and supported but even there the main thing which makes it work is the presence of an escape hatch when you hit a limitation.

</comment></comment></comment></comment><comment><USER31> What I like most from Ansible is that a playbook is idempotent and (mostly) declarational. Biggest downside is that it's hard to debug (no realtime output) and a bit slow (but acceptable)

</comment><comment><USER32> I wasn't aware of the VSCode Ansible plugin, I've got to check that out.

Pyinfra examples he shows don't look that different from Ansible YAML. ("apt('nginx', update=True, present=True)")

I'm pretty happy with Ansible, with one exception: speed. I may play with Pyinfra, but I'm heavily invested in Ansible. But if Pyinfra is fast, I might try replacing our Fabric with it. I get pushback about how long Ansible takes for our deploys vs. Fabric.

<comment><USER33> So I looked at the VSCode Ansible plugin and it says it is authored by "Microsoft"[1], but the repository is owned by a Github organization called "Visual Studio China"[2] and the plugin identifier is "vscoss.vscode-ansible", when other Microsoft plugins usually has identifiers in the "ms-vscode" namespace (for example the TSLint and C/C++ extensions) or "ms-vscode-remote" or some similar namespace starting with "ms".

So why is this ansible plugin such an outlier? How can I be sure that this plugin is actually authored by Microsoft and not by some other entity?

Maybe I'm just being paranoid.

Edit: Ok so if you click the name "Microsoft" in the vscode marketplace it will take you to a list of Microsoft authored plugins, which I guess means the organization name in the marketplace is verified somehow. So yes, I was just being paranoid.

[1] [https://marketplace.visualstudio.com/items?itemName=vscoss.v...](https://marketplace.visualstudio.com/items?itemName=vscoss.vscode- ansible)

[2] [https://github.com/VSChina/vscode- ansible](https://github.com/VSChina/vscode-ansible)

</comment></comment><comment><USER34> I've gotten a lot of mileage out of using cloud-init to bootstrap VMs. The configuration is in YAML, but doesn't require any other client side tooling. Most major distributions (incl. the public clouds) all support it and make it available in their machine images. It integrates nicely into Terraform too.

[https://cloudinit.readthedocs.io](https://cloudinit.readthedocs.io)

</comment><comment><USER35> pyinfra looks interesting.

The thing I want it a way to keep configuration for a single server in a git repo, and have that server periodically run "git pull" and apply any changes.

I ended up bodging together some custom scripts to do this but I really didn't want to. Maybe I can get pyinfra to do this? I don't want to have to run it on another machine and run commands over ssh though.

<comment><USER36> For reference, in Ansible land the two approaches to this would be [https://docs.ansible.com/ansible/latest/cli/ansible- pull.htm...](https://docs.ansible.com/ansible/latest/cli/ansible-pull.html) or [https://github.com/ansible/awx](https://github.com/ansible/awx) (upstream project of Ansible Tower)

<comment><USER35> I had missed ansible-pull, looks like the exact pattern I want. Thanks!

</comment></comment></comment><comment><USER37> To be honest, I do everything inside my nodes via [https://cloud- init.io](https://cloud-init.io) these days. A single YAML file (yes, yes, I know) that typically bootstraps the machine, grabs a compose file, end done.

</comment><comment><USER38> What I really want is a strongly typed version of Ansible possibly substituting the YAML bit for just calling library code in say Go or something else.

<comment><USER39> I'm on the same boat. I'd like to try cuelang but I haven't had the opportunity

</comment></comment><comment><USER40> None of this stuff works with pipelined / staged deployments, where tools cannot make changes across stages using SSH.

</comment><comment><USER41> For all its flaws, Docker does solve a lot of the pain the author mentions. Deploying postgres, for example, with a config file and keeping it running is really very easy with Docker Compose.

Not affiliated with Docker except for using it, and while I do have some thoughts about design choices made by Docker, it's still a very good tool.

<comment> dynamite-ready I don't see Docker as an alternative to a configuration manager. For one, turning to containers represents a distinct architectural choice, with a clear set of tradeoffs, that a developer may or may not want to introduce to a project.

<comment><USER41> It sure does, but even if you choose not to take advantage of container tech, it's still a very easy way to deploy stuff on a single machine. Not sure why the downvotes.

<comment> dynamite-ready I didn't downvote. I see your point, but it's a bit of a digression, tbf.

</comment></comment></comment></comment><comment><USER42> What about SaltStack ?</comment>


This clever AI hid data from its creators to cheat at its appointed task - <AUTHOR> https://techcrunch.com/2018/12/31/this-clever-ai-hid-data-from-its-creators-to-cheat-at-its-appointed-task/amp/ <comment><USER2> This claim is unsupported:

> The machine, not smart enough to do the actual difficult job of converting > these sophisticated image types to each other

Obviously it found an easy way to solve the problem it was given: stenography But could it have solved the problem the researchers intended, if they had framed it correctly? There's no evidence either way for this particular algorithm, but in general this is not hard. This is usually called style transfer and I don't see any reason to believe that standard techniques[1] wouldn't be able to solve the street-map-to-aerial-map problem. And it's pretty well established that adding a bit of noise[2] during training helps GANs avoid these kinds of problems.

[1]: [https://medium.com/tensorflow/neural-style-transfer- creating...](https://medium.com/tensorflow/neural-style-transfer-creating-art- with-deep-learning-using-tf-keras-and-eager-execution-7d541ac31398)

[2]: [https://www.inference.vc/instance-noise-a-trick-for- stabilis...](https://www.inference.vc/instance-noise-a-trick-for-stabilising- gan-training/)

<comment><USER3> Right, I think it would be more accurate to say "The machine, smart enough to choose the easier approach for solving the task". It simply found an accurate and easy way to pass the discriminator and stuck with it.

</comment></comment><comment><USER4> So basically AI abiding by Goodhart's law ([https://en.wikipedia.org/wiki/Goodhart%27s_law](https://en.wikipedia.org/wiki/Goodhart%27s_law)). I wonder how much of this goes undetected in other applications due to poor objective definition.

<comment><USER2> It's incredibly common. For example:

[https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRPiprOa...](https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRPiprOaC3HsCf5Tuum8bRfzYUiKLRqJmbOoC-32JorNdfyTiRRsR7Ea5eWtvsWzuxo8bjOxCG84dAg/pubhtml)

</comment></comment><comment><USER5> Dupe: [https://news.ycombinator.com/item?id=18797787](https://news.ycombinator.com/item?id=18797787)

</comment><comment><USER6> This is a neat result and writeup, but the title very misleading clickbait.

<comment><USER7> Yeah, the article goes on to explain why the premise of the headline is wrong. But it is a fascinating unintended consequence of the algorithm none the less.</comment></comment>


Simple type checked objects in Python - <AUTHOR> https://gist.github.com/luke14free/144239699da237588291497dd547654e <comment><USER2> That's not what "static typed" means.

Static, referring to types, means at compile time, or before runtime, the types of variables and assignments can be verified; no invalid assignments are possible.

What you have here is dynamic typing; you can't verify the types until runtime, and then you throw an exception.

[https://en.wikipedia.org/wiki/Type_system#DYNAMIC](https://en.wikipedia.org/wiki/Type_system#DYNAMIC)

<comment><AUTHOR> Fair point. I am editing the entry name to reflect your suggestions. Static typed -> type checked at runtime

<comment><USER2> LGTM</comment></comment></comment>


The City of Chicago is selling vacant residential lots for $1 - <AUTHOR> https://largelots.org <comment><USER2> Correction sold.</comment>