Software Methodology: Why One Size Fits No One - <AUTHOR> https://github.com/risk-first/website/wiki/One-Size-Fits-No-One <comment><USER2> Here is a (tongue-in-cheek) model I've developed. It's based on the observation that teams who were basically competent and had an overabundance of hard technical skills reliably delivered, while teams where hard skills were rather thin on the ground could not deliver. To avoid this degenerating into the tautology "only teams that can develop software can development software" let's develop the idea a little bit:

Definition: A team member is "garage competent" if, when locked in a garage with a computer and an internet connection (but without help or advice from other team members,) he or she could deliver some working version of the product single handed, given sufficient time. The model's prediction is just this: if the number of garage competent team members is greater than the number of other team members, then the project will be delivered. Otherwise, the project will fail.

(In this simple version of the model described above, simple majority serves as a proxy for control of the project. A more nuanced but harder to define model would define "control of a project" as a weighted sum over team members taking into account the leverage of different assigned role such as PM or architect.)

I posit this is not just a highly predictive model, but in fact the causal mechanism project failure: Once people who are not "garage competent" are in control, they make reliably make decisions that will ultimately doom the project. Try it out yourself: think of a historical project where you know the outcomes and can estimate garage competence for each team member and see if it makes the correct prediction.

<comment><USER3> Deliver _what_ , though?

If you provided each garage programmer with a full waterfall aerospace grade up front specification, you'd have a lot more success than if you just gave them some vague post it notes. It would also ensure they produced almost identical results.

But the upfront spec is expensive, and in itself hard to produce - the premise of most methodologies is that iteration with real software and real customers is actually the most effective way of producing a viable spec.

I don't think I've worked with more than one or two people who would fail to deliver with a clear spec.

<comment><USER4> You're getting at intuiting requirements, which I think of as a mid-level or senior dev skill. Super important for orgs without massive product/design resources, but it's different from this garage test.

I can certainly believe a good number of programmers couldn't, for example, figure out how to build a database on their own, or a 3D game, work with cryptocurrencies, or reverse-engineer an API. There's a reason FizzBuzz is still a valuable gating test.

</comment></comment></comment><comment><USER5> Methodologies are just like Martial Arts Types - you have so many varieties to choose from Boxing, TKD, Judo, Muay Thai

But in a real fight, you hit with whatever you can grab onto :)

<comment><USER6> AFAIK, when they were all made to compete against each other in MMA it quickly became obvious that Brazilian jiu-jitsu was top dog. Although modern MMA definitely takes in the best techniques from each martial arts style.

Is agile the Brazilian jiu-jitsu of software development?

<comment><USER7> The best techniques for MMA, it's still a sport; more realistic than traditional boxing, but then that's a pretty low bar. I've been training martial arts for 25 years and I wouldn't put myself in there for all the money in the world. It's brutally violent, and the most successful fighters are very well trained and don't seem to give a shit about messing their opponents up for life; but it still has nothing to do with martial arts.

Wrapping your legs around your opponent's waist and rolling around on the ground for minutes ceases to be a good idea the second you leave the ring. While breaking fingers, ribs, poking eyes, punching throats and kicking knees and groins suddenly become viable options. In most cases; the sooner you can get the hell out of there the better, because the risk of getting into trouble increases fast in a street fight.

<comment><USER8> I am sorry but this eye poke, throat punch nonsense has been debunked over and over again: a) those things are not nearly as devastating as they sound and b) in a fight both people can do it, more so the person who has positional control. Browsing youtube searching for street fights where BJJ is used is pretty illuminating as to exactly how effective it is. Short of MMA there isn't anything else quite as useful, though you are right that getting the hell out is the best option if possible.

<comment><USER7> No it hasn't, because it works. Otherwise they wouldn't be forbidden in the ring, would they?

There's plenty of Bullshit Do out there, no doubt. But there is also plenty of useful knowledge and experienced teachers that you miss if you assume that everyone who came before you was a complete idiot.

Many martial arts were honed into more or less perfection over hundreds of years by people just as intelligent as you and me, but with generations of experience from actual mortal combat. Living another day is a pretty good motivation for training and evolving.

Much of that is still around, but it's not being marketed. Because it's not what most people are looking for, it's too real and ego-killing. Because it's barely allowed; you can't spar out in the open with real knives or swords for example, you'll end up in a cell before you know what happened. And because it's been Disneyfied, by people like Jack Mace and Master Wong.

Once you've spent tens of years really training martial arts, as opposed to sports or pretending in silly uniforms; there's not going to be much to prove any more. If there is, you're doing it wrong. I prefer not fighting, people get hurt best case. So I can't really show you anything that looks like MMA, because that's just not how we train. And we don't do competitions; because there are no winners; just two banged up idiots, one happy and one sad. But for whatever it's worth this is me with a private student 3 years ago:

[https://www.youtube.com/watch?v=wh509WKVk2M](https://www.youtube.com/watch?v=wh509WKVk2M)

<comment><USER8> Your point that martial arts originally came from real, life and death experience is well taken. But wouldn't you agree that when that component is taken out, without the hard sparing needed to keep things honest, any art will tend to degenerate and fall prey to hucksters? See TKD in America for example.

<comment><USER7> I don't buy the idea that we have to pound the crap out of each other in a ring to prove that everyone is honest about their skills.

If you want to learn anything, you definitely need to spar; but sparring is not a competition, no one is actually trying to hurt anyone. The more experienced your partner is, the harder you can go without risking injury.

TKD suffers from the same sports virus as MMA if you ask me; just a different, less violent and more exotic flavor.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Regardless of intent or documentation, I've never come across a methodology that didn't devolve into the same practice as every other methodology. The root problem is that the people who are looking for a methodology/silver bullet are convinced — and no amount of reality will ever convince them otherwise — that software development can be done with 100% predictability, just like, say, adding a garage to a house. So even XP, that explicitly states up front that this is not possible in software, gets morphed into "agile" which is actually a great way to manage predictable development tasks, but a horrible way to manage software.

<comment><USER10> There is a move away from the capital 'A'gile processes in use with agile as an adjective to describe how you approach problems and the development process itself should be fluid.

<comment><USER11> Which is what agile started as and was in fact the whole point. It's like we're forever going in methodology circles:

One size doesn't fit all so we should make the development process more fluid.

Hey what a great idea! Here are some fluid methodologies I just came up with.

Woah this methodology is awesome; everybody should use it!

One size doesn't fit all so...

<comment><USER10> So the answer seems to be use agile to find a fit, or if that doesn't fit other organizational requirements/abilities, then choose the least poorly fitting process.

</comment></comment></comment></comment><comment><AUTHOR> Hi,

Author here. This is a single page from the larger "Risk-First" project, about risk in software projects.

I put the front page up a week or so ago and it was fairly well-received. Hopefully people will enjoy a festive second-helping.

Feel free to ask anything.

<comment><USER12> Initial thought.

This reads largely like a recapitulation of Boehm's 2003 book "Balance Agility and Discipline" [1]. Have you read this and did this provide any inspiration for the article?

[1]: [https://www.amazon.com/Balancing-Agility-Discipline-Guide- Pe...](https://www.amazon.com/Balancing-Agility-Discipline-Guide- Perplexed/dp/0321186125)

<comment><AUTHOR> I haven't read it but I'll put it on my reading list, thanks.

</comment></comment></comment><comment><USER13> IMO the problem with software methodologies is leaky abstraction.

There just isn't a general framework that tells you how to categorize and deal with every issue that you come up with.

The main thing I get from the various methodologies is general philosophies. Things like "try to get feedback incorporated quickly". Or "Identify in advance the things that are expensive to change".

<comment><USER14> I kind of wish we applied "micro-methodologies" rather than methodologies. I think we should be doing "import retrospectives" rather than "import scrum" and sharing and experimenting with a diversity of approaches (e.g. various different ways to do retros).

We're essentially treating "methodologies" as software that runs teams. Furthermore, if we _are_ doing software we should follow the UNIX philosophy and the bazaar rather than the cathedral.

Edit : I kind of want to make this a reality now. I've registered [http://micromethodology.com](http://micromethodology.com) and will make it so micromethodology.com/standup can be a place to share "how we do [x variant] standups" via pull requests on [https://github.com/hitchdev/micromethodology.com](https://github.com/hitchdev/micromethodology.com)

</comment></comment><comment><USER15> XP wasn't a set of practices, or methodology, it was a set of principles. "Value working software" etc. The "methodology" flows from there: only do the things that help support the principles, get rid of everything else you can (up to and including many of the scrum rituals/meetings).

</comment><comment><USER16> "Characterizing People as First-Order, Non-Linear Components in Software Development" knew why in 1999.

</comment><comment><USER17> This whole risk-world-view thing is depressing. Yes, technically the entirety of life on this planet is managing risk. I eat food and breathe air to manage the risk of dying from not doing so. The quality and amount of the food and the air determine the risk factor. Am I really going to choose the food I eat and the air I breathe based solely on risk? Or maybe, I dunno, eat the food that tastes good and breathe air that smells clean?

Really, all of this is bullshit, because the reason we sometimes fail to deliver software projects is humans really suck ass at dealing with complexity. We can deal with one complex thing at a time, but once multiples of them are all being considered at once, we just screw up constantly.

I think the way to pick any methodology is really deceptively simple: 1) look around and see if most of you are experienced at a given methodology, and then 2) use it.

I think it's that second part that people screw up on.

<comment><AUTHOR> I agree, maybe it does _sound_ depressing. But the food you eat and air you breathe _are_ based on risk! Our bodies try to warn us about the bad air and food by making it smell/taste bad. You can go ahead and eat it if you want!

I agree with you that it's nice that our bodies make things _nice_ to eat as well as recognising nasty stuff. I wonder if there is an evolutionary reason for that too...

Sadly, there are still some things that _don't_ taste bad but will kill you... hidden risks of eating I guess.

I talk about Complexity Risk here: [https://github.com/risk- first/website/wiki/Complexity-Risk](https://github.com/risk- first/website/wiki/Complexity-Risk)

Often, Complexity is fine, but then something bites you in the ass unexpectedly. Sounds like risk to me.

</comment></comment><comment><USER10> > Following a software methodology is therefore an act of trust

That's the key point from my reading. After working with the same people on multiple products at a startup, I came to trust the product research and design steps preceding development and the marketing and customer success. Even if not wholly believing, I at least came to the conclusion that it was closer to an efficient process than I could come up with.

</comment><comment><USER18> PDD is the best methodology.

(Panic Driven Development/Design)

</comment><comment><USER19> Seems like bigger risk is people not following methodologies properly in the first place.

At least that's my experience

<comment> GuB-42 Mine too.

It can take the form of useless meetings. ex: Oh, stand up meetings sound good, but what are we going to talk about?

Only keeping the cheap aspects. Ex: not doing formal test campaigns based on previously defined requirements but forgetting about things like pair programming in XP, up to date automated unit tests, etc...

<comment><USER20> That problem is called cargo-culting. You copy the outwards appearances, not understanding the underlying motives, yet expect the same results.

</comment></comment></comment><comment><USER21> > ... But Replace Judgement

Well, that's not true.

A software development methodology doesn't replace judgement. If you try to make one do so, you're probably going to end up with a mess regardless.

</comment><comment><USER22> I like just programming.

<comment><USER23> +1

</comment></comment><comment><USER24> "Software methodologies are all about handling risk." Not even close. Methodologies should about creating working software with a short feedback loop between customer and engineer. That old blue cool-aid about risk doesn't fly anymore.

</comment><comment><USER25> gross misuse of the term "methodology"</comment>


Spray-Right 360° sprayers - Trey-Jackson http://www.spray-right.com/ <comment><AUTHOR> Ha - what a great solution to such a meddlesome everyday problem.</comment>


The Ultimate Cyber Monday Discounts for Developers - <AUTHOR> https://stackshare.io/posts/the-ultimate-cyber-monday-discounts-for-developers-2016 <comment><USER2> Marshall from StackShare here - we hate crawling through 5 million emails to find good developer deals each year, so we built this list of the best Cyber Monday discounts on SaaS tools, books, courses, and more. Some of the ones we like:

\- Codeship: 25% off first 2 months (Code: CMUL25FOR2)

\- Paw: 50% off immediately

\- Commando.io: 15% off any plan for life (Code: USERLIKECYBER)

\- Cloud Academy: All plans 50% off

We'll be updating the list as the day moves on, so if you have any killer deals you find feel free to share 'em.</comment>


Why do we even need url shorteners? - <AUTHOR> http://gregable.com/2009/05/why-do-we-even-need-url-shorteners.html

<comment><USER2> I want to think that it helps to have pretty, descriptive URLs, but things like YouTube make it seem like it really doesn't matter what the URL string is – as long as users can copy and paste it and link to it, anything beyond that is a waste. On one hand, I guess it can be nice to see what the content of a page is before you follow the link (title slugs on blogs) and it would help you avoid getting RickRolled, but on the other, it could teach you to get used to trusting that the URL slug actually matches what's on the page. There could be anything there, really. It's up to whoever has control over it.

Anyway, I think YouTube's random string/hash URLs worked out fine for them. They're short, easy to copy and paste, and they make you think twice before clicking :]</comment>


Are labor unions and collective bargaining coming to Big Tech? - <AUTHOR> <comment><USER2> By "big tech", I presume you mean the FAANGs. My answer is no, at least as long as the tech workers don't think they need unions.

As long as the tech job market is good enough that you can find a job when you want to (especially if you have worked for one of the FAANGs), most engineers don't see any need for unions. If they don't like things (including pay), they'll quit. They'll go somewhere else. They'll be paid really well. They'll be fine. What's a union going to do for them?

This is especially true because they're above average as an engineer. It's like Lake Wobegon - everyone's above average. They're sure of it. "Those less skilled may need a union, but I don't."

A union won't happen until enough engineers get blatantly mistreated by Big Tech that the rest think they need protection.

</comment><comment><USER3> I am not sure how unions would help in tech sector, but I would like to see European style laws to protect labor from management.</comment>


Ask HN: I don't have CS and feel flustered - <AUTHOR> I'm 27 and I have been programming a long while but am missing CS, it's hurting on the job front and confidence front. It would be a lot easier to have cool demos on git if I had some kind of CS related "solution" there to show. I'm becoming flustered of only being able to do CRUD solutions etc. I want to be working with people of higher calibre and I feel I cannot gain that entry (eg. Google as the prime example) without CS or some kind of micro-focus of CS. I'm afraid of tackling some topic (eg. linear algebra) then being shut down because there are 100 other topics, or that half of linear doesn't do me any good anyway, or I should be working on a meteor.js demo for practicality. Part of the frustration is that I don't work around CS people and so I'm stagnating in an area I feel is important to me. I first got my job (co-op and stayed on) and worked under a great engineer and had a great time but he left about 8 months after-ward and ever since then it hasn't been the same. I struggled since HS without a calculus/vectors course (and without foresight taht it would limit my entry into programs). I've since done some calculus but do not have credit. Should I just do it online, get the HS credit, and apply for CS at a uni? I think I will be taking too much of a step backward but I don't see how else I can shake this limitation. <comment><USER2> I created an account just to reply.

I have been working successfully in the technology industry as a Developer for over 10 years. I have recently left a job where I led a good-sized team of Developers and I now run my own company.

Through countless interviews and meeting with clients, I have been asked exactly 4 times about my degree and educational background. I don't have a degree. No one cares. They do care about what you have done (experience, portfolio) and what you can do for them (your value).

Information Technology is perhaps the most accessible industry:

* You have access to the exact same tools as a Senior Developer at Google. How much did you pay for Apache, PHP, Angularjs, Go, Dart, Javascript, CSS, HTML, Ruby..etc. $0. All you need is a laptop and internet connection. For a few dollars a month you could even deploy your app to the same massively powerful technology infrastructure which a Senior Google Developer uses (Google App Engine). Do you know how lucky you are to have access to the same resources?

* If you wanted to be a Lawyer or Doctor or Accountant.. you would HAVE to go to school and get a Degree. Online you can find documentation, tutorials, discussion boards.. everything you need to learn. I would rather learn online myself than accumulating tens of thousands of dollars of debt to learn the same thing.

You are focusing way too much on what you don't have.

> I'm becoming flustered of only being able to do CRUD solutions etc.

There is NOTHING stopping you from learning more than CRUD solution.

> or I should be working on a meteor.js demo for practicality

There is NOTHING stopping you from working on a meteor.js demo.

Perhaps you feel alone and feel University would provide you with the structure and guidance you need. My advice is to find a good friend who is as dedicated to learning as you are. Have your own classes twice a week with your friend where you learn something new each class. (E.g., meteor.js). Try that for 4 months. Work hard at it. After 4 months if you are not progressing, then look at University as an option.

<comment><USER3> > Have your own classes twice a week with your friend where you learn > something new each class. (E.g., meteor.js). Try that for 4 months. Work > hard at it.

In addition to that, you can also attend local meetups on subjects (Civic Data Hacking, Python, Meteor.js, etc...) that interest you. You'll learn more about the subject and you'll meet other people who have experience in it and can provide guidance on learning it.

</comment></comment><comment><USER4> If you stay with your current job and do not go to university, here are some concrete ideas for things that you might want to try, which I would recommend based on what you wrote:

* Learn C. I have heard good things about _Learn C The Hard Way_, which is free, though I have never used it myself. Since you want to know more "CS," work through _Introduction to Algorithms_, a pretty standard (second-semester) university text, in C (NOT a language than manages memory for you!).

[http://c.learncodethehardway.org/](http://c.learncodethehardway.org/)

[http://mitpress.mit.edu/books/introduction- algorithms](http://mitpress.mit.edu/books/introduction-algorithms)

* Work through _The Elements of Computing Systems_ (aka "From NAND to Tetris"). The book is fun, and it introduces many topics that are more advanced than CRUD.

[http://www.nand2tetris.org/](http://www.nand2tetris.org/)

I have many other ideas, but I decided to stop here in order to emphasize those above. :)

<comment><AUTHOR> Thanks. I love C and I love assembly tutorials. I got through about half of K&R. I should see it all the way through. I also have the algorithm book but it's unopened. :o I have the desire it just feels like quite the mountain. Maybe I'm making it feel bigger by just not walking it? Or walking it alone. Thanks for your advice it reinforces my thinking.

<comment><USER5> You could watch the video lectures instead of or in addition to reading the algorithms book.

I've seen quite a few of these and thought they were ok:

[http://videolectures.net/mit6046jf05_introduction_algorithms...](http://videolectures.net/mit6046jf05_introduction_algorithms/)

This one is newer though:

[http://ocw.mit.edu/courses/electrical-engineering-and- comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/)

I guess I would check out both and see which professors I like the best :)

</comment></comment></comment><comment><USER6> I'm not gonna lie to you, many - MANY places you interview are going to do the "CS Secret Handshake". They may have you whiteboard some problems to see how you think. (this is completely legitimate) But they might ask, "ok, so tell me about the efficiency of this algorithm in Big-O notation." You can learn that! Many tech interviews are done by tech people that have no interviewing skills... so they go look up ridiculous interview questions on google, and ask you to solve them. Then they don't do YOU the favor of letting YOU look up solutions! You can combat this by learning how to solve problems methodically. I agree with the other commenters about learning data structures and algorithms as a bare minimum. Then do something like Rebecca Murphy's JS- Assessment (if you're into Javascript). A bunch of math is no substitute for raw problem solving talent... although they often overlap.

<comment><USER7> Re: CS Secret Handshake--years ago, I found the Programming Interviews Exposed book. I own the first edition. It's a lot of concise explanations of different Computer Science topics. The authors focus on things that are likely to come up in an interview. The book provides a few tricks and an orientation to topics that are worth looking at further.

</comment></comment><comment><USER8> Yeah i'm struggling with this aswell - I basically dropped out of the danish HS-equivelant.

I think i'm a pretty decent coder, but i have next to none experience with algorithms - Usually i'm pretty good at learning new things just by trying out and reading up on them (server management, new languages etc).

Algorithms is the one that really seems to require an education, i'm having a hard time learning that stuff on my own - But i'm giving it a go by working my way up to linear algebra on Khan Academy and reading examples on Naive Bayes etc.

</comment><comment><USER9> Google is just a small sliver of the cool companies to work at. They hire top tier tech guys because they can afford it, but 99% of them aren't going to get rich working there. Microsoft, Apple and Sun used to be the places to work, before that IBM and Intel. Find the next google and be part of it.

</comment><comment><USER10> Ok, you're 27. Suppose it takes you 7 years to get the mathematics background for CS. Odds are you will still have 50+ years to do the sort of work you want to do with the kind of people you want to work with. [1] And the key is the maths. Once the mathematics gets beyond a person, they can follow along, but can't really do the task independently and mathematics is hard for many people.

But it's nothing that can't be done if you're willing to grind it out. That's probably true for everyone, it's just that some people have the advantage of not knowing they are grinding it out.

Good luck.

[1] And in the Dear Abbey tradition, you'll have 50+ years of not working on things you want to work on with people you want to work with if you don't get the maths under your belt.

</comment><comment><USER11> Some of the best programmers I have seen have a non-CS background, and were self-taught.

Based on how I interview (and also on various interviews I have attended), here are some suggestions on how to begin:

1) Start with some basic data-structures: a) Arrays b) Linked List: both single and double c) Hash Tables d) Binary Trees with some familiarity to one or two types of balanced trees - e.g. Red-Black and/or B-trees. e) Stacks and Queues - built on arrays and/or linked-lists

If you can practice it with writing some code in C or Java, that would be a big plus. You can get a hang of the aforesaid structures by coding the usual functions - find an element, insert, modify, delete, iterating through all the elements etc...

As you are doing it, get a feel of the big-O notation - i.e. understand the various tradeoffs on why you would pick a certain data structure to solve a particular problem

2) Get some exposure to search and sorting algorithms and understand the various trade-offs - maybe start with linear and binary search, insertion sort, merge sort and quicksort (for the latter two, you will get an idea of divide-and-conquer strategies, recursions and so forth).

Most advanced data-structures/algorithms are built on the aforesaid foundations, so with (1) and (2) alone you have strengthened it, and based on your interest, you can dig down further if needed to related areas - e.g. graphs, linear algebra problems etc...

3) Get an exposure to OS/System level programming if possible - e.g. if you choose Linux, you can get some idea of processes vs threads, schedulers, memory mgmt, file and network IO etc.. At the very least, writing some toy code here, say opening files, forking a process, socket IO and so forth will give you some practical exposure.

4) HTTP/Web services: You already mentioned meteor.js so it looks like you are already familiar here esp. with tools like Firebug to see raw HTTP payloads and so forth.

5) Databases - SQL, and maybe some NoSQL use-cases.

6) OOP and Design Patterns

As you get a grip on the aforesaid areas, the more code you read, it will add to the practical use-cases. For some of the topics, you could get familiar with the area using any of your favorite scripting languages (including posix functions for point 3).

Give yourself ~ 6+ months and get as much exposure with practical use-cases.

<comment><USER12> For points 1 and 2 coursera.org has a great set of courses on algorithms[1], Taught by a Princeton professor. I started the first one a couple of months ago, but had to drop out because of time constraints. I've re-enrolled for the upcoming section. It has a companion book, Algorithms[2], that I bought which was a great help. I don't have a copy of CLRS[3] But I've heard it is also a great reference and is on my amazon wishlist. Other than that, MIT's OpenCourseWare[4] also has the entire CS degree online for free. It's funny, reading your post I thought I hide sleep posted or something. You seem to be experiencing exactly what I'm going through. I'm also 27 and don't have a CS degree. I am highly motivated though, and have no problem hacking at this stuff on my own. I've talked to a bunch of CS majors who actually still feel inferior after they graduate so other than helping the impostor syndrome[5] that I suffer from, I'm not sure that a degree would do me a lot of good. (With the exception of padding my resume and getting me in the door for an interview). [1] [https://www.coursera.org/course/algs4partI](https://www.coursera.org/course/algs4partI) [2] [http://amzn.com/032157351X](http://amzn.com/032157351X) [3] [http://amzn.com/0262033844](http://amzn.com/0262033844) [4] [http://ocw.mit.edu/index.htm](http://ocw.mit.edu/index.htm) [5] [http://en.wikipedia.org/wiki/Impostor_syndrome](http://en.wikipedia.org/wiki/Impostor_syndrome)

</comment></comment><comment><USER13> If you watch Silicon Valley (HBO) episode 1, there is a character who is fairly adamant about NOT going to uni / doing CS!

</comment><comment><USER14> Some people here are talking about you studying CS topics on your own. So let's say in August you start spending nine hours a week studying some topic - say, theory of computation. You spend nine hours a week studying it from August to December.

Well, if you are taking one class a semester at your local public university this fall, you would be spending three hours a week in class to do this.

You're going to have to spend 9 hours a week from August to December studying, say, theory of computation, in order to get a BSCS level grasp of it. Why not spend _12_ hours a week doing it, and actually getting a BSCS in the process? You'll also get a professor you can ask questions of during class, after class, during office hours, and probably other times. There are other benefits of going to school as well.

One of the biggest problems if you don't have a BSCS, is you don't know what you don't know. If you don't understand how floating point numbers are stored in memory, at least you know you can always look into that. The real problem is when you don't pursue a solution because you don't even know it exists.

I tried to write a multi-threaded C program with changing state before I took a class in mutual exclusion. The results weren't pretty. After the class, I had to deal with another mutual exclusion problem - a somewhat tough Java mutual exclusion problem in some production code. I was able to fix it fairly quickly. When you're writing code and realized you need some feature, often it's simple. When a program progresses to where you need threading and mutual exclusion - most people don't stop what they're doing and spend a few weeks studying mutual exclusion like they would have in college. They just plow through it which is why people complain about bad threading in code so much. A BSCS gives you that background you were always lacking.

Also, the tendency for someone doing this on their own is not to spend four months study calculus, then four more studying calculus, then four more studying calculus, then four more studying discrete math, then four more studying theory of computation, and THEN studying C++ for four months. Usually people on their own are just going to skip the more theoretical stuff and jump right into the immediately practical stuff - straight to C++. But then they will never have the background required - they never took graph theory, so data structures such as directed acyclic graphs are hard to understand.

There's always something to learn, but a BSCS gives you a good foundation and background to build off of. People here are saying you can do the three years of study to cover a BSCS education on your own. Which you can. So why not actually spend four years - the one hour in class for the typical three hours of homework. Do four years instead of three and get the actual BSCS. You can go at night, weekends, online (but don't do a scam one) etc. Many professors are alright, a few are very good and only one where I went was a poor teacher.</comment>


Handshake will EAT top-level domains - <AUTHOR> https://www.youtube.com/watch?v=lOj25i_BmMQ <comment><USER2> Could, but there is still a lot of unknown and risk

It's already being exploited by hucksters and you have to support take down for legal court orders.

Also, the .org claim is false

Basically, blockchain projects are likely to suffer from more corruption with less legal recourse.

Basic crypto shilling speak</comment>


I built a website uptime checker and I'm looking for feedback - <AUTHOR> I know there are other website uptime monitors and checkers so you may be wondering why this is any different?
It checks the uptime very frequently to show the true website uptime present and passed.
Runs from multiple locations
Lightweight
easy to use
URL: https://isitup.site
Purpose To check the uptime of websites both current and historic.
Technologies Used DEBIAN 10, PHP7, REDIS, Bootstrap, ChartJS
Feedback Requested:
General Feedback of use, any suggestions? <comment><USER2> Share the code !</comment>


Mongrel2 v1.4 Out With Fun BBS Demo - <AUTHOR> http://sheddingbikes.com/posts/1287256123.html <comment><USER2> Only somewhat on topic: am I the only one who's thrown off by version numbering like this? If it's mongrel 2, I expect that the software is at version 2. Just like python 3 is python v 3.x.

<comment><USER3> Well, not to be too pedantic, but the name is Mongrel2, not Mongrel 2. I agree that it can be a little odd though.

Namingwise, I personally find m2sh somewhat hard to parse, because I read it as "m to sh" and not as "mongrel2 shell".

</comment></comment><comment><USER4> To try out the BBS interface for yourself:

      curl -o client.py http://dpaste.de/xtDj/raw/
      python client.py mongrel2.org 80

</comment><comment><USER5> A BBS? Now you're just showing off :)

</comment><comment><USER6> Download links were busted, I fixed them.

<comment><USER7> Correct your grammar:

"from a couple books"

Should be:

"from a couple of books"</comment></comment>


Dark side of pampered software engineer - <AUTHOR> http://www.businessinsider.com/dark-side-of-a-valley-software-engineer-2016-7 <comment><USER2> Which seems to present the interesting divide between European software engineers and American ones.

In the US, you get pampered, but seem to have lots of late nights, 'crunch' time, etc. In Europe, you get far lower wages but it's treated almost solely as a 9-5 job.

<comment><USER3> A lot (maybe most) programming jobs in the US are 9-5 but they're not at companies or places HN would be interested in discussing.

<comment><USER4> I have to disagree with this. Most IT jobs in the U.S. aren't 9-5. Every place I've interviewed have always hinted at the fact that it's not a 40 hour a week job. This may sound jaded, but companies really do expect to get more than what they pay for, and it's not just the silicon valley ones. I think the real issue is that most programmers feel a dedication and passion to what they do and they want to see the project succeed, and so the get taken advantage of.

<comment><USER5> It's ridiculous to frame it like that. I'm sure most surgeons also want to make sure their patients benefit from a surgery, but I'm sure they don't get taken advantage of.

</comment></comment></comment></comment><comment><USER6> The "dark side" described here is programmers not using our labor power for the right things, not really a downside to _having_ labor power. Instead of being seduced by fancy campuses, we can insist on better working conditions. I work 15 hours/week, mostly on my own schedule, with low pressure. My free time is more important to me than a six figure salary, living in the valley, or free lunch.

Generally speaking, programmers in the US have the labor power to shape how we work. But many of us buy into a certain idea of what success means and how to get there. Really no one to blame but ourselves on that count.

<comment><USER7> I would love to do this at some point. May I ask how you managed to get a 15 h/w job?

<comment><USER8> He is a Linus Torvald, a John Carmack, or a Chris Sawyer. He has the skills, the experience, and the name to demand that.

<comment><USER5> I'm intrigued now. Who is this 1888franklin?

<comment><USER8> Honestly, I have no idea. However, that is the kind of person he would need to be to get a 3 hour a day programming job. Or he is full of shit and talking out of his ass but that would be uncivil so I better not say that.

<comment><USER9> Or he's a programmer with a respectable hourly rate (100+) and only works a few days a week remotely who lives in a cheap area. Any decent programmer can attain this.

</comment></comment></comment></comment></comment></comment><comment><USER10> It's kind of strange for them to use the word "pampered" when a large number of the perks are basically ways for the company to justify using more of the employees "free" time by taking care of many of the day-to-day practicalities that could take them off-site, like laundry and cooking, or exercise and getting a professional to work those neck muscles to reduce the stiffness from working at a computer for 10+ hour days. I'm sure if some of them could hire a lower wage worker to sleep for them, they'd probably do that too.

I don't envy the SV crowd much, but many of the perks are about maximising the amount of time the employees can work over most other considerations. And looked at through that lens, very few of the "perks" a really much in the way of pampering.</comment>


Germany: What AI/blockchain/IOT projects are you working on? - <AUTHOR> What AI/blockchain/IOT projects are you working on <comment><USER2> I know my previous company has one blockchain project and AI based project planned. Don't know about the AI project but the blockchain project will start sometime soon. They are a small company and not on anybody's radar. My current company is small to and not on anybody's radar but stuff like that changes quickly. Other than small companies and startups what else is there in Germany anyway? We have SAP and DATEV. I don't think either of those is going to do anything with those technologies.</comment>


Ask HN: Review my startup CanYouCode.com - <AUTHOR>

http://www.canyoucode.com
CanYouCode is a freelancing website, which is different in the following ways:
1. Minimum rate of $35/hr - likely more. (you can't find good freelancers for anything less.)
2. Profiles are reviewed before being allowed to bid - We verify LinkedIn profiles, Open Source contributions, Blog, proper web standards etc.
Basically the idea is to target developers who can't survive on the $10-20/hr at Elance or oDesk. Currently we are accepting signups only from the US and Europe.
We would like inputs on:
1. It is interesting?
2. How to get traction?
3. Should we apply for YC Winter 2011?
Thank you. <comment><USER2> 1\. Yes, it's interesting to have a curated place to get good developers, even if it's more expensive. However, I think you might need to do more than the things you've listed so far.

2\. Make sure your clients have a really good experience and then help them promote you.

Since this is a marketplace, you have to stimulate both supply and demand. Supply: contact good coders and ask them to sign up. Demand: work very hard to get clients into the system, and follow up with them.

Also: the name "canyoucode" is aimed at developers, that's not very good, should be aimed at clients. And finally: having the site full of dummy date is kind of crap. I would go with a closed beta. Again, you have to stimulate supply and demand: you need to make sure that your first coders get good clients (and then blog about that), and that your clients get good coders (and then blog about that). I would make it closed beta at first.

<comment><AUTHOR> Thanks.

This is one of the things we plan to do. In fact, our backend lets us make pre-filled developer profiles which just need to be 'activated'.

edit: You are probably right about the dummy data. We could try a closed beta. This has been up for just a few hours.

</comment></comment><comment><USER3> I don't think it is fair to discriminate by country, it would be _much_ better to only discriminate by capabilities.

What the price is should not matter either, unless you are looking to set up a shop that people will know will overcharge or where the people from the 'west' can set up shop without competition.

<comment><USER4> What's wrong with making the site region-based? Maybe don't discriminate by country, but certainly limit people to their own region/country. If people are looking for slave labour from India there's always Elance.

<comment><USER5> If there are Indian freelancers with verifiable high quality work, OSS contributions etc. they deserve to be able to compete on a level playing field with similarly qualified Americans. You could always design a filter for those people who for whatever reason were only looking for developers in their timezone/country/city

<comment><AUTHOR> We definitely want to be more inclusive. Just taking one step at a time. We want to maintain a high quality median. Basically want to see quality content everywhere.

</comment></comment></comment></comment><comment><USER3> From the name I thought it was another code judge.

<comment><USER6> Me too. You may want to consider integrating Code Antgem badges too as part of a user's profile. Email me firstname.lastname@example.com to discuss.

<comment><USER7> You may want to consider not spelling your company's name wrong.

</comment></comment></comment><comment><USER8> Canada and Israel have a ton of excellent coders too, you should let them in as well.

<comment><USER9> India too. Sure, there is a large pool of "career programmers" here who write terrible code, but you can always weed them out.

Edit: What prevents you from allowing people from other countries from signing up? Isn't this just a service that connects clients with programmers? From the looks of it, you aren't even handling payments or doing anything else that could get you into trouble with law enforcement.

</comment></comment><comment> mike-cardwell The signup process is causing me problems... It seems to be geared towards companies with only a single member...

It asks me to select a username and then states:

"Your company's url is <http://www.canyoucode.com/username>

Both me and my partner want to sign up but we can't both have the same username, but it seems wrong to have two separate company urls...

We both want to set up individual profiles and then link them together as a company profile...

<comment><AUTHOR> We probably need to do a better job of communicating this.

1\. The username is assigned to the company; users cannot login individually. 2\. But once you login, you can add various user profiles and credentials to the company profile.

<comment> mike-cardwell It's definitely not clear. I still don't get it... In the "Email Address" field do I put my companies shared email address, or my own personal email address? Same for the Linked In profile. Both of us have individual Linked In profiles...

<comment><AUTHOR> The first user becomes the "Admin". We will indicate this.

Once you log in, you can add as many "employees" as you want to the company profile. (Note that one employee (admin) was already added during Signup).

This is sort of similar to basecamp. But we haven't done a good job explaining it on the site.

<comment> mike-cardwell It all made sense when I was finally in. I don't usually have this much trouble figuring out sign-up forms, honest ;)

</comment></comment></comment></comment></comment><comment><USER10> I think this is a great idea, but am I the only one who thinks the minimum rate should be more like $70? This would widen the perceived quality gap between this and Elance IMO, but I'm guessing you've probably done a lot of research before settling on $35.

<comment><USER11> I do not expect to get anyone skilled for $35.00.

Perhaps that's an ignorant assumption, but I don't think I'm alone in this.

Charge more.

<comment><AUTHOR> Our idea was to tie the minimum rate to an acceptable monthly income in the US/West for decent living standards.

$35 * 160 hours per month = $5600 a month

Of course, there is nothing stopping consultants charging more. The idea was simply to do away with ridiculously low rates.

<comment><USER12> This approach isn't perfect, as people have pointed out, but I think its better than the alternative. A lot of freelance coding sites are practically unusable from the employer's side because every yokel can give a low rate and not even read the project description. I think forcing those people to try to prove their worth and getting rid of some riff-raff employers that underpay is a net gain.

</comment></comment></comment></comment><comment><USER13> Tried to sign up, unfortunately my country which is a part of EU is not there (Poland), but so are others missing. You should at least allow for every EU member to participate when it comes to "europe"

<comment><USER14> +1

There's not much logic in that country list. I kinda understand (but not really) that Slovenia (my country, part of EU) is not listed there, but Austria, Switzerland, etc are also missing. That means I can't register and give you more feedback.

<comment><USER13> Actually I DON'T understand it. If it's EU that means there shouldn't be any "law" problems when it comes to users of this country.

And I'm sure your country has many brilliant minds to offer - same as any other country.

</comment></comment></comment><comment><USER15> I see an employer has already posted a job that seems to break the $35/hour rule. In this case a 100 in 1 iPhone Game App (including artwork!) on a $1000 budget. Which, even at 1 hour per game works out to $10/hour.

What checks do you have on the jobs posted by employers?

<comment><AUTHOR> That post was likely created by an employer who wanted to test the site. CanYouCode has been up for just about 7 hours now.

In future, such posts will be removed. The site will initially be moderated by us. Eventually, we want to bring in more user participation in this moderation.

</comment></comment><comment><USER16> The idea is very interesting. I like the idea of minimum $35/hr. To take the idea further, avoid using pricing as a signal, and protect the buyer as well, $35/hr could also be the maximum. That will take rates out of the equation. After that competition will be to get the most rewarding work, with emphasis on work quality.

As a developer, I may even be willing to pay a screening fee, if I would be able to get good quality work.

Apply to YC. You will get support, ideas, and make great relationships. That will also help you get traction and gain credibility.

<comment><USER17> _$35/hr could also be the maximum_

Are you serious? That's about what my wife charges to give horseback riding lessons, and we live out in the country. Near a big city it would be a lot more expensive. I'd like to think that even an average developer should expect more per hour.

<comment><USER18> Couldn't agree more. Don't set a maximum. That's way too low. If you want to be a premium Elance, you can't set a max.

</comment></comment></comment><comment><USER19> Personally, I agree with others that the $35 minimum may be a little restricting on new developers who are trying to build site experience. Maybe a new developer rule could apply in which for the first 5 or so jobs the mandatory minimum is waived when they're sending in offers.

You could also have something like Gold Star, Silver Star, Bronze Star rating for new developers so as to alleviate anxiety from selecting a bid from a new buyer.

New user star rating earned by things like, experience and references from their LinkedIn, Open Source attributions, and a rating on their website (by standards, how many posts their website has - don't tell them that can help their ranking though. Also could include in the ratings formula any tests that they completed on your site if you implement that (maybe make it so the highest rating they can be without completing any tests is Silver Star even if their resume is above and beyond).

I agree with everyone else who mentions escrow (most definitely) and testing for developers.

What hasn't been mentioned yet is some kind of work tracking system. I personally don't like systems which seem like big brother is looking over my shoulder as I code (you know which sites I'm talking about), but a system where the dev could post a snippet of what they're doing or even the ability to post the updated source (to be archived and viewable by you only of course, to be seen in cases of a dispute in hours).

<comment><USER20> _Maybe a new developer rule could apply in which for the first 5 or so jobs the mandatory minimum is waived when they're sending in offers._

Wouldn't this just incentivize people to keep making new accounts? If there's going to be a minimum, there shouldn't be any exceptions or it defeats the point and allows people to game the system.

</comment></comment><comment><USER21> I don't like the arbitrary minimum rate but I do see how it would differentiate you from the rest of freelancing marketplaces. I think it would be better to have different minimums depending on category and type of work. There is no reason why data entry or similar should start at $35/hr, It just shouldn't be $3/hr. Could also have different minimums for different countries, freelancers have different standards on what's a good hourly rate, many of them can do fine with $20/hr.

Other pain points to address:

It's very tiring having to bid on dozens of projects and never getting any work. This is a major problem for new freelancers. You have to lowball dozens of bids in hopes of getting your first ratings.

Something like Odesk's tests for freelancers but higher quality.

Buyers should also be reviewed not just freelancers. Putting money into escrow before accepting a bid should be mandatory, at least for new buyers.

I've used about five different freelancing websites in the past but it's been a while since then and I think a lot of problems are not coming to mind now. I'll let you know if I think of more pain points I would like to see addressed.

EDIT: I tried signing up but my current address is not in a country listed in your dropdown menu. I don't see why you would limit Europe to a handful of countries. If you can do business in one EU country, you can do in all of them thanks to the economic union.

<comment><AUTHOR> Will be doing that tonight. The initial plan is to have North America + (all of)Europe.

<comment><USER21> Another thing you should do is change the company name and company website to optional. A lot of freelancers have neither of those and it feels weird to make up a company name and use a personal blog as a company website.

</comment></comment></comment><comment><USER22> The "Technology" edit box in your profile is absolutely horrible; I spent about 5 minutes trying to type stuff in - it randomly deletes stuff if there is a typo.

</comment><comment><USER23> Changing phone number is broken and there is no way to delete your account.

<comment><AUTHOR> Thanks. Will be fixed in the next build.

</comment></comment><comment><USER24> Providing the option for the developers to show github and stackoverflow profiles might be a good.

<comment><AUTHOR> Stack Overflow, GitHub, HN is already included.

</comment></comment><comment><AUTHOR> Clickable: <http://www.canyoucode.com>

</comment><comment><USER25> Fantastic design! It can really set you apart from the more "corporate" designs of Elance/oDesk. It's a great idea to have the marketplace have a good design and aesthetic to position yourself as different from the kinda sketchy RentACoder-type sites.

How will you distinguish your review process and qualifications from the certification tests that oDesk offers? Arguably your internally-reviewed approvals will be more valuable than "User X passed the HTML Level 1 test" but how will you communicate that to clients searching your site for freelancers?

<comment><AUTHOR> Thanks.

The review is something we hope to figure out soon (as we reach volumes that we cannot handle ourselves).

We are looking at how the quality on HN stayed sane over the past years. And how we can include crowd-sourced moderation and ratings without people gaming the system to their advantage.

</comment></comment><comment><USER26> I'm sure you'll get a lot of developers sign up, so the supply side is fine.

But how are you going to generate demand? I know a number of people paying ~$20/hour on elance for developers (usually from Eastern Europe or the Phillipines). None of them are complaining about paying too little (or about the quality, or the language etc).

Your site is right when it says "Great talent does not work for peanuts". But $20/hour is great money in many places - why would someone want to pay more?

</comment><comment><USER27> From a usability perspective you should add more technologies and make the textarea itself bigger.

I can appreciate the need to control the terms you are allowed to choose but lets say someone releases a new JS framework tomorrow and it hits major popularity in a month - your site might still not have this. Perhaps this should work as pseudo-tagging.

In any case I love the idea since I want to take on part time project gigs apart from my full time job.

</comment><comment><USER28> Just signed up, looks pretty good. 2 suggestions:

1) Having a linkedIn profile shouldn't be required to sign up.

2) The 'pages' associated with an account don't seem super useful to me right now. A lot of my most interesting work is not graphical in any way, so given that the main element of a 'page' is the image that is not super helpful.

Maybe a 'projects' section as well/instead? That way I can provide links to GitHub pages or whatever.

</comment><comment><USER29> I think people might find some of the statements on the page offensive. Such as the implication that 'real experts' are only found in the west. Or that people from the east work for 'peanuts'. Sure they work for less because they need less to support a decent lifestyle, but that doesn't mean they're working for peanuts.

I realize the intention is good, but there must be another way to get the message out.

</comment><comment><USER30> As a person who hires coders I've been looking for something like this for a while. I think another helpful service you could provide would be to (for a fee) help non technical people describe the project in the way a developer would want to see it.

<comment><USER7> Can you put your email in your about so it's visible in your profile?

<comment><USER30> done

</comment></comment></comment><comment><USER31> Great Idea.

I just tried to sign up and got this error

Internal Server Error

Yesterday it worked. Today it is not working. Internet is like that.

You can go to the home page, or shout at us.

<comment><AUTHOR> Sorry about that. Fixing.

</comment></comment><comment><USER18> This seems a bit like The Ladders for freelancing. You can quote me on that (JK). On a serious note, I would set the minimum higher. I don't get up in the morning for less than $50 per hour.

</comment><comment><USER32> This is probably the smallest nitpick ever, but thought you'd like to know there's a typo in the header - "Guaranteed minumum" instead of minimum.

<comment><AUTHOR> Hey thanks. It matters!

</comment></comment><comment><USER33> <http://www.masterbranch.com/> creates real resumes out of open source contributions.

</comment><comment> daniel-cussen What if you're a US citizen living abroad?

<comment><AUTHOR> Expanding to other regions need to be done gradually. Otherwise we will end up being just another freelancing website.

<comment><USER34> Can you explain your reasoning here?

<comment><AUTHOR> We want to give a portal where Western companies at least have a chance competing (minimum rate). Presently, they struggle on the other freelancing sites because of the rock-bottom payouts there.

The result is that really good talent from the West stays away from freelancing portals, because they just get lost in the volumes out there.

This is not a good situation, since there is a ton of great talent in the West (probably more than anywhere else).

<comment> daniel-cussen Thx.

</comment></comment></comment></comment></comment><comment><USER35> Signed up to see how things worked. Is there an easy way to delete my account?

<comment><USER36> Sorry, not yet. We can have your account deactivated.

</comment></comment><comment><USER37> Seems like a great idea, will give it a show!

</comment><comment><USER38> Why only few countries from Western Europe?</comment>


NFL is offering $2M to improve helmet tech – but should they? - <AUTHOR> https://www.playsmartplaysafe.com/nfl-helmet-challenge <comment><AUTHOR> when the answer could be as simple as... just don't use any helmets ;-)

[https://www.sandiegouniontribune.com/sports/sdut-rugby- head-...](https://www.sandiegouniontribune.com/sports/sdut-rugby-head- injuries-safety-2016may16-story.html)

<comment><USER2> Similarly along these lines, I heard an anecdote that the #1 way to reduce car accidents is to replace the airbag with a steel spike.</comment></comment>


Fuck You: A Magazine of the Arts (1962-1965) - <AUTHOR> http://www.ubu.com/vp/FuckYou.html <comment><USER2> That title alone is just great. I'd love to download the PDFs, but they never come. Is the server down?

</comment><comment><USER3> Ah, the 60s, what a time to be alive. I was born in the 70s, sadly.

<comment><USER4> That's OK, you know just as much about the 60s as those who lived them. You had to read about them. They had to too because they don't remember them. :-D</comment></comment>


Why not kill -9 a process? - <AUTHOR> http://unix.stackexchange.com/questions/8916/why-not-kill-9-a-process <comment><USER2> Everything will probably be just fine if you kill-9 something. If a program fails permanently and dramatically when it's kill-9'd, you should "remove it from your filesystem", because it can't handle other, unavoidable abrupt failures either.

<comment><USER3> I think that's rather harsh, MySQL/InnoDB can't handle kill -9. Granted, kill-9'ing a database process is bad karma :)

<comment><USER4> If a database cannot handle kill -9 then it cannot be considered transactional and shouldn't be used.

<comment><USER5> Unless you're talking about filesystems with specific support for atomicity, and databases with custom storage drivers for those filesystems, that's really not fair.

It would be far too easy to kill any program mid-write().

<comment><USER6> That is what journaling is for. A database that corrupts data when you kill -9 it is garbage. A database has to survive without corruption when power fails unexpectedly, and that's even harsher than kill -9 in terms of what can go wrong if your code is sloppy.

</comment></comment></comment></comment></comment><comment><USER7> I remember learning about kill as a kid, then kill -9 in college, and after college re-learning it via Monzy[1].

I had sort of forgotten the importance of the signal argument. Such an _incredibly powerful_ command that is nothing more than a representation of a very simple decision or architecture [2]:

         Some of the more commonly used signals:
         1       HUP (hang up)
         2       INT (interrupt)
         3       QUIT (quit)
         6       ABRT (abort)
         9       KILL (non-catchable, non-ignorable kill)
         14      ALRM (alarm clock)
         15      TERM (software termination signal)

[1] - [http://www.youtube.com/watch?v=Fow7iUaKrq4](http://www.youtube.com/watch?v=Fow7iUaKrq4)

[2] - man kill

<comment><USER8> kill -0 <pid> to test if a process is alive.

kill -9 -1 to send a KILL to every process.

<comment><USER9> I went to kill -L and it didn't work! Linux Mint 15 (ubuntu saucy/debian derivative)

<comment><USER10> Heh I went to try it and sure enough it was in the manpage but didn't work on the commandline because.....manpage was for /bin/kill but from the commandline I was using the builtin kill. WOW!

      % kill -L
      kill: unknown signal: SIGV
      kill: type kill -l for a list of signals

      % which kill
      kill: shell built-in command

      % /bin/kill -L
       1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     7 BUS
       8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE    14 ALRM
      15 TERM    16 STKFLT  17 CHLD    18 CONT    19 STOP    20 TSTP    21 TTIN
      22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH
      29 POLL    30 PWR     31 SYS

<comment><USER11> Thanks for this, I didn't realize it.

You can disable kill (or any built-in)

Under zsh:

        disable kill

Under bash:

        enable -n kill

</comment></comment></comment></comment></comment><comment><USER12> Several of the answers on stackexchange and comments here are absurd.

SIGKILL shouldn't be your first resort but sometimes is necessary as a last resort. If the sky falls and you can't deal with it, there's something wrong in a lot of places which have nothing to do with signals.

<comment><USER8> Exactly. It should be the nuclear option of last resort.

<comment><USER12> But 'nuclear option' attaches too much meaning, if you're in the position, you'll run into plenty of circumstances where SIGKILL is necessary. It's a perfectly fine tool to use and deserves no extremist opinions.

<comment><USER13> Right... In Windows and OSX you have to do the same thing fairly often. It's called "force quit" or something like that. Otherwise you'd sometimes be waiting an eternity for programs to get themselves unstuck. If a program leaves a messy state behind when you `kill -9` it, it will automatically clean up the mess the next time it runs. If it doesn't, then don't bother using it, because it's extremely poorly written. (If there are orphaned child processes left behind, I kill them manually.)

Usually it's just an obviously good idea to send a milder signal first, because it's less likely to leave orphaned child processes and `kill 345` is just plain easier to type than `kill -9 345`. Also, trying a TERM signal first gives you some feedback on how fubar the process really is.

<comment><USER14> Yeah, Windows has "Force Quit" baked into their regular shutdown process now - if _any_ program is blocking the shutdown for more than a second or three, the user will get the option to kill _everything_. Under windows, there is now no excuse not to properly handle a forced abrupt termination, because the layman users _will_ do it.

</comment></comment></comment></comment></comment><comment><USER15> Sometimes you have to kill -9, but you shouldn't do it unless you tried other signals and they didn't work, and you know what the consequences are.

For example, postgresql forks a process for every connection. What you may not know is, if you kill one of these processes, it needs to clean up it's use of the shared memory pool. If you kill -9 _any_ of postgresql's child processes, the other processes will see that a peer died uncleanly, and postgres will just shut down rather than risk corruption.

Oh, the things we learn the hard way.

<comment><USER16> This is a Postgres thing tho', you can kill Oracle shadow processes willy- nilly with no consequences. Oracle has another process PMON that will clear up after them. If you kill PMON (or SMON) however the DB will shut down. However no data will be lost; at one company I worked at kill -9 on SMON was the normal way to shut the production DB down!

<comment><USER17> kill -9 on smon is used likely because I've seen "shutdown immediate" take over an hour to complete...

</comment></comment></comment><comment><USER18> The Linux OOM killer (used heavily by Android as part of normal operation) does a SIGKILL. I believe iOS does this as well.

So pretty sure this is totally fine and not a problem in the slightest, seeing as some billion devices or so are doing this on a daily basis.

<comment><USER19> I wouldn't say it's totally fine when oom kills mysqld and corrupts tables for example when a shutdown as alternative would have been better. Unfortunately oom-killer is not that smart.

<comment><USER20> I really hope you are wrong about killing mysqld corrupting tables, because if it does then I would not want mysql near my data. Databases should use a journal for crash safety.

<comment><USER19> Sometimes, not always but it does happen, I've seen it many times

</comment></comment></comment></comment><comment><USER21> Sums it up nicely for me:

"I use kill -9 in much the same way that I throw kitchen implements in the dishwasher: if a kitchen implement is ruined by the dishwasher then I don't want it."

</comment><comment><USER22> Somebody please write a bash script `murder' that sends 15, 2, 1 and then 9, with slighth delay between each signal. I'd do it myself, but I'm not very bash-proficient and have to run to work now ;).

<comment><USER23> I've had a version of this for years. Your post made me take another look at the code. I had to clean it up a little, but here it is:

[https://gist.github.com/anonymous/32b1e619bc9e7fbe0eaa](https://gist.github.com/anonymous/32b1e619bc9e7fbe0eaa)

(The cleanup might have introduces some subtle bugs, but a quick test showed no issues. Let me know if you find some!)

<comment><USER22> Sweet, thanks!

        temporal@legion~/r/mintia> murder 4421                                       0 50/50℃  13:56:10 28.01.2014
        murder: Killed process with PID 4421 with signal TERM (15).

Works like charm :).

</comment></comment></comment><comment><USER24> So there are two answers, one saying to try without -9 first (which is obvious), and the other suggesting you uninstall any program where -9 is necessary.

Was this submitted to HN for more opinions? So people could see the disagreeing answers? Something else?

<comment><USER25> > [...] and the other suggesting you uninstall any program where -9 is > necessary.

And vice versa, remove any program where -9 may cause damage.

</comment></comment><comment><USER26> When you care enough to send the very best, kill -15. When you want evidence (core dump), kill -11. For all other (most) purposes, kill -9 never hurt anyone but a process you wanted shot down anyway.

</comment><comment><USER27> I can give a real practical reason from experience - I was writing a script that needed to pull data from the database. I noticed I was doing something stupid in the SQL query, so I wanted to kill it and rerun it with the change.

I kill'd the script running it, and then kill -9'd it when that didn't work. Two weeks later someone asked about my query that was still running on the database.

And now I'm the one who warns people not to kill -9 scripts without understanding why it's stuck and how to clean it up properly.

</comment><comment><USER28> You will want to SIGKILL when you need to regain control, and/or when the process is not fundamental. E.g. some ancillary script stuck at 100% CPU or making the server swap crazy that isn't responding to SIGTERM. Anything more fundamental is likely to respond well to SIGTERM or not have the CPU/swapping problem in the first place.

</comment><comment><USER29> If you're not a server admin, kill -9 probably won't mess up your own machine in a significant way. I'm by no means a veteran, but I've used Linux as my primary workstation for 4 years now and haven't yet had reason to regret using kill -9. And given the number of times I have used it, I prefer a single kill -9 as opposed to 2-3 more kills beforehand.

</comment><comment><USER30> This just about sums it up: "Don't use kill -9. Don't bring out the combine harvester just to tidy up the flower pot." (from this answer [http://unix.stackexchange.com/a/8927](http://unix.stackexchange.com/a/8927))

</comment><comment><USER8> Best to wait sufficiently if possible, because what's happening might just be important to somebody.

If nothing else works, kill -9 -<master pid> to kill the whole process group, otherwise detached processes owned by init could get messy.

<comment><USER9> According to man 7 signal, killpg works for this

</comment></comment><comment><USER31> See also " _What to do when Ctrl + C can 't kill a process?_" ([https://superuser.com/questions/243460](https://superuser.com/questions/243460))

</comment><comment><USER32> kill = send a signal.

By far the easiest question to weed out inexperienced linux users.

<comment><USER33> Shouldn't that explanation be by followed by 'in order to request the termination of the process'?

<comment><USER34> Not always. The kill system call can be used to send any signal, it's just got a name that implies you're sending something like SIGKILL or SIGTERM. I have written C programs that use kill for harmless inter-process communication.

<comment><USER25> SIGUSER is quite common for that. Or SIGHUP.

<comment><USER35> By convention, SIGHUP is used by daemons to signal a change of configuration.

</comment></comment></comment></comment></comment><comment><USER36> There are two signals which cannot be intercepted and handled: SIGKILL and SIGSTOP.

</comment><comment><USER37> Practically speaking, things almost never go wrong when you kill -9 a process, as opposed to a more clean way. Also, time is money.

<comment><USER38> You must never use multiprocessing. If you're application spawns children processes, kill -9 will leave all the children orphaned.

It is better for the parent to catch a TERM and relay that signal to all the children. I find this to be a practical and typical use case...

<comment><USER6> If your application's child processes are orhpaned when the parent dies unexpectedly (for more than a few milliseconds), that is a bug in your program.

<comment><USER39> Not necessarily, processes spawned by bash don't necessarily have to die if you kill bash. For example if you use disown/nohup .. etc.

<comment><USER6> That's not what is normally meant by "multiprocessing" \- multiprocessing is when your application forks multiple processes of itself in order to get some concurrency/parallelism, and those forked processes should monitor their parent and exit immediately when the parent disappears.

<comment><USER39> True, but that's still a good reason to avoid SIGKILLing your processes.</comment></comment></comment></comment></comment></comment>


Sed(1) one-liners - <AUTHOR> http://sed.sourceforge.net/sed1line.txt

<comment><USER2> I don't see any use of the 'in-place' -i option.

My most useful one-liner:

            sed -i "s/pat/rep/g"   file

It means replace in-place all matches of pat with rep in file.

To make a backup of old file use -i.bak instead of -i where .bak would be the suffix of the backup file.

<comment><USER3> Option -i is not defined in POSIX sed. That's probably the reason author didn't include it in his list.

I have heard that it's GNU sed option only. (But can't currently say if it's 100% true.)

<comment><USER4> There's no reason why this functionality should be in sed when it can be implemented on its own and re-used. IIRC there's an an example script to for that in _The Unix Programming Environment_. Better to use sudo than have everything implement its own sudo-like functionality, etc.

See "UNIX Style, or cat -v Considered Harmful" by Rob Pike (<http://harmful.cat-v.org/cat-v/>) for a longer discussion of this.

<comment><USER5> In place operations have been implemented as a standalone utility: sponge from moreutils.

        sed 's/blah/foo/' file | sponge file

<comment><USER6> The irony

s stands for stream

there is no s in ed

</comment></comment></comment></comment></comment><comment><USER3> * explained [http://www.catonmat.net/blog/sed-one-liners-explained-part-o...](http://www.catonmat.net/blog/sed-one-liners-explained-part-one/)

:)</comment>


Virtual Dog Demo by Ridgeline Could Be the New Tamagotchi - <AUTHOR> https://mobile-ar.reality.news/news/apple-ar-virtual-dog-demo-by-ridgeline-could-be-new-tamagotchi-0179581/ <comment><USER2> This demo made with Apple's ARKit is 13/10 and features a very good boy.</comment>


Former Apple developer explains why the company's software is struggling - <AUTHOR> http://bgr.com/2018/02/13/ios-new-features-developer-apple-software/amp/ <comment><USER2> My current project is run in a similar fashion; and it shows... code quality is terrible, technologies are stale and riddled with performance work-arounds, bugs are fixed with the fastest possible implementation and handed off to the testing team then consequently bounced back and forth with trivial disputes.

The worst thing is the manager/ product owner/ tyrannical architect is a actually a nice bloke. but he is absolutely terrible at insulating devs from his stressors, which has a massive knock-on effect on his team. Recently he took leave for around 4 weeks and it was like night and day! we self organised: minimised new features and maximise time spent addressing technical debt built-up over 2 years. I was enjoying work again, and it had a almost skunkwork-like feel to it.

then he returned, then i handed in my notice.

</comment><comment><USER3> Thing is, any of us who've been in the software industry for very long have probably seen places run like this and that it is not the best way to get quality software out of the door in a reliable fashion.

And yet it still happens.

(insert image of me banging my head on the desk)

</comment><comment><USER4> It makes an interesting point about focusing on quality instead of a check mark by someone who is not directly under the hood. (project manager in this case) Also it cautions against seeing the trees (p1 bug) and missing the forest (good software).

I do think project managers are needed for this large scale software though. So I'm wondering, what is the best way a project manager should manage development of Apple's software?

</comment><comment><USER5> I was wondering if this was somewhat related to Apple trying to find a future direction because lately they've been just adding new versions of phones or macs or adding new updates to them but have not introduced anything except for maybe apple watch 2 years ago which has been steadily growing but not the immediate hit or newly introduced like Amazon echo or Google Home for right now.

Maybe this prioritization of a lot of new features is them making up for introducing a new product direction?

EDIT: oops, found Apple Homepod, maybe they're not marketing it well? Anyone here that uses it? My friends are apple lovers, buying nee iphones and macbook pro and havent heard of it either.

<comment><USER6> I think you raise a good point; I don't believe the HomePod even merits your "oops". It's not being heavily marketed because it's not all that impressive.

It is definitely the best speaker around, multiple reviews say the sound quality is amazing. However, we are in a golden age of ML and the Siri on HomePod is a joke when compared to Alexa and Google Assistant. Apple's culture of secrecy has left them woefully behind in the AI race (where researchers love to publish).

I agree with you that Apple does not really know where to go next. Awesome AR glasses that actually sell and do amazing things? An amazing smart home assistant that can run your home, but is handleable with simple within the Apple eco-system? I don't think Apple has done anything that bold in recent years and will struggle like you say.

Unless Apple secretly is doing something truly "Wow" and they're just quiet about it. Otherwise, I believe Tim Cook will earn more and more comparisons to Steve Ballmer: Great for sales/stock price, missed out on a game changing era of technology.

<comment><USER7> > However, we are in a golden age of ML and the Siri on HomePod is a joke when > compared to

This has nothing to do with secrecy or lack of user data or lack of algorithms knowledge. What is missing in Siri is lack of high quality gold data sets -- this is often curated by hoards of phds and other domain experts. It takes time to do the curation and Google is ahead of the pack. Amazon has done a great job opening up the eco system to third parties.

</comment></comment></comment><comment><USER8> I'm not contesting the article, but I'd feel more comfortable taking it as useful information if the source were something other than a Reddit comment.

</comment><comment><USER9> This can be managed by getting the software engineer's input into whether something really is a P0 or P1. The Product Managers should also know their users better so they can chime in and not consider everything to be a fire.

Mature projects are also supposed to have an increasing percentage of the time spent on them dedicated towards maintenance / upgrades / fixes / upkeep. A PMO that can't convince upper management of this is a weak PMO.</comment>


You Don't Need Moment.js - <AUTHOR> https://github.com/you-dont-need/You-Dont-Need-Momentjs <comment><USER2> If you are dealing with timestamps from the past (e.g. birthdays via a datepicker that constructs Date objects), then you should watch out for different browsers' inconsistent handling of Daylight Savings Time. Moment is really indispensable here, since it includes a database of past years' DST transition dates. I wrote a blog post about it here: [https://illuminatedcomputing.com/posts/2017/11/javascript- ti...](https://illuminatedcomputing.com/posts/2017/11/javascript-timezones/)

<comment><USER3> Past time zones should only be a fairly specialist need: our front end code (SPA that is especially in the time domain) doesn't need to deal with past time zones. Then again, although our SPA is 100% JSON, we do all date and time processing at the server.

Putting UTC times into our front end would require the front end to know too many business rules.

> e.g. birthdays via a datepicker that constructs Date objects

> [From your comment in link]: The birthday will be wrong from the very start, > because datepickers din't care about people can be born in some TZ and fill > forms different TZs. Normally if you're only interested in date only, it > doesn't matter if time part is off by hour or more hours. But if you live in > Africa, then it could be whole day difference (because of how date will > parsed).

I have trouble understanding your example - I am guessing you are sending UTC date including time of birth? Seems a little contrived. Maybe pick a better example (calendars or alerts and timezones?)

That said, I agree that trusting the browser implementation is mad. We still have clients accessing using IE8 (we just dropped support), Safari 7 (iPhone 4), and a fair number use Chrome 30/33 because that is the version the WebView is stuck on for Android 4.4.

Some of our users have the date on their computer set a week out (or more)!

Edit: just saw comment at end of your article "If your users enter birthdays with some kind of date picker, you probably suffer from this bug!". I think you just have a problem with your code: you would not use UTC date/time from a date picker, and you should either zero the time component or don't use Date internally when you just need a date - e.g. an input type=date naturally returns "yyyy-mm-dd".

<comment><USER4> The problem is that if you use a zeroed time component, but at some point it's assumed 00:00:00 (midnight), shifting timezones might mean that it shifts to the previous day. Even if you then truncate the hour portion before display, the date is wrong.

For example, you use a datepicker at some point, and it stores 2000-01-01 00:00:00 in the US/Eastern time zone (because that's where you and the computer you're on are when you do it). If you happen to store that as UTC, you might find some interesting outputs for people on the West coast if you convert back to a local (US/Pacific) timestamp. Specifically, you'll get 1999-12-31 21:00:00, and if you do this blindly and throw away the hour portion, you still get the wrong date.

When you want dates, you often really want to store just the date potion. Any time you want a date and time, you probably also want a timezone along with it, or at a minimum, you want to know what type of output your use case requires and handle it appropriately. Dates and times are one of those things that seems simple until you've had to deal with the details and encountered the problems enough that you always treat it with a bit of respect.

<comment><USER5> Even just using dates can be a mess. At midday UTC everyone experiences the same date. The other 23 hours of the day, a varying proportion of people are experiencing a different date.

"using dates" therefore works out to "not caring about the time of day" and that reduces to "not caring about the time of day in the same timezone" since the same time of day in two timezones have a ~50% chance of being in different dates.

It really comes down to "does your application need to worry about time zones?" If so, then you probably need to treat this seriously, and getting help with that is good. If not, not.

<comment><USER4> Sure, but I was referring more to the times you actually do just want a date. It's perfect for a birthday, or "this day in history", or any number of other things. Nobody really cares that while it was Tuesday where you were born, it was Wednesday for them.

In some instances, if you really only care about the day something happened, adding a time is just extra details to screw up. But if you _do_ need need a a time, you very well may also need a timezone.

<comment><USER5> well, yes, 99% of the time you're right... but... an astrology application (for example) will care about your timezone for your birthday.

It comes down to the use case, not the data.

</comment></comment></comment></comment></comment></comment><comment><USER6> The lack of timezone support in the two suggested alternatives (date-fns, dayjs) means they're not real alternatives for any use-case as soon as you're operating in a country with any DST, [https://en.wikipedia.org/wiki/Daylight_saving_time_by_countr...](https://en.wikipedia.org/wiki/Daylight_saving_time_by_country).

<comment><USER7> Seriously... It's not like timezone support is some esoteric interest in a Date/Time library.

<comment><USER4> No, but it does add quite a bit of complexity, and if it's done _correctly_ usually requires not just a database of timezones, but also when and how they've changed over the years.

Not supporting timezones is a valid design choice, but is _so_ important and integral it should be the _first_ item both mentioned by a library and used as criteria to decide whether it's a valid choice for those surveying libraries.

It's sort of like choosing a storage solution. Do you need persistent storage that can survive a reboot, or is something ephemeral that works only while powered good enough? Both have their places, but choosing the wrong one for your specific use case is usually very problematic.

</comment></comment></comment><comment><USER8> There's also Luxon from (one of?) the maintainers of Moment: [https://moment.github.io/luxon/](https://moment.github.io/luxon/).

It abuses the i18n api (by parsing the date out of a formatted string) to provide timezone support without shipping timezone data, which is pretty clever.

<comment><USER9> Oh, that's a beautiful hack, I love it.

</comment></comment><comment><USER10> Most of moment's size is in the localizations. You can reduce it from 300kb to 100kb by removing them or only including the ones you care about: [https://stackoverflow.com/questions/25384360/how-to- prevent-...](https://stackoverflow.com/questions/25384360/how-to-prevent- moment-js-from-loading-locales-with-webpack)

I think the bigger lesson, if moment's size is news to you (for those of us using webpack), is to install webpack-bundle-analyzer. It's loads of fun, if you like visualizations.

<comment><USER11> You can further reduce that to 0kb by using window.Intl . You get locale and timezone aware date formatting, built-in on all modern browsers.

The API is pretty nice!

[https://caniuse.com/#feat=internationalization](https://caniuse.com/#feat=internationalization)

</comment></comment><comment><USER12> Whenever a "you might not need this heavy, popular lib" gets posted to HN, the responses are always pretty divided. I always try and write my own functions and import things like lodash, underscore, jQuery, and moment as a last resort. Bundle size may not be that important to the people working on prototypes and side projects, but it certainly is to many other people.

If a library is heavy, it is in their interest to organize it instead as a collection of submodules that can be depended on individually (IIRC, lodash does this) otherwise they risk people just not using their stuff.

<comment><USER13> I've picked up node and js more seriously recently, coming from .Net and C# and I've been wondering why people in my learning material are relying so much on third party libraries for very basic things.

I'm probably a little old fashioned, but I didn't even know moment existed and I've been fooling around quite a bit with JS dates recently. It didn't take a long time to write the .ToString(dd-MM-yyyy) module, that was the only thing I really needed aside from the standard library, but I guess it would've been faster to import moment.js.

<comment><USER14> Coming from .NET you should know Noda Time ([https://nodatime.org](https://nodatime.org)) and the problem it solves. Consider moment the JS alternative, however, with JS native Date being more limited / broken than .NET's DateTime.

TL;DR: Goes way beyond standard formatting.

<comment><USER15> The C# DateTime has more useful methods than JS Date, but DateTimeKind and the way it counts ticks makes it an absolute trap for anyone to use, so I wouldn't say it's less broken.

</comment></comment></comment></comment><comment><USER16> A good lightweight alternative is js-joda. I recently switched from moment.js and I've been very happy with it.

[https://js-joda.github.io/js-joda/](https://js-joda.github.io/js-joda/)

<comment><USER17> At 43kb gzipped, it's hardly lightweight - that's 70% of moment.js' size, 4x larger than date-fns

<comment><USER18> js-joda offers a lot more than lightweight native Date type wrappers like date-fns. It offers separate time and date implementations which allows you to more precisely model your problem. The native Date object always consists of a time, date, and timezone.

For example, a js-joda LocalDate is just a date without a time or timezone. This allows you to cleanly represent things like birthdays, anniversaries or holidays in an unambiguous way.

js-joda is also immutable which in my experience is more predictable and less error prone. With js-joda, "d.plusDays(366);" leaves d unchanged.

js-joda also has very good duration support.

Because it does not use the native Date implementation it is potentially more consistent across platforms. It is also has lots of tests.

If all you are doing is formatting a few dates, date-fns is probably sufficient and it is certainly smaller, but for more intensive manipulations of dates and times I think js-joda is well worth the size.

</comment></comment></comment><comment> the-pigeon For all the problems with Moment.js this article really sells it as the better solution for many use cases.

</comment><comment><USER19> The problem is that moment didn't include locales as a default at one point, and then suddenly it did. And it's the kind of thing you don't want to do module splitting on, date functions can be used in all sorts of places so it's really a core lib

</comment><comment><USER20> Yes, I'm using date-fns and bits of this pull request [1]. It works very well and uses the Intl browser API to support time zones.

Also worth noting that the mutable nature of moment can make things very confusing where as date fns is immutable and consistent.

Remember that unless building a calendaring system, all dates should be stored in UTC and only converted into a specific Timezone for presentation.

[1] [https://github.com/date-fns/date-fns/pull/707](https://github.com/date- fns/date-fns/pull/707)

</comment><comment><USER21> While you might not need moment.js and can remove it from your project. The problem is that every other project is using it, so you're already picking up the dependency. Many months ago I went digging into if we could remove it and while I successfully pulled it out, found that three of the packages we install all needed it -- thus having one date library was preferable to extra code size.

</comment><comment><AUTHOR> But react-dates has moment as dependency, so…

<comment><USER22> Welcome to the wonderful world of code re-use. Hey, at least we're not re- inventing the wheel.

<comment><USER23> We're reimporting the wheel (which, by the way, also has moment.js as a dependency)

</comment></comment></comment><comment><USER24> I need Moment because Date.parse does not do the same thing in Safari as it does in Chrome

</comment><comment><USER25> When will JS engines ship with timezone data to not let a third party maintain it?

<comment><USER26> Ironically, it's possible every browser includes this already internally, but doesn't expose it to Javascript [0].

Packages still have their place, but the lack of a decent standard library will hurt us for decades to come (already is arguably).

[0] [https://dxr.mozilla.org/mozilla- central/source/intl/icu/sour...](https://dxr.mozilla.org/mozilla- central/source/intl/icu/source/i18n/unicode/timezone.h#131)

<comment><USER27> This. People often have a beef with the very wild npm ecosystem with tons of libs of varying quality, abandonned projects, bloated libs, etc but mostly it comes down to the standard library being anemic.

</comment></comment></comment><comment><USER28> I really don't understand this... while yes, I might at some point be interested in reducing my bundle size, for 99% of developers out there, a difference in 300kb is just completely irrelevant.

I choose my JS libraries because they are actively maintained, have well designed APIs (easy to use), are common enough to where newly hired developers already know them, and just generally make my life easier. This doesn't address any of that.

<comment><USER29> 300kb is half a second to load for someone with a 5mb connection (which is still quite common in a lot of the world...and even in parts of the US). It's also a LOT of crap to parse on a lower end computer.

Repeat with a few libraries, and you're going to need a Flash-style progress part as your app loads. That's not exactly a great user experience. Doesn't really matter if you're building an MVP or if you have bigger fish to fry, but eventually it certainly matters. There's a reason the modern web is so freagin slow, and only half of it is because of slow backend APIs.

<comment><USER30> After gzipping none of the variants are that large, and let's be real: the 3rd party ads and analytics and cat pictures are gonna strictly dominate the load time.

<comment><USER31> Just because there is even more bloat being loaded from other sources doesn't mean that adding more bloat doesn't matter. This kind of mindset has brought us to exactly this point where modern web sites are loading more slowly than one from 20 years ago would have while using dial-up.

</comment></comment></comment></comment><comment><USER32> Another light alternative (~2kB) is [fecha]([https://github.com/taylorhakes/fecha](https://github.com/taylorhakes/fecha))</comment>


My kids love Tiktok and FaceApp. Should I care? - <AUTHOR> https://medium.com/@royandre/my-kids-love-tiktok-and-faceapp-should-i-care-eb5cdafbda49 <comment><USER2> This is one example - rare though it may be - where Betteridge's Law of Headlines[0] is wrong.

The answer here is Yes, you really should care.

Whether you then subsequently ban the child the using the services, or control the usage, or just let them get on with it, _you really should care._

[0] [https://en.wikipedia.org/wiki/Betteridge's_law_of_headlines](https://en.wikipedia.org/wiki/Betteridge's_law_of_headlines)</comment>


Ask HN: How often do you visit HN? - <AUTHOR>

<comment><USER2> 5-10 times a day

</comment><comment><USER3> 1-3 times a day</comment>


Catch a re-run of Y2K in 2038 - <AUTHOR> http://en.wikipedia.org/wiki/Year_2038_problem

<comment><USER2> Q: Won't most people have computers, not older than 10 years in 2038? or wouldn't people by then migrate to new hardware, hence solving the problem?</comment>


Get Started With Firebug, Firefox's 'Killer App' for Web Developers - <AUTHOR> http://www.webmonkey.com/tutorial/Build_Better_Pages_With_Firebug

<comment><USER2> Firebug is an absolute must for javascript programmers who use firefox. Even if you don't understand any of its complicated features, the firebug console gives you good error messages, shows you a link to the line in your code where the error occurred, and you can type in expressions to evaluate them. You want to know what foo.opacity = 0.5 does? Just type it in.

</comment><comment><USER3> Best. Extension. Ever.

(Sorry. Yet, if you challenge that, I absolutely want to know what you think is better so I can install it.)</comment>


A Commemoration for Rachel Bryk - <AUTHOR> https://dolphin-emu.org/blog/2015/04/25/commemoration-rachel-bryk/

<comment><USER2> I was incredibly lucky to have known Rachel. She was an incredible person. I will never ever forget her. People only knew her as a depressed and moody person; I knew her as someone with a quirky sense of humor and a hatred of the boring and mundane.

-Omer Shah

</comment><comment><USER3> Very sad. Her posts on reddit on emulation were very informative. She's always around engaging with users.

</comment><comment><USER4> I'm really bummed about this.</comment>