skysight-inc/HackerNews huggingface dataset:
The great thing about doing open source work is that you decide how much or how little time you want to put into it.

I have a full time job and two small kids. I'm usually out of the house with the family on weekends, and after work, I sometimes play video games or read manga. I rarely ever attend meetups or hackatons because I live and work uptown and frankly don't have time to be driving downtown.

Yet, I still find time to work on my project (usually after the kids have gone to bed). I used to also do it on the commute when I took transit to work.

There's really no real secret to doing open source. Working on my project is something I truly enjoy doing, so I often "stew" on problems and next steps while driving or eating or before falling sleep, and on the nights I feel like working on the project, I just sit down and do. If sitting down to do open source feels like a chore, then it probably isn't for you (and there's nothing wrong with that!)

Like anything else that might get stalled by procrastination, every time you sit down to work, you just have to pick some small thing to complete, so that you can get into a roll.

Working on open source to scratch an itch is also a good way to incorporate open source into your day job.
Every type system eliminates all its own type errors by definition. Even the trivial system with one type eliminates all its own type errors (vacuously, since there are zero of them).

There is no universal set of errors called type errors. What are type errors depend on your type system. A good type system allows more errors to be encoded as type errors so you can catch them at compile time, but it doesn't mean anything to say that a language like Rust or Haskell eliminates all type errors. There are certainly type systems which could catch more errors.
I get the feeling that as soon as Wayland gets significant uptake and starts being less than broken for most users, it will instantly be replaced with something even more bizarre and inexplicable. The OSS community seems to view constant change -- and churn -- as an inherent good.
Very cool, but does anyone know more about the plan to offer a "lib pandas" mentioned here?https://mail.python.org/pipermail/pandas-dev/2015-December/0...
What I would really like to see is a way that the original source of a story is promoted or easier to find. Too often I see a headline online and click it only to see that the entire story is "according to site x..." Then I go to site X and see that its story is "according to site y..." and so on.

While I know that some subsequent stories can do original reporting, too often sites with better SEO just republish stories without adding much and, whether intentional or not, often distorting some part of the actual story
This is possibly the best article I've ever read about grad school. If you haven't read it yet, do. You'll like it.
That is not true. Games released physically for video game consoles must pass platform certification requirements and only then manufacture, distribute, and release the game. The lead time required for this in my experience is on the order of 2-3 months, during which time the development team cannot touch the "gold master" build of the game.

The build that ends up on the disk is not "completely broken or even mostly empty"; it is what the development team and publisher were satisfied shipping as the finished game 2-3 months prior. Any software, and games moreso, can be improved with more time so the intervening time to release day is often taken up with development of a launch day patch to fix bugs that were triaged to be ok to ship with, and/or to add features/systems/content that just missed the cut before.

Launch day patch sizes is more of a symptom of the build pipeline (maybe there is some non-determinism that is introducing larger diffs than are otherwise necessary) or late optimizations (to build packing, asset management, etc) that can force you to download the majority of the game again.
I foresee anti-theft measures being more like the drone rendering itself useless/calling home if stolen or captured. Also marking the parts with amazon identification so you know they are stolen. It's no different from stealing the mailman's truck when he gets out to make a delivery, and mail trucks don't need "defense" built in.
I completely agree. I try to support the open source projects I depend on via financial contributions (purchasing books/training/services offered by the organizations or Patreon). I also submit pull requests for documentation updates and answer questions in forums. One of my goals for 2017 is to contribute some source code pull requests.
Intel SGX Patch for GCC – Software Guard Extensions
Hah, I think I'm that person you're referring to. I would characterize my response differently.

Stripping out the specifics, the problem was: "write some code that blocks until one of a set of memory locations changes its value". The Haskell/STM API provides exactly that interface (where the memory locations you block on are those that you looked at in the transaction). Rephrasing then, the question was "how would you implement a simplified version of the Haskell STM blocking mechanism?", and your solution was "I would use the Haskell STM blocking mechanism", answering the question as though it were one of API usage rather than of API implementation.

That's probably fine as a question of workaday engineering (and maybe an argument for Haskell over C++ on the basis that it has more extensive libraries built-in), but somebody's gotta write that STM implementation, and that's what the challenge was trying to get at.

(In fact, the GHC STM implementation does exactly what the solution I outlined does: with each TVar, it keeps a pointer to threads parked waiting for the TVar's value to change, and unparks all those threads when a transaction modifying the TVar commits).
Thanks. I was searching and did not find any news regarding the same.
I think the last page is for Ditto machines. I remember them being used for schools back in the 80s when all the copies came out in purple ink.
Our client hated our design, until we told him this
This IS the answer for all databases. Start simple, do straight forward queries, and then measure, measure, measure.

Unfortunately query plan builders can do odd things. Is IN faster than EXISTS? Sometimes yes, sometimes no. The only way to know is to test, and this is true across the board.
Revising Python from scratch in order to have it as a passepartout for nomadic gigs until 2020 and beyond.
The trick for me is to break things down into manageable chunks. It may be a larger feature, but it isn't anything that a git branch can't handle. I try to keep the effort in half-hour increments, because with two small kids there just isn't room for anything bigger (most of the time).

Also, I'll often briefly open up some code at work while I'm eating lunch just to get my mind going on it. A quick scan of the structure allows me to then break away from the computer to walk/think/socialize while my subconscious mind chews on whatever the problem is. Whenever I find a free chunk of time, I'll already have a rough idea of what I can do to push that needle forward. It's then just a matter of doing it!
You can also check out some CMU public calendars and read their lecture notes about safe standards in programming or get introduced to contracts just so you get better at eyeballing your own libraries to look for obvious errors https://www.cs.cmu.edu/~rjsimmon/15122-s16/schedule.html

They also have distributed programming course lecture notes that are open to the public with golang specific info on how to deal with race conditions.

You'll have the same experience in Rust if you research why they've done certain things, but can quickly get lost on the mailing list unless you've read books like EoPL http://www.eopl3.com/
I was expecting a post about Microsoft's email client.

An annoying side effect of using commonly used words as product names. Signal being the most egregious offender recently.

The capital O of Outlook didn't help.

I know nothing of Python, R and big data, but things are looking up by the sound of it?
Wow. I've been using duplicity and dealing with that same issue. Thank you.

I sometimes tell myself I should spend less time browsing HN comments but then I find little nuggets like this that really make it worthwhile.
I think the point here is that there is no such thing as a stable state in software. Maintaining old infrastructure to support old applications is not a steady-state, it is a degrading state. As bugs and exploits are discovered and patched in new versions of windows/browsers/databases/frameworks/libraries/etc the old systems degrade to a vulnerable, un-maintainable, unsupported and often un-upgradeable state.
Vesna Vulović has died
A 501(c)(3) in the US needs to prove "Public Support". A 100,000 people making a $5 donation shows public support, whereas 1 person making a $500,000 makes the IRS think its a trade group or something else. 501(c)(3) is pretty complicated, but its not the only non-profit type.
I'm hard pressed to imagine how this couldn't be done efficiently. Do you have an example which correctly solves the problem but takes too long?

The only thing I can think of is something like the output rewriting an array on update over and over.
The war over the world's darkest pigment got even more ridiculous
Part of the issue stopping me from jumping in is that it feels like the language is still changing in ways large enough to make it difficult to learn. That may not be true anymore, but it seems like it would take a lot of work to keep up with the current 'best practices'.
For some things like courts and police it's required to stop violence and fraud; i.e. to maintain the rules of the game.

But, yes, I am in favor of a small, limited government.
> ANSI Common LISP lives up to that standard.

The interface to environment objects in Common Lisp the Language 2nd Edition did not make it into the ANSI standard. If you're going to fail Rust for making changes pre-1.0, then you should fail ANSI Common Lisp too.
Microservices Are a Commodity
Wireless and Cable Industries to Step on Each Other's Turf in 2017
Our hacker space has been meeting for years now. We are guests at the office of a foundation that is doing work related to art, design, society, and technology outside of their office hours. This makes the space very affordable.

Twice a week we open the space for visitors and regular participants. We try to be as open as possible; everyone is welcome to join up whenever they feel like it. There are no restrictions regarding participation or contribution. If people want to, they can make a small donation but it isn't required. At our meetings there is free coffee, tea, and beer, but everyone is welcome to bring other stuff as well. Donations in the form of drinks or food or tools are also welcome.

We have about 15 participants that show up regularly, and about 50 or so that show up now and then. I think we have had a couple of 100 visitors that did not return or only once or so, particularly when we organise special events.

Basically, people just show up and start working on their own projects. Somehow we have trouble starting communal projects, probably because it is up to the hackers themselves to keep it going or not. We try to create some sort of free-style atmosphere where everything can be supported, but there is no pressure to perform or finish. Most often, when a couple of hackers show up, it becomes more of a social gathering than a work place. That is always a nice end of the evening.

Furthermore, we also support other like-minded clubs to have their meetings at our space for free--we also have a large canteen, and a couple of meeting rooms. We have collected about four separate clubs that meet up about once a month or so. This is great as it results in some sort of cross-pollination.

After a couple of years we created an official foundation to make renting and paying things easier. It has a board, which has one board meeting a year of about an hour or two. So, bureaucratically, it does not take much time.
PHP 7 Suffers from 3 Critical Zero-Days
Without judgement, here is an explanation of those items mentioned above:

1.) Don't use user defined functions in any predicate.

In order to evaluate a predicate (WHERE clause, HAVING clause, JOIN condition aka boolean comparison), the query engine needs to know what both sides of the comparison evaluate to. So for each row, it has to pull out a value out of the database, then also execute the UDF (User Defined Function) in order to answer the question "does this predicate match?". UDFs are generally going to be slower than their native equivalents, and the best suggestion is to always try to do predicate matching on pre-computed values. So if you find that you are doing a lot of UDF based predicate matching, then it may be useful to see if you can pre-calculate the value of the UDF for that row, then do the predicate matching based on the pre-computed value. In MSSQL, these columns are called "Computed Columns", and computed columns in that engine can be persistent or not. You would generally want to use the persistent type for best performance.

2.) Consider that your query needs to be able to be converted into a "search argument" to use any indexes.

At a logical level, an index is a way of sorting rows. Imagine if you take all of the books in your local library, if you have one, and sorting them in alphabetical order. If someone asks you to find all of the titles that begin with "Database", then that's pretty easy. You walk down the aisles until you find the first book that starts with the letters D, A, T, A, B, A, S, and E. Then you continue reading off the titles until you find a book that doesn't use those letters anymore. Since the books are already alphabetized, you know that you've found them all. This is the equivalent of like 'Database%'.

Now imagine that someone instead asks you to find all of the books that have the word Database anywhere in their title. That's harder. Even though the books are alphabetized, the word Database could show up anywhere in the title, not just at the beginning. So you have to read the title of every single book in order to know if it contains the word Database. This takes a lot more time. This is the equivalent of like '%Database%'.

3.) Any function you use on your values in the tables mean that there are often no indexes you can use

The scenario presented here is something like Where left(title, 4) = 'asdf' or where firstName + ' ' + lastName = '_quick_q'. Internally, the query planner is going to index use what it determines is the best based upon the left side of the predicate, and even though it might look like "left(title, 4)" would be able to use an index, and maybe in some engines it does, there is generally no index that is going to match that definition. Many times people fall into this trap with simple stuff like where UPPER(LastName) = 'Q'. It seems like the query engine could make this work, but it won't because the left hand of the predicate doesn't match the index definition.
ccache and forward declarations / isolating classes that require use of large header files to implementation files. Ie, spend 80% of your time working on classes without deep header dependencies.

It's amortized O(k).
Being impossible in practice because of political dynamics isn't particularly great for a policy suggestion, though.
Yea, I went to one of these years ago just when they were starting up. A couple of the students were very impressive at the end of the 12 weeks, but I was not. It is a lot of information at an extraordinary pace. I found that I could not sustain more than 11-12 hours a day of work, taking some of Saturday and all of Sunday off. I had no social life during this period outside of the camp, but did get an beginner level job offered to me at the end of it. It still took years before I felt comfortable saying that I was a developer.
No, only some portion of the population (possibly not even the majority--see the U.S. 2016 election) decides for everybody including those who are against it.
> Another example was SPJ's talk about parallel programming in Haskell, where the result was that a 6 core Haskell version was equivalent to a single core C solution.

Reminds me of a Rich Hickey talk were he proudly declared that a Clojure solution based on its persistent vector type running on four cores was as fast as the Java/mutable vector solution running on one!

The point there was supposed to be that Clojure's inefficiency is more than counterbalanced by the fact that it makes writing parallel code easier.

I was not convinced, though.

> In the same talk he also boasted that "this is only possible with Haskell", to which an audience member replied that the HPC community had been doing this for well over a decade with FORTRAN.

The FP advocates always seem to use examples which show non-interactive processing of "embarrassingly parallel" vector data. And yes, that is trivial in any language.
Even in C land all you need to do is to add one keyword / annotation to your for-loop and you are good.
What is “Lean Analytics”?
> Create a realistic dataset and run performance tests before you release anything into production.

This is so true.

Depending on your write patterns and your queries, a realistic dataset can mean:

1. Same distribution of keys as production

2. Same rate of writes as production

3. Same order of writes as production

4. Same volume of data at rest as production

( edited for formatting )
Yes. Sadly, Poland doesn't have much room to maneuver at the moment. Putting aside the coal miner unions and the economic collapse of coal mining regions it would cause if Poland had the option to quickly move off, cleaner sources remain either prohibitively expensive and/or blocked by environmental groups (you're as likely to find environmental groups protesting nuclear as shale gas). Add to that the dependence on Russian gas (save for some Norwegian gas), the low cost of coal and Germany's smarmy deals with Russia including Nordstream that are designed to cut central Europe out with serious political consequences, Poland really is in no position to choose otherwise right now.
> individual is probably not going to pay for anything at all.

Source?
News Today (Dec 29, 2016)
StrongSwan 5: How to create your own private VPN
Well, I simplified the example a bit, for the real query bar.id is not unique and has to be constrained by other means.

Think an application/case with a table with credit scoring variables where each variable has a case id and a variable type id, so i had to join the same table multiple times with different criteria.
But replacing all of the left joins here with subselects did reduce the query time by an insane amount.

However I have seen this behaviour with unique indexed left joins too just not so extreme.

And for comparison (i have the same schema in my analytics postgresql database), the exact same query here takes about 1.5 minutes with left joins.
> having to slave away 10-12 hours a day

Well, part of that is a choice to consume at a rate that requires such work. It's somewhat easy to have a nice financial position by delaying kids and not pouring money into cars and shopping ... but not many people choose that lifestyle.

The FIRE community is all about the alternatives.
China Turns to $503B Rail Expansion to Boost Growth
So, it's possible to buy a "wifi modem" [1][2] for the C64. It connects to a telnet BBS (via WiFi) and redirects the output to the C64 User Port, emulating a standard serial modem. The existing terminal software can be used [3].

[1] https://www.cbmstuff.com/proddetail.php?prod=WiModemOLED

[2] https://jammingsignal.com/commodore-wi-fi-modem/

[3] http://commodore.software/downloads/download/59-ccgms/410-cc...
This comment breaks the HN guideline against introducing classic flamewar topics: https://news.ycombinator.com/newsguidelines.html.

Please don't do this again.
> With web apps there should be very little risk if you followed standards

You might be surprised by the number of subtle bugs lurking in corners left out as "implementation detail" by standards.

I've learnt to treat browsers as capricious genies that stick to the letter of the standards, but inevitably screw you over by inconsistently doing the opposite of what a sane person would have regarded as implicit.
Good question. For saving someone from dying it may be justified to forcefully extract money from others.

But definitely not for education.
Nasty swipes like this will get your account banned on HN, so please edit them out of your comments here.

We detached this subthread from https://news.ycombinator.com/item?id=13273641 and marked it off-topic.
Not only is it sometimes faster, and sometimes slower, but the answer can change, for the same schema, for the same query, depending on the volume and distribution of data.
Interesting, but in a weird way it kind of works against the whole point of Markdown - markup that emphasizes text-only readability.

I think visualizations are best left to separate projects that specialize in them - which in turn generate images that can be placed in a Markdown document.

Of course, if anyone finds this useful (obviously the author does) I would never discourage it. I'm simply trying to reconcile this with what I personally believe the main purpose of Markdown to be.
Wrapping anything weird into a view is not an optimization pattern.
The MongoDB Update Command – A Handy Introduction
Development is going awfully slowly then. Unity 8 was in early alpha stages more than three 3 years ago.

http://www.omgubuntu.co.uk/2013/08/unity-8-ubuntu-13-10-arri...
> I do feel like shipping goods by container ship is bad for the environment and bad for consumers.

How is it bad for consumers (beyond the environment)?

Shipping goods does include an environmental cost which is not incorporated into the price of things - an unfortunate externality. We should have a carbon tax to properly reflect the true cost of items made and shipped so the market can choose between a locally made good and one made elsewhere.

There seems to be a popular opinion that even if the environmental cost were accounted for (carbon neutral) that it is still somehow inherently superior to make things nearby rather then trade for them from another city, state or country (especially food).
Inventing a new programming language is hardly sufficient if your existing codebase is 10M lines of c++ :).
Testing on human subjects is limited and I don't think you can build a sample size that is large enough.

Single payer is a great example, Californian or NY voters will likely vote in such a system while Texans would likely opt into a free market approach. Wait a few years and see the outcomes of each policy. Now you can make an evidence based decision rather than a political one.
If you use open-source software at work -- which you almost certainly do -- your employer might not mind if you spend a small, fixed amount of time every week improving that software.

You should ask your manager. First identify what you'd work on, then make an argument for how improving it would be good for the company as well as the public, and finally (if needed) try to sell them on the PR and recruiting benefit to the company. Propose a specific chunk of time for it, so your manager doesn't have to worry about you disappearing down a rabbit hole. (I might suggest the last 4 hours of the week, when not much gets done anyway.)

If you work for a larger company there may be policies around this, and they are likely to make it more difficult. But as a developer, you only need your manager's approval.

If you work for a smaller company you'll have a much easier time selling the idea. And if it's really important to you, consider working for a company that actively supports this.