skysight-inc/HackerNews huggingface dataset:
The trouble with version pinning is that, over time, technical debt builds up. Software is built using out of date versions. There are version clashes when A needs C version 1, and B needs C version 2, and A and B are needed by D. That's the key take-away item. When you pin a version, you begin to accrue technical debt.

This has long been a curse of ROS, the Robot Operating System, which is a collection of vaguely related packages which speak the same interprocess protocol. Installing ROS tends to create package clashes in Ubuntu, even when using the recommended versions of everything. This gives us a sense of what version pinning does to you like after a decade.

Tools for computing the total technical debt from version pinning in a package would be useful. You should be able to get a list of packages being used which have later versions, with info about how far behind you are in time and number of updates. Then at least you can audit version pinning technical debt. You can assign someone to bringing the technical debt down, updating packages to the latest version and running regression tests.
haha, I bet his mind will be blown by Eclipse/IntelliJ then.
Author here. Unfortunately, I seem to have failed utterly at communicating. Guess I'll have to try again at some point.

Perhaps my two links at the start will be better uses of your time. Particularly http://stevelosh.com/blog/2012/04/volatile-software.
> There are tools like greenkeeper which use your project's unit test to try out packages before upgrading, adding extra level of assurance.

Some communities have also started doing the reverse, where as a library you can get all your users's tests to run to check that you have not broken something they were using.
Probably might be best if you tell someone about your inability to do customer support than have them find out the hard way...
> Migrating our ORM to write commands on SQL [...]

Interesting. What do you mean by commands on SQL?
Building constraints don't always make it that easy -- the generator could be below the tank level, so siphon action can still siphon the tank empty, or it can be a few floors about the tank, too high to suck fuel from the tank so it has to be pushed up from below.
I solve this problem by having Google voice and a phone that I can use to make calls, but usually don't receive calls on.

Missed calls and voicemail show up in my email, transcribed to text and everything.

Given this, there is usually no reason to have a phone that can be rung by arbitrary callers.
Looking for summer 2018 software internship
Indeed it's nice we have a free, open source code editor that has true intellisense out of the box. (And that isn't terrible, like Eclipse). It's a good personal growth point realizing that you don't need to solve the problem of figuring out which combination of plugins you integrate into your text editor (like cscope or ctags), and start editing in a code editor that has solved this for you.
Well now I understand why people will pay $40/lb for coffee. And come to think of it, sustain the productivity sink associated with people standing around idly while the machine brews their cup.
The Power of Ten – Rules for Developing Safety Critical Code [pdf]
You can hover any function or variable, press command, and see its definition in a little popup. Or jump straight to the code.

SLIME for Common Lisp have had it for a much longer time, M-. works well enough in it.
A long time ago :-) A couple of reasons.

- Until we switched wholesale to a videoconferencing provider, I pretty much needed a landline for work purposes. In addition to just routine conference calls, our webcast provider wanted us on landlines when we gave webinars and I had little desire to go into the office at 11pm at night for the Asia Pacific webcast slot.

- I get poor cellphone reception at my house. Not really an issue now with WiFi assist but I pretty much needed a landline (actually Comcast triple-play) before that.

- I preferred having phones throughout the house and having an emergency backup.

- I like/liked the ability to give out a legitimate phone number that is not my cell.
Yes, there was a time when I took pride in that too. Then I realized how much more effectively I could use that cognitive capacity if I was applying it where it was best used rather than where my tools forced me to spend it.
The lack of information in voice is sometimes a boon. If I am annoyed, I can nevertheless always write perfectly politely, but I cannot always keep the annoyance out of my voice.
Semver is marketing, enumerating builds is engineering.

Sure, semver should be associated (pinned?) to build numbers. Invariant. Immutable. Never changing.

Semver is the public face. But internally, I only care what build number someone is talking about.
That's interesting. Could you point me at a good link for learning more? I spent a little time with CPAN back in 2001/2002 and ran screaming. Perhaps it's gotten better since.
also mostly too much confidence in his negative emotions
Preach it.

Also, has call quality completely tanked in the last decade or is it just me?
Show HN: BoatFace, an Alexa skill to tell you what that boat is
Instead of asking is this price fair ask if you would pay that price to buy your site and ask yourself what you would do to make it worth more. If you don't take the offer you're essentially buying your site for that price.
You do realize that you likely wouldn't have a job without those annoying customers who are calling for support?
Most of what you said in your comment is simply not true: http://news.filehippo.com/2017/11/snapchat-drops-out-of-app-...

https://techcrunch.com/2017/11/01/instagram-whatsapp-vs-snap...
That means that FB was probably the last "web" or "app" big IPO. Now it's Amazon, Google or Facebook. Even Yelp is withering. Just like it has been impossible to start a new car or airliner manufacturer since the 1920s (except for Tesla), the opportunity for creating new large web companies has been shut by the entrenched trio.
3bn what? I still "use" it in some sense, but I mostly publish auto-syndicated stuff, and read via mbasic, which uses no JavaScript and limits their surveillance. Of course I never load their "like" buttons. My parents found it useless and stopped using it; my kids can't be bothered. How much is Myspace 2.0 worth?
I love telephones, they're useful for having efficient and comfortable synchronous conversations. I don't think the level of hatred expressed here is warranted. Yeah, it's annoying when occasionally you receive a phone call at an unwanted hour, but sometimes it's crucial for people to get in contact with you.

I have a publicly listed number (in addition to a private one), and I have not received a spam call this year even once. When people call my phone, it is warranted.

Telephones remain the best way to contact emergency services, or settle things which you have no option to settle in person.
Not OP, but same here. Born in the 80s and only our parents have landlines. Though my mobile and office phone receive far more spam calls than real calls. My Google voice line gets a hand full of robot voicemails per day. The "Should I answer?" app blocks a lot, but not all.
There is one key part of this article which I absolutely support wholeheartedly (the rest of the article is kind of moot if we understand that version management is non trivial)

When a major change is made to something, as in a breaking change, where you as the developer are making the conscious decision that you will cause other people's shit to break if they keep pulling "latest" I absolutely think that the major version number should just be part of the naming scheme, not the versioning scheme.

We've actually implemented a similar system where I'm currently working. For versioning APIs, if you want to bump a major version then we force developers to start working with a whole new git repository, a whole new pipeline etc. If we have to patch some defect fix back to the old version, we can just cherry pick across forks, but most of the time we want to manage the life cycle of two bits of development that no longer do the same thing as being exactly that: bits of developed code that do different things
‘Towards a National Computer Grid’ – Electronic Computers, 1965
The ultimate suggestion of a name, version pair is easy enough to understand, but I also don't get what mentioning tuples is intended to show.

In practice, a string with a required format of "x.y.z" just is a 3-tuple of ints. Restricting the values to ints makes it easy enough to parse.

The example of npm shows some weird extensions like "1.2.3pre" which definitely complicate parsing, but that's not as much a difference between strings and tuples, as a difference between having a lot more options.
have consistently had their rights destroyed.

They absolutely have not, and this formulation illustrates the extreme positioning that the NRA has fostered for you to adopt.

If you think the NRA stands for gun owners' rights more than the profits of the manufacturers, explain their response to the Philando Castile murder.
We live in an age of libraries like cudnn which are vendor provided/optimized, for 99.9% of ML applications you won't need to write custom CUDA code. Further as I mentioned earlier with Intermediate Representation languages like TVM you are guaranteed to get the best underlying constructs across different computing architectures.

Julia might still be good enough MATLAB replacement for Computational Simulation style tasks, but its clearly not suited for Machine learning.
If the hard part of your problem is that you have to write "config: Config" a few times, either your problem is so easy that you should just get on with it or your solution is so badly designed you managed to ignore all the real issues and you should take a few dozen steps back and look at the actual domain.

None of this talk seemed to have anything to do with actual software or the issues thereof.
Since he wants that feature to work for Javascript, cscope is irrelevant anyway.
Christ on a motorboat, this entire article is a poster boy for Chesterton's Fence.

> To begin with, it's weird that versions are strings. Parsing versions is non-trivial. Let's just make them a tuple. Instead of "3.0.2", we'll say "(3, 0, 2)".

3.0.2 alpha 6 says what?

> Next, move the major version to part of the name of a package. "Rails 5.1.4" becomes "Rails-5 (1, 4)". By following Rich Hickey's suggestion above, we also sidestep the question of what the default version should be. There's just no way to refer to a package without its major version.

And maintainers, being already loath to bump the major, start bumping only the minor on breaking changes.

> And that's it. Package managers should provide no options for version pinning.

And now if the maintainer breaks the package (either wilfully or without noticing) the user is shit out of luck and jolly well fucked.

> A package manager that followed such a proposal would foster an eco-system with greater care for introducing incompatibility.

I've got this very nice bridge you may be interested in.

> Packages that wantonly broke their consumers would "gain a reputation" and get out-competed by packages that didn't

There is literally no reason for that to happen any more than it currently does.

> The occasional unintentional breakage would necessitate people downstream cloning repositories and changing dependency URLs

So pinning would still exist except you'd have to fork the project you depend on, and would forget to update it ever after? Yeah that doesn't sound like a recipe for complete disaster.

> As a result, breaking changes wouldn't live so long that they gain new users.

Call me back about the bridge thing, you'd love it.

> if you change behavior, rename.

Unless you don't care, or don't notice, then don't, and the whole edifice falls down once again.
It's going to be pretty hard to estimate value without some idea of revenue potential. In the end, a valuation is going to come down to expected value: https://en.wikipedia.org/wiki/Discounted_cash_flow.

Apparently the buyer expects the value of your site to be >$50K for them. Question is, what's it worth to you?
Reproducible builds are great! I was talking about the flow for upgrading at development time, not deployment. You have your versions fixed in production but want to periodically upgrade your dependencies to pick up security fixes and bugfixes. Today that process is far from smooth. OP was an attempt at thinking through how one might design an eco-system to improve things.

Pinning versions in Gemfile.lock is totally fine. Pinning versions in Gemfile is a bad idea.
You're absolutely right, and sorry for glossing it over there. Being able to hire is a competency, but deploying those hires for the success of the business and quantifying it is good performance.

I will say, however, that in highly competitive/politicized hiring environments, wresting away budget for hiring can be an indication of good performance, but that should be stated.
Me, too.

I don't hear, so I don't phone. However some business is almost impossible to conduct without phoning. AWS requires identification by phone. Customs tried to call me to ask me something about my bike I sent home from a holiday abroad. Credit cards are only unblocked by a phone call. And so on. (And phone relays are only a partial solution because some commpanies deem them insecure - I have currently a credit card I was not able to unblock, I will send them a cancellation notice.)

So, in other words, it's not hatred or perhaps an anxiety disorder, but a real discrimination of a disability, which leads me to agree with Mr Fisher.
project is liable to go boom at some future date

I've seen so many people come and go at my last job and at other companies, I don't think anybody cares.
Not sure it should even be given the lofty status of paradox. Would simply mark it up to a bad business model
Given that, it might be instructive to get a handle on what the buy values at $50,000. Could just be the domain name and/or the "host authority" (when a lot of other (legitimate) sites refer to your site on the web it is perceived by search engines has having a bit more 'authority' than other sites.

If it's the latter you might find they buy it and replace your content with a bunch of links to porn web sites. You'd want to be ok with that before you sold it.
James has a disability, and thus can ask for reasonable adjustments under the Equality Act 2010.

It's easier to lie and say "I'm deaf" because they have some awareness of that.

Also, in England, you can self refer to IAPT and most people start under 6 weeks and 96% of people start under 18 weeks.
"Last year, I received a series of 3am calls. At the dial tone, which is set to a horrifically unadjustable volume, I was woken from deep sleep to deep panic. "

That would be the ringtone. ( I suppose there are a large number of people who have never heard a dial tone.)
JavaScript in the beginning was used only for changing widget images on mouse over.
Usually, posts like this, where the submitter's username matches the domain name of the posted article, get flagged and killed pretty quickly.
> Maybe I'm at a disadvantage

You would only be at a disadvantage for that if the recruiters looking at your resume were just looking for keywords. And in many cases they are, and that's where i've seen it useful to put your concrete accomplishments in the experience portion of the resume, and put all those keywords in a gutter or in some other section (even better, put it in a word cloud for that extra street cred!)
> how to sell ads

Why are we so obsessed with the ads model. Why not start charging?

This is not a web app, where you have to take out your wallet and enter your CC info; all it takes is the scan of your fingerprint. I am sure people wouldn't mind paying a certain amount per year to keep using the app without creepy apps.

Sure, the revenue will be capped by the amount per year a user is willing to pay, but maybe the days of the fat cows are over?
No, it will be totally irrelevant in 5 years (as a career buzzword), to be replaced by the next fad -- like the 5+ fads that preceded it while I've been in IT (grid computing anyone? clusters? J2EE? How about ...transputers).
I think a lot of that is a gripe with the Windows platform itself and the "enterprisey" culture that surrounded Windows. It's pretty decent now but carries a really really ugly legacy in terms of performance, security, technical debt, and bad managers that insisted on $MS everything.
None of this is a good idea.
As per the legend.
Also the desire to regard himself as an otherwise confident person (even superior to the majority!) seems to be very strong:

> In many polls, people list their number one fear as “public speaking”, beating out “death” by some margin. Not me.

Perhaps for this reason the fear of talking to a stranger must be so strongly suppressed.

Personally, I also often feel uncomfortable when accepting a call from an unknown number, but I try to lean into the pain and pick up nevertheless. I actually think of my phone as something like a therapeutic device that allows me to practice talking to strangers and little by little the feeling of uncomfortableness will fade away...
> When a major change is made to something, as in a breaking change, where you as the developer are making the conscious decision that you will cause other people's shit to break

And what if that decision is not conscious (breaking changes due to minor changes happen all the time), or what if the breakage is conscious but necessary to fix something considered a bug? What then?
Great list !

Also you can look at the SSL certificate of a page of the doamin and see if many domains appears inside it.

And currently if the website uses letsencrypt and need wildcard DNS, you may find hundreds of domains. Fortunately Letsencrypt wildcard certificates come in January
Author here. This is a really useful comment, thanks. You don't appreciate that there's no silver bullet until you've tried to cast a few.
Am I the only one who doesn't feel like versioning has failed in some way? Sure, there are people who violate the constraints, or don't follow any discernible convention, but in my experience they are now the minority.

If you want to be absolutely anal about versioning, do your commit-based pinning all you want, just don't drag us all into it.
The killer feature the author points out is something pretty much all modern IDEs have. If you thought the feature was "cool" then I'd recommend picking up any commonly used IDE, it doesn't have to be one from MS.
High impact public speaking and presentation skills c – connecting is everything
Normally when the submitter only submits things from their own domain; or submits very frequently.
Snapchat doesn’t feel like a company with a business model that couldn’t be very successful, but it also doesn’t feel like there was ever a fighting chance of justifying it’s IPO evaluation
This app tells you if your local McDonald’s ice cream machine is down
Stuff seems to be very easy to get working in VSCode, whereas almost everything is a bit of a faff to set up in Emacs. Getting decent Go support in VSCode took about 1 minute, for example, and the only problem I've found with it is that now I've got to use Go. Emacs on the other hand... well, I haven't even bothered. It's almost certainly going to be a complete bind. (And even if it isn't, my statement is worded in such a way that I'm actually still right.)

Once you've been using VSCode for a while, though, you'll start to wonder just why you can't move that stupid sidebar to some other place on the screen.

Or maybe you'll wonder why you can't see its individual components in different windows. Why are they all stuck as like tabs of the same panel?

Come to think of it, why can you only split the editing window twice?

And considering it's all driven off a dynamic language, how come there's so much damn boilerplate when it comes to writing an extension? And where's the in-editor JS REPL akin to M-: or the scratch buffer? (Actually, now I've even asked that question, I'm sure I've just missed something obvious, because there has to be one, and it must be there.)

Don't even get me started on how to share configs between multiple systems... (there's an addon that'll upload them to gists but there doesn't seem to be any way to have system-specific configs, something that Emacs solves inherently because its config files are just Lisp code)

Also, VSCode doesn't work properly with my favourite font on Windows.

And I'm not going to mention org-mode.
Besides his emotional issues there author touches on a few great points.

1. Why do we use a loose, unstructured medium like voice for customer support and the script and restrict almost everything about it? Maybe basic support would be better in a different medium and only escalations go to phone?
2. Social engineering is still one of the most effective ways of hacking and the phone is a great medium for that. Yet we apparently year the phone like a more secure channel.
Shut Up and Measure: In Conversation with Cosmologist Brian Keating
I'm somehow less bothered by the latter. Folks gotta make a living, somehow, and sometimes people have to make choices between doing OSS development or having a real job and doing a lot less of the OSS work.

But, the learning materials and marketing are the ones that bug me...especially the ones that neglect to mention that the materials cover React+product, and only mention React in the title. You might not even know it's marketing until you've read half the darned thing and the crux of the thing turns out to be "now create an account here and use this service to outsource the specific thing you googled to learn how to implement yourself". GraphQL has a lot of the same thing going on. It's like "how to draw an owl", only instead of "now draw the rest of the fucking owl", it's "now send us money every month for the rest of your app's life and we'll draw an owl for you".
I'm more of the Questioner/Rebel description so I'll take a stab at it. It takes a lot more to get me to understand the motivations of a decision and to get behind things, but once I do, I throw myself into it with an intensity and depth that is often unmatched by those doing so out of a sense of duty or obligation. Even better when I'm empowered to figure out and set my own valuable-to-the-company agenda. I work best on thorny problems where I'm given trust and encouragement to dissent. I bristle at the more straight forward (yet super valuable-to-the-company) tasks that just need to get done without much questioning. if you have more of the former, the Questioner/Rebel is uesful. If not, you're right, it would be best to show that type to the door for both your sakes.
It seems like excessively low load would be a relatively easy problem to solve. One could heat tanks of water to boiling and vent the steam, that could probably absorb as much energy as needed.

Or just crank up the AC :)
I was depressed, anxious, and on the verge of suicide… then Zelda saved me
A small question. For a CloudFlare-protected website, I see this in crt.sh:

>X509v3 Subject Alternative Name:

>DNS Name:sniXXXXXXX.cloudflaressl.com (X are numbers)

>DNS Name:(lots of domains, including the one I was researching)

>...

Does that mean all those domains belong to the same user/person?
How much of this stuff has fundamental implications for the hardest problems that scientists, researchers, and policy makers are facing today?

My intuition says many of those problems have high dimensionality, but I'm not really confident about my intuition here.
Pinning isn't enough. People push history changes, rename things and just delete stuff all the time. I've had this happen to be more than once and would now never consider a application production ready until all dependencies are either vendored or forked.
What i found quite surprising in that context, is that the volume of the n-dimensional ball for any finite fixed radius goes to zero as n goes to infinity (see, for example, section "high dimensions" of https://en.m.wikipedia.org/wiki/Volume_of_an_n-ball)