Show HN: New website for a Mac screen text recognizer - <AUTHOR> https://owlocr.com <comment><USER2> Even if I ignore the clickbaity wording of the link, I can't read the text on the website properly as its left margin is clipped on mobile.

<comment><AUTHOR> Brutal man, maybe I should have checked mobile - thanks for the heads up, no sleep.

Fixes, going up</comment></comment>


Skylake-SP Xeon: Moving from E7/E5 Naming to Xeon Gold and Xeon Platinum - <AUTHOR> http://www.anandtech.com/show/11300/intel-publishes-list-of-xeon-gold-and-xeon-platinum-cpus-for-purley-platform <comment><USER2> So finally after N3000/M/H/HK/HQ/U/P/E/K/T/i3/i5/i7/Celeron/Pentium we can have Gold and Platinum now!</comment>


Anonymous Ukraine releases Klitschko e-mails showing treason - <AUTHOR> http://voiceofrussia.com/news/2014_02_23/Anonymous-Ukraine-releases-Klitschko-e-mails-showing-treason-3581/

<comment><USER2> One of my favorite use cases for the cloud is spinning up a VM to open stuff like this. It is all in Russian/Ukrainian so if you don't want to copy/paste into google translate don't bother.

At this point who cares? The guy is a criminal, fled, played this entire thing wrong and was his own undoing. Outside influence or money didn't tell him to beat the 50 students/journalists or continue to beat and shoot at journalists, then complain they are not giving you fair coverage. This guy is a piece of shit who unfortunately probably won't do a single day in jail.

<comment><USER3> Why the opposition didn't wait till the upcoming elections in 2015?</comment></comment>


Show HN: Google Has a Word Coach in Search - <AUTHOR> I tried looking up a word in Google search, and was met with a kind of widget in the page, which ended being a game called Word Coach.
Given a word, the game asks you to choose the most similar  of two other words, while upping the difficulty if it sees that it's easy for you.
Spent about 15 minutes in game. You should check it out.
Type "word coach" in search, and it should pop up. I'm using Chrome on Android. <comment><USER2> I suspect this game is designed to improve Google's image classification algorithms.

</comment><comment><USER3> I noticed this too later yesterday, but couldn't find where they store the scores.

</comment><comment><USER4> Hope it would be available for other languages.</comment>


Beating C with 70 lines of Go - <AUTHOR> https://ajeetdsouza.github.io/blog/posts/beating-c-with-70-lines-of-go/ <comment><USER3> Alternatively, here's my entry for "Beating C with 40 lines of C": [https://pastebin.com/JzFfE5GB](https://pastebin.com/JzFfE5GB)

      $ time wc -w 100m
      2266395 100m

      real 0m4.568s

      $ cc -o wc wc.c

      $ time ./wc 100m
      2343390 100m

      real 0m0.511s

Of course, it disagrees on the answer, because I just used 100M of random data and it doesn't care about wide characters. It gives the same answer as GNU on plain ASCII text.

It's not faster because it's better, it's faster because it is doing less.

<comment><USER4> > It's not faster because it's better, it's faster because it is doing less.

I can't recall who said it, but this reminds me of this idea: If you don't care about correctness then I can make it as fast as you like.

</comment></comment><comment><USER5> Something I posted elsewhere:

All of these articles are frustrating because they use different environments and test sets and none of the ones I've read have posted the test sets up. Some people use random characters, some people use existing files. Some people use files of 1 MiB, some 100 MiB, some several GiB in size. Not only that, but the people programming the replacements don't even normalize for the difference in machine/processor capability by compiling the competitors and GNU wc from scratch. The system wc is likely to be compiled differently depending on your machine. The multithreaded implementations are going to perform differently depending on if you're running Chrome when you test the app or not, etc.

This would easily be solved by using the same distribution as a live USB, sharing testing sets, and compiling things from scratch with predefined options, but nobody seems to want to go to that much effort to get coherent comparisons.

<comment><USER6> >none of the ones I've read have posted the test sets up

I think the earliest(?) entry[1] in this "series" (the one done in Haskell) had their test input shared alongside the source code, and it has been referenced in some others (often multiplied several times over, as the original isn't very big). Beyond that it's ASCII only, the contents matter little.

>nobody seems to want to go to that much effort to get coherent comparisons

I think nobody really wants to get any coherent comparisons, because this thing isn't really a competition between the entries themselves.

[1]: [https://github.com/ChrisPenner/wc](https://github.com/ChrisPenner/wc) (see data/big.txt)

</comment></comment><comment><USER7> These articles seem like they're playing code golf more than proving anything as a viable alternative to C.

The goal is to analyze your needs and pick the language best suited to your task. The goal is _not_ to find one language that excels at everything.

<comment><USER8> I could be wrong, but it seems like it wouldn't be difficult to outperform these implementations with a similarly hacky C implementation. I expect that blog post in the coming days.

<comment><USER9> It's mentioned in the post [https://github.com/expr- fi/fastlwc/](https://github.com/expr-fi/fastlwc/)

<comment><USER8> Ah, I didn't see that. Thanks!

</comment></comment></comment></comment><comment><USER10> Yeah, let me just multithread and hand-optimize the piss out of this Go program until it's marginally faster than it would have been in C.

Reminds me of the argument that venison tastes better than beef. The argument roughly being, "If you shoot the deer right, drag it home right, gut it right, skin it right, tenderize it right and cook it _just_ right, it'll be _almost_ as good as store-bought frozen beef"

<comment><USER11> Author here. I think you should go through the article again. I think it's quite readable, and there are no "hand-optimizations" as you say. Also, the single-core implementation was already faster than the C version - <USER2> multithreaded version was only done to explore different methods of concurrency in Go.

Hope that clarifies things.

</comment></comment><comment><USER12> Speedy CPUs with lots of cores are cheap enough that the time taken for garbage collection may very well be worth it.

On the other hand, I do still love code golf and other speed/size/wonkiness competitions. It's a lot like the early demo scene whose sole effort was to show how much they could do with very limited resources.

</comment><comment><USER13> Under the "Better parallelisation" section, you don't need to proxy methods for your sync.Mutex if you embed the type.

        type FileReader struct {
            File            *os.File
            LastCharIsSpace bool
            sync.Mutex
        }

And your Lock() and Unlock() calls on FileReader would just work.

<comment><USER11> Fixed, thank you!

</comment></comment><comment><USER14> How many times have the tests been run? Once? First for C, then for Go? What about disk caching then?

What I can see there is that for the same algorithm, the Go version was not so fast. It was comparable. The memory overhead could be caused by the size of the program, as wc has more functionalities.

Then there is compared a totally different algorithm with a false claim "this way a go implementation is faster than a c one". Sure it is, as this is a different implementation of a different algorithm. A fair comparison would be implementing the same algorithm in c and comparing then. I assume the difference wouldn't be huge.

So, generally, I think it's not a fair comparison.

<comment><USER11> The tests were run 10 times, and I used the median value. There wasn't much variance between runs, so I don't think disk caching played much of a role here.

Being a garbage collected language with a runtime, Go certainly cannot match the performance of C, and it was never my point to prove otherwise - obviously, for the same algorithm, the C implementation would be faster. Instead, I was exploring Go to highlight how simple it is to write safe, concurrent code in it.

</comment></comment><comment><USER15> wc seems like a bad example because it's basically IO bound. The title should read, "Go's built in bufio reader is faster than raw reads on the file descriptor." Which it should be because that's the point of bufio.

<comment><USER16> No, it's not faster. They are comparing a Go version that does not do character decoding (which is necessary for correctly counting the number of words under the presence of non-ASCII punctuation) to a C version that does decode characters (and matches them against a larger character set with _iswspace_ ).

This can be easily shown, by counting words and lines using _wc_ separately. Word counting decodes characters (to find non-ASCII whitespace that may separate words), whereas line counting just looks for ASCII line separators:

        $ time wc -w wiki-large.txt
        17794000 wiki-large.txt
        wc -w wiki-large.txt  0.48s user 0.02s system 99% cpu 0.496 total
        $ time wc -l wiki-large.txt
        854100 wiki-large.txt
        wc -l wiki-large.txt  0.02s user 0.01s system 99% cpu 0.034 total

So, without character decoding, looking at every byte is ~15 times faster. So, if you'd compile wc without multibyte character support (which would be a fair comparison), it would probably beat Go without any parallelization.

<comment><USER11> This is not true, see my comment here: [https://news.ycombinator.com/edit?id=21587907](https://news.ycombinator.com/edit?id=21587907)

<comment><USER16> Take the Darwin version linked from your site. Run _perf record wc thefile.txt_. Then run _perf report_ and you will see _iswspace_ in the call graph.

As I show in [1], removing this call and replacing it by a character match, gives a speedup of almost 2x.

[1] [https://news.ycombinator.com/item?id=21592089](https://news.ycombinator.com/item?id=21592089)

</comment></comment></comment></comment><comment><USER17> > I hope it demonstrates that Go can be a viable alternative to C as a systems > programming language.

Are you kidding me? This is nothing close to a systems programming language. This isn't much of a comparison at all. wc is a very simple case that doesn't match the complexity of real-world programs. Go comes close here because you're not using the high-level abstractions and that make it useful in the real world. GNU coreutils also tend to focus on having tons of features (compared to BSD/busybox/plan9/other), which can slow them down. If you really want to get competitive, I bet an AVX-512 implementation would be fastest, and that's more doable in C, but this is a bogus comparison in any case. It's just people doing this because they like a specific language.

<comment><USER18> Furthermore this isn't "system programming", he just replaced a "user land" program with another. But I blame the Go team for turning "system programming" and "realtime programming" into useless buzzwords to promote their language.

<comment><USER19> Yeah when I first looked at go that was the first 'no fu' for me. Go isn't a systems or real time programming language. It's a managed language with training wheels. Which is okay by me. Lying about it though is not okay.

The second FU is they claim that decisions they made based on personal preferences were technical ones. That's a very insidious lie that programmers make all the time. Insidious because it destroys trust between programmers and managers.

<comment><USER20> This is not lying:

\- gVisor hypervisor on Google Cloud and Linux sandbox on Chromebooks

\- Android GPGPU debugger

\- Fuchsia TCP/IP stack and volume management

\- Baremetal TinyGo on Arduino Nano33 IoT, Adafruit Circuit Playground Express, BBC micro:bit among many others

\- Coreboot firmware

\- Biscuit POSIX like OS

But whatever, the GC-FUD is strong among C devotees.

</comment></comment></comment></comment><comment><USER21> > Go can be a viable alternative to C as a systems programming language

Stop this nonsense please. This does not show anything even remotely close to systems programming capability of Go. Write a device driver in Go that performs without lagging, benchmark it and then come back.

<comment><USER22> [https://news.ycombinator.com/item?id=18399389](https://news.ycombinator.com/item?id=18399389).

It's been done. Performs well.

<comment><USER23> They quite literally were forced to use C for some parts because Go is not a systems programming language. They write this in the article.

<comment><USER22> > As we wanted to keep unsafe code to a minimum, we instead chose to employ > the C code from the original driver as an opportunity to present cgo.

It's not for performance reasons. I think you misread. Also the driver is pure go now:

[https://github.com/ixy-languages/ixy.go](https://github.com/ixy- languages/ixy.go)

<comment><USER23> Systems language is not only about performance. Where did you get that?

<comment><USER22> They never said that they had to use c because go is not a systems language, so your assertion looks wrong. They wanted to avoid using unsafe. In c everything is unsafe by the way, so it makes it less of a systems language?

<comment><USER23> No Go isn't a systems language because for one you don't have direct control over memory if you need it. For instance Go doesn't even have the volatile keyword which is essential in many cases when interfacing with hardware. The paper you linked laments this as well.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Because they compare multi threaded to single threaded.

<comment><USER11> Author here. If you read the article carefully, you'll see that the 70 lines I used to outperform wc was a single-threaded implementation. I multi-threaded it later for overkill.

</comment></comment><comment><USER25> Looks like clean idiomatic go code to me.

</comment><comment><USER26> I'm really surprised by how much memory this task needs. Using a 16KB buffer and incrementing an integer needs multiple MB.

I guess that's the size of the executable after it's been loaded into RAM that's so large?

<comment><USER27> Yeah, if that figure includes the executable, then it's also probably including the whole runtime (scheduler, GC, etc) since Go programs statically link the runtime by default. In that case, 2MB isn't so bad (especially considering glibc is ~10MB [and with no scheduler or GC!] iirc).

</comment></comment><comment><USER28> Okay, so you are comparing single-threaded GNU wc with your multi-threaded Go implementation? That's fair.

</comment><comment><USER16> Another article in the series _beating C by moving the goal posts_. My comment on the original article about the Haskell version on lobste.rs:

Keep in mind in all comparisons to GNU _wc_ that it does extra work, detecting multi-byte characters and decoding multi-byte characters if present, to correctly count the number of words. _perf_ shows a significant amount of time being spent in multibyte character handling. If you trigger a code path that does not do decoding beyond the byte level, it's much faster:

        $ time wc wiki-large.txt
        854100  17794000 105322200 wiki-large.txt
        wc wiki-large.txt  0.42s user 0.02s system 99% cpu 0.438 total
        $ time wc -l wiki-large.txt
        854100 wiki-large.txt
        wc -l wiki-large.txt  0.02s user 0.02s system 98% cpu 0.034 total

( _wc -l_ looks at every byte, but does no decoding.)

From a quick glance, this is also where the 'Haskell beats C' article fails. It's comparing apples to oranges, the _ByteString_ implementation does not do the same as GNU/macOS _wc_ and returns incorrect results in the presence of non-ASCII punctuation. The article incorrectly states that _wc_ will handle input as ASCII. Unless you do not use a multi-byte locale, macOS _wc_ uses the combo of _mbrtowc_ and _iswspace_.

<comment><USER11> Author here. This is not true - I included a link to the manpage ([https://ss64.com/osx/wc.html](https://ss64.com/osx/wc.html)) in the article to avoid this confusion. I did not use GNU wc; I used the OS X one, which, by default, counts single byte characters. From the manpage:

> The default action is equivalent to specifying the -c, -l and -w options.

> -c The number of bytes in each input file is written to the standard output.

> -m The number of characters in each input file is written to the standard > output. If the current locale does not support multi-byte characters, this > is equivalent to the -c option.

Moreover, I also mentioned in the article that I was using us-ascii encoded text, which means that even -m would have been treated as ASCII text.

Hope that clarifies your issue.

<comment><USER16> It is not about the character count, but the word count. wc decodes characters to find non-ASCII whitespace as word separators. If you read further in the same man page:

 _White space characters are the set of characters for which the iswspace(3) function returns true._

That your text is ASCII encoded does not matter, since ASCII is a subset of UTF-8. So at the very least, you need an extra branch to check that a byte's value is smaller than 128 (since any byte that does not start with a leading zero is a multi byte character in UTF-8).

However, if you look at the implementation at

[https://opensource.apple.com/source/text_cmds/text_cmds-68/w...](https://opensource.apple.com/source/text_cmds/text_cmds-68/wc/wc.c.auto.html)

You can see that in this code path it actually uses _mbrtowc_ , so there is also the function call overhead.

<comment><USER6> It only calls _mbrtowc_ if _domulti_ is set (and MB_CUR_MAX > 1), i.e. only when given the option -m.

<comment><USER16> You are right! So that's a Darwin oddity, still a wide char function is called in that code path, iswspace, which adds the function call overhead in a tight loop.

<comment><USER29> If domulti is not set, the wide char function is _not_ called as far as I can tell. Why would it? It's explicitly meant not to do wide char stuff in that case.

FWIW, when this was going around for the first time I took this Darwin version of wc and experimented with setting domulti to const 0, statically removing all paths where it might do wide character stuff. I didn't measure any performance difference to just running it unmodified.

<comment><USER16> It's about _iswspace_ as I mentioned in the parent comment. Replace the line

        if (iswspace(wch))

by

        if (wch == L' ' || wch == L'\n' || wch == L'\t' || wch == L'\v' || wch == L'\f')

And I get a ~1.7x speedup:

        $ time ./wc ../wiki-large.txt
          854100 17794000 105322200 ../wiki-large.txt
        ./wc ../wiki-large.txt  0.47s user 0.02s system 99% cpu 0.490 total
        time ./wc2 ../wiki-large.txt
          854100 17794000 105322200 ../wiki-large.txt
        ./wc2 ../wiki-large.txt  0.28s user 0.01s system 99% cpu 0.293 total

Remove unnecessary branching introduced my multi-character handling [1]. This actually resembles the Go code pretty closely. We get a speedup of 1.8x.:

        $ time ./wc3 ../wiki-large.txt
          854100 17794000 105322200 ../wiki-large.txt
        ./wc3 ../wiki-large.txt  0.25s user 0.01s system 99% cpu 0.267 total

If we take the second table from the article and divide the C result (5.56) by 1.8, the C performance would be ~3.09, which is faster than the Go version (3.72).

Edit: for comparison, the Go version from the article:

        $ time ./wcgo ../wiki-large.txt
          854100 17794000 105322200 ../wiki-large.txt
        ./wcgo ../wiki-large.txt  0.32s user 0.02s system 100% cpu 0.333 total

So, when removing the multi-byte character white space handling, the C version is indeed faster than the (non-parallelized Go version).

[1] [https://gist.github.com/danieldk/f8cdaed4ba255fb2954ded50dd2...](https://gist.github.com/danieldk/f8cdaed4ba255fb2954ded50dd2931ed)

<comment><USER29> Thanks, I finally understood what you are saying. Indeed, the code uses iswspace to test all characters, wide or normal. Strange design choice. For whatever it's worth, even just changing

        if (iswspace(wch))

to something like

        if (domulti && iswspace(wch))
            ...
        else if (!domulti && isspace(wch))
            ...

got something like a 10% speedup on my machine. And replacing isspace with an explicit condition like yours is _much_ faster still. I checked, isspace is macro-expanded to a table lookup and a mask, but apparently that's still slower than your explicit check. I'm a bit surprised by this but won't investigate further at the moment.

<comment><USER16> _Thanks, I finally understood what you are saying._

I am sorry for the unclear comments. I'll stop commenting on a phone ;).

 _Indeed, the code uses iswspace to test all characters, wide or normal. Strange design choice._

I agree, it's really strange. This seems to be inherited by the FreeBSD version, which still does that as well:

[https://github.com/freebsd/freebsd/blob/8f9d69492c3da3a8c1ea...](https://github.com/freebsd/freebsd/blob/8f9d69492c3da3a8c1ea7fa1bc82b7639cc3064b/usr.bin/wc/wc.c#L310)

It has the worst of both worlds: it incorrectly counts the number of words when there is non-ASCII whitespace (since _mbrtowc_ is not used), but it pays the penalty of using _iswspace_. It's also not in correspondence with POSIX, which states:

 _The wc utility shall consider a word to be a non-zero-length string of characters delimited by white space.

[...]

C_CTYPE

Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments and input files) and which characters are defined as white space characters._

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> This is excellent for showing how to do X in Y language. But like most benchmarks - it's a bit silly. If speed was the priority, you could parse only 1% of the file, then multiply the values by 100, assuming the rest of the file looks alike. Do you really care to know the file has 1337 words rather then ca 1300 words?

What about power consumption?</comment>


Metamagical Themas: Sanity and Survival (1985) - <AUTHOR> http://www.gwern.net/docs/xrisks/1985-hofstadter <comment><USER2> Just an interesting bit of perspective - that was written in 1985, 33 years after the detonation of the first thermonuclear bomb, and 33 years before today.

Despite good-faith hand wringing and bad-faith fear mongering, it seems to me we're further removed from a nuclear war than ever. There are valid fears of nuclear weapons in the hands of rogue states or non-state actors, but as someone whose been alive the whole time, the idea of some kind of massive globe encompassing nuclear conflict seems far more remote than it did in the 1980's.

<comment><USER3> Maybe to you, but apparently not to them: 2018: 2 Minutes to Midnight 1984-1988: 3 Minutes to Midnight

[https://thebulletin.org/timeline](https://thebulletin.org/timeline)

The last time we were at 2 minutes was the 50s.

</comment></comment><comment><USER4> Wonderful topic. Still remember the article about "tit for tat" strategy which can be consider to be the basic moral principle that similar to "Treat the others the way that you want to be treated".

Most normal people don't see the association of this principle to the Godel theorem so they don't strongly against preemptive strike policy and elected mathematically stupid political leaders who caused chaos world today.

<comment><USER5> Can you explain the relation of "tit for tat" to Godel's (incompleteness?) theorem? I'm familiar with both but don't see the connection.

</comment></comment><comment><USER6> Isn't this just blatantly violating copyright?

<comment><USER7> Yes, but if it decreases the risk of nuclear war even slightly, isn't it worth it? :)</comment></comment>


Tacking a new approach for tracking lost kids/Alzheimer's patients - <AUTHOR> https://www.golocateme.com/ <comment><USER2> Not sure if I'd pay $180/year for a static page with my phone number on it.

<comment><AUTHOR> You are right,i am working now on a new pricing. My plan is to dramatically cut the yearly price . Initially I thought that people will buy a few days at a time and the costs will be low.</comment></comment>


Hackers release a new jailbreak that unlocks every iPhone - <AUTHOR> https://techcrunch.com/2020/05/23/hackers-iphone-new-jailbreak/ <comment><USER2> Already discussed:

[https://news.ycombinator.com/item?id=23287364](https://news.ycombinator.com/item?id=23287364)

</comment><comment><USER3> This makes me wish Towelroot was still around/maintained. Still unable to root one of my newer Android devices :/

</comment><comment><USER4> Do Android phones next. Root these stodgy locked down corporate provided houses.</comment>


Daring Adventures with Passive Income - <AUTHOR> http://www.patrick-wied.at/blog/daring-adventures-with-passive-income-1/?wblog=1 <comment><USER2> I think that one of the classic problems with the notion of passive income is the belief that it cannot have any ambition.

A case in point is that my wife and I created a web site 3 years ago. This site has not been touched in over a year, and that was the first and only update to the site in over 2 years.

It has been consistently banking $2,500-$4,500 per month for the entire time it has been online. I put in _maybe_ a few hours of time each quarter just to check in on it.

Now, there is a catch - you can't just make a site and call it a day. You first have to do market research, come up with an angle, partner with a merchant or five, write a content plan, build it, market it, etc.

Now, assume that your time is worth $100/hour. If you spend a full 2 weeks on it at 40 hours/week, you'll rack up $8,000 in overall opportunity cost. At first glance, that is a steep price.

However, if you've picked right, you'll make that money back within a few months, probably less. This does mean there is going to be an upfront cost to you in order to get it out the door, but you will also have a better long-run profitability.

<comment><USER3> > You first have to do market research, come up with an angle, partner with a > merchant or five, write a content plan, build it, market it, etc.

It seems like you could make a website about that without some kind of selling angle because those were the first questions I had. I can't think of anything I know to write that anyone would be remotely interested in reading; i have no life, can't relate to normal things like bars or restaurants or whatever people do in their spare time.

<comment><USER4> Step back and examine your life, and you'll find tons of stuff once you think about it. For example, poking through your history I discovered that you've been through an acquisition: <http://news.ycombinator.com/item?id=4329721>. It probably wouldn't make you a boatload of cash to retire on, but there are probably some folks out there who are interested in learning about Surviving The Acquisition, or What To Do When You're Being Acquired.

If you don't feel like you have anything yet - go learn something, and document the process. Others who are learning usually appreciate that, and there's always something you can teach someone.

<comment><USER2> Well put.

</comment></comment></comment></comment><comment><USER5> The author makes a good point about support being a big hassle, but I think misses the lesson from it. When you're selling something for $7.50, customers demand a lot of support if something goes wrong.

But who says they are entitled to that support? You should craft a carefully worded answer to support emails around "support being through the existing web site and documentation". And quote a nice high hourly rate if they want custom services.

Zero support should be the model for software priced under $100.

Looking at ThemeForest, most authors respond to all comments in the forums for their template, but politely say they cannot assist with customization or make even small changes to their theme for people.

<comment><USER6> Support becomes an upsell. I've seen that model used in a lot of software I've bought, seems to work very well.

</comment></comment><comment><USER7> Cache: [http://webcache.googleusercontent.com/search?q=cache:J2Nfrde...](http://webcache.googleusercontent.com/search?q=cache:J2NfrdeDMO4J:www.patrick- wied.at/blog/let-the-adventurous-journey-begin-passive- income+&cd=1&hl=en&ct=clnk&gl=us)

</comment><comment><USER8> People confuse minimum viable product with low quality all the time. Minimum viable is really about the smallest set of features a customer needs to spend money on your product. It doesn't mean a low quality product rushed out quickly. A minimum viable product could still take you months to build, and require design help, if the features demanded were hard to build.

<comment><USER2> > A minimum viable product could still take you months to build, and require > design help, if the features demanded were hard to build.

Oh so very, very true.

A hard lesson to learn, that. We're about to release a new product and man it has taken longer than we ever thought. Still worth it :)

</comment></comment><comment><USER9> I must say that making $1,000 in a year from passive income is a pretty low goal. I make that in under three months with my "now passive" income. (I prefer to call it "now passive" income because it came from a lot of hard work in the past, but requires little to no upkeep.)

The author mentions that he plans to set another goal once he reaches the $1,000 goal. My advice: definitely do so! It may not be easy, but it is possible. And yes, reaching an originally low goal may give you the motivation to continue.

My personal goal is to eventually have enough "now passive" income that if I were to lose my job, I _could_ lower my standard of living and survive unemployed without dipping into my savings.

<comment><USER10> I think that the first goal is totally dependent upon his current situation. It is very much a low hanging fruit scenario, so that grabbing the low fruit will provide some motivation and inspiration to continue one. Nothing worse than setting the bar too high, missing it and getting depressed about it.

</comment></comment><comment><USER11> I would encourage the author to read patio11's blog (<http://www.kalzumeus.com/blog/>). You could be aiming higher, and I think you'd do well to switch your focus away from penny-producing efforts like Flattr and toward more scaleable things.

</comment><comment><USER12> Passive income is pretty great but no source of income is truly passive. You'll always have certain issues like maintenance, customer support, etc. i.e. when you're talking about software.

If it were a website/webapp you'd still run into issues with bugs, security fixes.

This doesn't even take into account the fact that new competitors might come in, search algorithms may change, etc.

That said, a well SEO'ed site (for a popular keyword) is possibly the best kind of passive income one can have. No marketing expenses, the content is already there (presuming that's what got it SEO'ed well..) and you'll keep getting visitors. Awesome :)

<comment><USER2> > If it were a website/webapp you'd still run into issues with bugs, security > fixes.

This was really true a few years ago, but changed as of late. Right now we are running all of our sites on a Sinatra-based engine on Heroku. It has no admin backend, no security fixes to make, nothing. There isn't even a database!

The whole thing is compiled and cached. Any changes made on a live basis come through git or via a unique caching system I did with S3/Cloudfront. The upshot of this stack is zero overall maintenance. It doesn't break as there is simply nothing _to_ break (except Heroku/AWS)

<comment><USER12> That's interesting but definitely not a global use case. Most apps will require some sort of bug fixes and security updates. Even the linux kernel requires security updates and I do think that's some tight code right there =)

Not every app can be compiled-cached-served. I think 99% of them can't go that route.. Would love to see how you can run relatively dynamic code/functionality by the method you're suggesting.

<comment><USER2> Ah, I think I didn't make it as clear.

I'm talking about the typical affiliate site that is SEO'd or run with PPC. Many of those don't require much and you can often do dynamic functionality without requiring a database.

I have one site where you can look up physical locations of the merchant. Instead of a database, there is a YAML file that is dumped into MemCache - doing a search hits that and I don't need to maintain any Postgres instances.

<comment><USER12> I see. So you do have a database (it's the YAML file) but I see how you're talking about keeping costs and maintenance on the lower side. Nice! So I guess the only thing you're worried about is if google algorithms change. Still, that won't happen to PPC.

I would love to find some good niches for PPC affiliate commissions. Do you have any examples ? ( don't have to be your sites..)

</comment></comment></comment></comment></comment><comment><AUTHOR> in case the server didn't make it: [http://webcache.googleusercontent.com/search?q=cache:tyEeSk8...](http://webcache.googleusercontent.com/search?q=cache:tyEeSk8_kGYJ:www.patrick- wied.at/blog/daring-adventures-with-passive- income-1+&cd=1&hl=de&ct=clnk&gl=ch&client=firefox-a)

</comment><comment><USER13> Can someone give some examples of (hypothetical or real) "passive income" service/site? Every time I hear about the concept, the person is always very circumspect of revealing anything about their business(rightfully so), so it's hard to visualize for me.

<comment><USER14> Here you go: <http://www.smartpassiveincome.com/how-to-build-a-niche-site/>

</comment></comment><comment><USER15> Passive income is a return on equity. Not 'an ec2 instance that makes money'.

<comment><USER16> I want the second thing. Where do I get that?

<comment><USER17> Luck?

Honestly, I've found the return I've gotten on various endeavors to be pretty baffling. Wholly dominated by external factors as far as I can tell, many of which are themselves dominated by random contacts. My most profitable projects have been totally random things I put very little work into, and I could not have predicted they'd be the ones to take off.

<comment><USER15> I used to have that i couple times in my life. Related to SEO and online betting. But those holes are usually closed in 1-2 years. It's not a startup, not even a lifestyle business, just a sort of an intellectual game.</comment></comment></comment></comment>


A Math Genius Blooms Late and Conquers His Field - <AUTHOR> https://www.wired.com/story/a-math-genius-blooms-late-and-conquers-his-field/ <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=14646280](https://news.ycombinator.com/item?id=14646280)

</comment><comment><USER3> Does getting an undergrad degree in astronomy and physics, and then a math PhD from UIUC, really count as "blooms late"? Sounds like a fairly standard career path to me.

<comment><USER4> Yes, calling him a late bloomer when he's 34 is pretty awful.

<comment><USER5> There's a traditional view in math that most great accomplishments are had before 30, based on past mathematicians' successes.

<comment><USER4> "and the truly great ones are dead before they're 40 so all old mathematicians must be worthless" I've heard that one, too. Doesn't make it beneficial to the field.

<comment><USER5> Agreed. Great to have a counterpoint in the subject of this article.

</comment></comment></comment></comment></comment><comment><USER6> I would just like to express my gratitude to [Kevin Hartnett]([https://www.wired.com/author/kevin- hartnett/](https://www.wired.com/author/kevin-hartnett/)) for making an enjoyable article that I could almost follow as a quantitatively minded programmer / non-mathematician. It makes sense saying that graphs are somehow a form of matroid. Even without knowing what a matroid is, I get a sense of the importance of spatial relationships.

<comment><USER7> Kevin wrote a blog post on this topic here: [https://www.quantamagazine.org/the-tricky-translation-of- mat...](https://www.quantamagazine.org/the-tricky-translation-of-mathematical- ideas-20170628/)

</comment></comment><comment><USER8> I majored in math in undergrad, and I always daydreamed about solving difficult mathematical problems despite a lack of formal training. I even had a teacher that I had to "pretend to understand".

Seeing a real-world example of this fantasy come true is fascinating. The article was also surprisingly well-written; most mention of higher mathematics in the media is oversimplified to death, but this was an honest and yet approachable presentation of the Rota conjecture (now theorem).

By the way, here's another result on chromatic polynomials (proved first by I don't know, but re-discovered by my combinatorics class):

Define a "gluing" operation by taking two graphs and connecting them along a common vertex.

The chromatic polynomial, h(x), of the new graph, is the product of the chromatic polynomials of the subgraphs over x: h(x) = f(x)*g(x) / x.

<comment><USER9> For more such properties, check out this paper [1], section 1.5.

[1]: [https://www.cs.elte.hu/blobs/diplomamunkak/mat/2009/hubai_ta...](https://www.cs.elte.hu/blobs/diplomamunkak/mat/2009/hubai_tamas.pdf)

</comment></comment><comment><USER10> As another user pointed out, why should be the chromatic polynomial of rectangle with deleted edge be: q^4 - 3q^3 + 2q^2 and not q * (q - 1)^3. A counter example: when q=2, we have two ways to color the rectangle with a deleted edge. Am I missing something?

I think fixating q as the number of possible ways to color the end points of the deleted edge leads to the wrong result.

<comment><USER11> This article was "reprinted" from the original at Quanta Magazine. The original article has the correct answer of q(q-1)^3. (It was probably corrected after Wired "reprinted" it.)

[https://www.quantamagazine.org/a-path-less-taken-to-the- peak...](https://www.quantamagazine.org/a-path-less-taken-to-the-peak-of-the- math-world-20170627/)

<comment><USER12> Indeed. At the bottom:

> Correction June 27, 2017: The original version of this article included an > error in the calculation of the chromatic polynomial of a rectangle.

</comment></comment></comment><comment><USER13> It is always worthwhile to introduce the techniques from one field of study into another.

</comment><comment><USER14> > his father taught statistics and his mother became one of the first > professors of Russian literature in South Korea

I notice that really talented people, always have talented parents. Rarely do I read stories about poor blue collar parents producing science wiz. It leads me to believe that genetics play a much bigger role in our intelligence than nurture.

<comment><USER15> Why does it lead you to believe that? If they have talented parents, wouldn't the parents raise them in a way to encourage their talents to blossom?

Would be interesting to see if the children of talented parents that are put up for adoption and raised by average parents are as successful. Or vice versa, talented parents raising children of average parents.

<comment><USER14> I guess you're right. I am obviously not that smart... Haha..

But to your point, Steve Jobs is an example of that. He had blue collar adoptive parents, but his birth parents were PhD level people.

I am not gonna put my foot in my mouth again and say this is proof of anything, but it is interesting to me.

<comment><USER16> It's the nature vs nurture thing. It mostly boils down to 'a bit of both' and if you are really lucky in either department then you can still very well manage to succeed.

<comment><USER15> Just be born rich or well connected and you will have no need for silly things like talent!

</comment></comment></comment></comment></comment><comment><USER9> > "Every one of these graphs has a unique chromatic polynomial"

This is incorrect. Two different graphs may have the same chromatic polynomial. For example, all trees of N vertices have the same chromatic polynomial: x(x-1)^(N-1)

<comment><USER17> I think they're trying to say that the graph uniquely determines the polynomial, rather than that the polynomial determines the graph. Or at least, that's how I read it. But I agree it's a bit ambiguous.

</comment></comment><comment><USER18> UIUC is a really good school. Getting in there is not easy.

<comment><USER19> >UIUC is a really good school. Getting in there is not easy.

While overall a good school, their math department is not ranked that high.

<comment><USER12> Especially compared to engineering and CS.</comment></comment></comment>


Technology Assessment Design Handbook [pdf] - <AUTHOR> https://www.gao.gov/assets/710/702976.pdf <comment><USER2> O that will put you to sleep. Jeez it's so superficial it's unrealistic.</comment>


Here is a puzzle entitled "lowercase" - <AUTHOR> http://lowercase.billyjanitsch.com/one.htm

<comment><USER2> Years ago I played notpr0n, which is a puzzle very similar, in which you use links, urls and other web-based "locks" to advance to the next level.

[http://notpron.org/notpron/](http://notpron.org/notpron/)

It is also interesting for non-geeks to learn about how the internet (and computers) work.

</comment><comment><USER3> Oh, come on -- don't cheat!

Though I admit I don't currently have the time to get far (I've gotten the first couple but have work to do tonight...). I love these puzzles, though!

I quite enjoyed going through the web penetration puzzle posted here a year or so ago -- where to access the next URL at each step involved a slightly trickier exploit (starting at just reading the HTML source, to modifying form fields, to tweaking cookies, etc.) -- anyone remember where this was?

It was educational (as well as fun), so at least I could excuse burning some time doing it.

<comment><USER4> That was Stripe's Capture the Flag: [https://stripe-ctf.com/](https://stripe- ctf.com/)

Super fun!

</comment></comment><comment><USER3> Please use ROT-13 if you want to give answers; [http://www.rot13.com](http://www.rot13.com)

Vague hints are fine, but putting "SPOILER ALERT" right above the answer doesn't help; it's impossible to read past those posts to see the less giveaway hints.

</comment><comment><AUTHOR> Let's hope HN can help me with this. Trying to go through the puzzle and brute-forcing with a dictionary.

<comment> mauricio-OH How does it work? what's the URL of the second step?

<comment><USER5> I guess that's a part of the challenge. There's nothing on the page that indicates what the second step could be, I gave up.

<comment><USER6> > _each level contains two sections (a, b) between which the url will require > only a slight modification_

This sentence made no sense for me.

</comment></comment></comment></comment><comment><USER7> Nice! Reminds me of notpron[0] which entertained me for weeks.

[0] [http://notpron.org/notpron/levelone.htm](http://notpron.org/notpron/levelone.htm)

</comment><comment><USER8> Oblique spoiler alert?

What does a cow's leer mean? I can't think of any permutations of the letters in 'name' that make sense.

</comment><comment><USER9> Any idea on 5a? It gives you a pair of coordinates which point to Papua New Guinea (according to Gmaps), yet the source makes a Greenwich reference.

<comment><USER10> The Greenwich reference is just to let you know that you're dealing with a latitude and longitude.

</comment></comment><comment><USER11> from done.htm it looks like the next answer is ginger bread man but I can't figure out what the right url for it should be...

<comment><USER12> Same here. And I felt so smart after getting the first step!

<comment><USER3> There's an oblique hint in the source code, sometimes.

Though with that one, the first line of the hint helped me, but the second just confused me (I've just looked up the full story behind the "Run run" reference -- I suppose it was a reminder of the ending to the story? Lost on anyone who doesn't remember the full thing, though...).

<comment><USER13> Supposedly it is the catchphrase of the gingerbread man.

[http://www.folktale.net/GBman.html](http://www.folktale.net/GBman.html)

Having never heard that tale, I was stumped. I supposed it is part of US culture? I'm from Sweden myself, so if I was told the story as a child, it wouldn't have been in english anyway.

</comment></comment></comment></comment><comment><USER14> six b has me stumped. The obvious interpretation is that you need to do something with "4 down" and "2 across" from the crossword puzzle shown. But according to typical numbering, that puzzle wouldn't even _have_ a "2 across".

Edit: OK, I got it. Tricksy tricksy.

<comment><USER15> I'm absolutely stuck on that. Any hints?

<comment><USER14> There is a four down, but there isn't a two across. So 2a must refer to something else.

</comment></comment></comment><comment><USER16> This brings back fond memories of thisisnotporn, which sadly seems to have vanished from the internet.

</comment><comment><USER17>
       how can you spot a lyin' male

       in a crowd of females?

The answer to this was NOT apple.htm

lol

</comment><comment><USER18> I've got to five:a but I've hit a bit of a roadblock.

</comment><comment><USER19> furrfu!

</comment><comment><USER20> SPOILER ALERT

four is adam

<comment><USER21> Adam is #7</comment></comment>


Ask HN: How are mapping organisations notified of land border changes? - <AUTHOR> In the news today is a land-exchange between Holland and Belgium [0].<p>How are - if indeed they are - the Ordnance Survey, Google Maps, and other entities notified of the precise changes, coordinates that allow them to recreate the division in their maps?<p>[0] - http://www.nytimes.com/2016/11/28/world/europe/belgium-netherlands-land-dispute.html <comment><USER2> Great question.

Most countries have a mapping agency/authority ([https://en.wikipedia.org/wiki/National_mapping_agency](https://en.wikipedia.org/wiki/National_mapping_agency)). I've always assumed that each country defines it's own spatial boundary defined by the relevant legal agreements that define a country. Third parties such as Google presumably use whatever each country provides and try to stay out of any disputes ([http://qz.com/218675/here-are-the-32-countries-google- maps-w...](http://qz.com/218675/here-are-the-32-countries-google-maps-wont- draw-borders-around/)).

As far as updates, someone probably just has an annual calendar reminder to pull the latest shapefile for each territory or from a central authority (UN? National Geospatial Agency?)! The geographer in me is mildly amused at the thought of someone in Belgium making a pull request to The Netherlands related to updating a boundary.

If you're interested in questions like this, I highly recommend the FOSS4G conferences ([http://2017.foss4g.org/](http://2017.foss4g.org/)). Many of the big names in GIS attend and can likely give an authoritative answer on questions such as this.

</comment><comment><USER3> Many countries get their information from their own national imagery and mapping agency. For the United States it is the National Geospatial- Intelligence Agency or NGA. For countries that need help with this information or need higher quality imagery they normally can get assistance from the NGA through their government and commercial partnership arrangements.

</comment><comment><USER4> Relevant article regarding border controversies around Crimea

[https://www.gislounge.com/cartographers-respond-border- chang...](https://www.gislounge.com/cartographers-respond-border-changes/)

> Johnson noted that in the United States, most map making companies take the > lead from the State Department in determining when to update border changes > on their maps.</comment>


Google's Android: How Will it Compare to iPhone? - <AUTHOR> http://www.readwriteweb.com/archives/googles_android_how_will_it_compare_to_iphone.php <comment><USER2> Android is an OS and the iphone is hardware and software right? Don't see how you can compare them 1:1.</comment>


Go 1.7 toolchain improvements - <AUTHOR> http://dave.cheney.net/2016/04/02/go-1-7-toolchain-improvements <comment><USER2> If you're not a Go programmer, bear this in mind: the Go compiler got noticeably slower after 1.4, but it is still extraordinarily fast; "run debounced after every keystroke" fast; "rebuild the world on a whim" fast.

Personally, I think the Go community is a little unhealthily obsessed with this particular metric.

<comment><USER3> It just strikes me as amusing, since the tremendous amount of whining about how much of compilation time (compile-time) generics would add makes the issue appear important, yet here we have a 2-10x compilation time slowdown, but in this case it's suddenly totally fine -- the Go community is obsessed about the wrong things.

<comment><USER4> This is a temporary regression. I guess generics would be a permanent slow- down, and might not scale nicely for larger projects - although I do now know enough about the workings of compiler algorithms to judge that.

<comment><USER5> I don't think generics would result in a compile time slowdown relative to the alternatives. If you don't have generics, programmers work around it with code duplication or they work around it with dynamic typing (interface{}, but also the runtime support for maps and channels fall into this category). Not coincidentally, these are the two main ways to implement generics in a compiler.

</comment></comment></comment></comment><comment><USER6> There's something vicariously gratifying about posts like this. Optimization is some of the most fun programming to do: you have a crystal clear objective goal to go for and once you've got a profiler set up it's just:

1\. Find slow thing.

2\. Make faster.

3\. See benchmark improve.

Some of the most satisfying coding I've done has been optimization.

<comment><USER7> I agree with this, but there's one more aspect: you learn something. Deeply. "Oh, I didn't realize that would do _that_..."

It's also taught me just how much we can guess incorrectly the first time. It's a skill you can get better at. "Profile first" is a good heuristic, but "guess first, profile second, _then_ do the work" means you train yourself too.

I'm still very much a noob at this.

<comment><USER6> I think _every_ time I've used a profiler, it's taught me that me intuition of where the bottleneck was was completely wrong. It's a humbling experience, in a good way.

</comment></comment></comment><comment><USER8> I'm glad to see a return to improving compiling speed and binary sizes. Thank you to the Go team!

</comment><comment><USER9> \- faster compilation times

\- smaller binaries

good job.

<comment><USER10> Faster compared to 1.6, still much slower than 1.4.

<comment><USER11> C is still the king of speed.

<comment><USER12> Not when compared with languages that have modules.

In 2000 I worked on a project where "make clean all" would take 1 hour per platform/build type.

<comment><USER11> Oh I meant in execution, not build time.

<comment><USER12> Similarly, I remember the days when junior Assembly programmers were able to outperform C compilers for home computers.

</comment></comment></comment></comment></comment></comment><comment><USER13> You can find interesting details to this post in this thread:

[https://groups.google.com/forum/#!topic/golang- dev/DpMyPbclI...](https://groups.google.com/forum/#!topic/golang- dev/DpMyPbclI3o)

</comment><comment><USER14> I'm confused how Go can be paraded as a low level systems language, which improves performance via concurrency, and yet the graph says it's compiler is still over twice as slow as when it was written in C?

<comment><USER15> It's not a low-level systems language in traditional view of what "system" is. For Google, "system" is a cloud, not the hardware, so take it from this perspective.

By the way, here is a nice video of Q&A session with Alexandresku, Matsakis, Stroustrup and Pike (D, Rust, C++ and Go creators), where they also explain what does 'systems language' mean.

<comment><USER16> I would like to see that video too...

<comment><USER17> Think it's this [https://m.youtube.com/watch?v=BBbv1ej0fFo](https://m.youtube.com/watch?v=BBbv1ej0fFo)

</comment></comment></comment></comment><comment><USER18> As someone new to the joys of golang, it is hard to imagine faster compile time or smaller binaries. It just keeps getting better.

<comment><USER19> _it is hard to imagine ... smaller binaries_

I like Go a lot, and I don't fret about binary size. But let's not be _too_ charitable :). The CLI apps I write usually start trending towards 10MB with a few package imports. Their equivalents in C are usually less than 100k. One can imagine getting to better than a 100x difference.

<comment><USER20> > it is hard to imagine ... smaller binaries

> I like Go a lot, and I don't fret about binary size. But let's not be too > charitable :). The CLI apps I write usually start trending towards 10MB with > a few package imports. Their equivalents in C are usually less than 100k. > One can imagine getting to better than a 100x difference.

Who want smaller binaries can use this compressor tool: [http://upx.sourceforge.net/](http://upx.sourceforge.net/) It may be a bit slow but you just need to use it in the distributed version.

<comment><USER21> That only saves disk space, though, not memory.

</comment></comment></comment></comment><comment><USER22> What happened between Go 1.4.3 and 1.5 which introduced such a slow down in compile times?

<comment><USER23> They rewrote the compiler from C to Go.

<comment><USER24> To be specific I think they used a transpiler, probably Russ Cox's c2go ([https://github.com/rsc/c2go](https://github.com/rsc/c2go)).

<comment><USER25> What's the point of doing that? I get that you want a language to bootstrap itself, but if you skip the experience of actually writing the compiler, and the code you have to maintain is a weird non-idiomatic machine-generated thing, what have you gained?

<comment><USER26> More developers (who don't know c (good enough), but are proficient in go) who can contribute to the compiler code long term (and improve the transpiled compiler). Other reasons would interest me as well.

<comment><USER27> Are there large numbers of people skilled in writing compilers, but don't know C? I doubt it.

That practical point aside, I do think it's good to lower the barrier of contributing.

<comment><USER26> Yes, I doubt it too. But are they interested in contributing to the go compiler if they don't already do that? I would guess go users are more interested in contributing to go. Plus the compiler people who are good at c and are already contributing can probably get up to speed with go quickly if they want to and don't know go yet. Or they already know go because they use it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> As an avid go user, I'm excited about these improvements, especially the garbage colleciton

</comment><comment><USER29> Can someone tell me why they went from C to Go despite the huge difference in compilation time?

<comment><USER30> Long story short it's easier to code in Go than C. Here is a more complete explanation [https://talks.golang.org/2014/c2go.slide#1](https://talks.golang.org/2014/c2go.slide#1).

</comment></comment><comment><USER31> The only thing preventing me from using Go on Windows is lack of production quality cgo on Windows x86 and x64.

For example, using external linking should "just work" with recent versions of sqlite3 but it fails on Windows.

<comment><USER32> I had no problems building go-sqlite3[1] on Windows 7 x64 using the toolchain provided by the Win-Builds project[2]. It's using gcc 4.8 and sqlite 3.10, so maybe that doesn't hit your meaning of "recent versions". It was certainly recent and easy enough for my needs :)

[1] [https://github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)

[2] [http://win-builds.org/](http://win-builds.org/)

<comment><USER31> I tried TDM-GCC.

In my experience, certain aspects increase risks when using go:

1\. go is buggier for Windows than Linux and FreeBSD, even though they are all "first class" platforms in go.

2\. cgo is also buggier for Windows than Linux and FreeBSD. cgo is not go, as Rob Pike said, so this is listed separately.

3\. 386 was buggier than x64, at least in go 1.2 to 1.3 on Windows. I wish I could ignore 386 and XP but I cannot.

So if a project includes all of the above aspects, well...it wasn't a good outcome for me, so I ended up sticking with C and C++ on Windows for non-hobby software.

However, I've been very happy with go 1.4.3 + cgo + x64 on FreeBSD 10 and will probably update to go 1.6 or 1.7 within a year.

Regarding go on Windows, I'm hoping to see go-sqlite3 issue #272 resolved: [https://github.com/mattn/go-sqlite3/issues/272](https://github.com/mattn/go- sqlite3/issues/272)

And go issue #14397 cmd/link, runtime: panic "invalid spdelta" with -ldflags="-linkmode internal"

And go issue #10776 cmd/link: windows cgo executables missing some DWARF information

And go issue #12516 runtime: throw in linked c++ library causes app crash even if caught, on windows platform

And so on...

I really love using go (with cgo) on non-Windows platforms, but I can't see this combo being useful on Windows for mission critical projects for a while. There's so much more to go than the language itself and switching gears to use other languages that don't offer that is painful.

Maybe LXSS.sys will eventually make this irrelevant -- at least for companies that migrate from older versions to Windows 10 or to a non-Windows OS.

</comment></comment></comment><comment><USER33> (I went to high school with Dave. Hi, Dave! Signed, misc. Banyule Alumnus)</comment>


Court Filing Reveals Apple Faces 12 Other Requests to Break into Locked iPhones - <AUTHOR> https://theintercept.com/2016/02/23/new-court-filing-reveals-apple-faces-12-other-requests-to-break-into-locked-iphones/ <comment><AUTHOR> The requests listed on the chart were filed in New York, Illinois, California, Massachusetts, and Ohio, in multiple different districts.

The device models ranged from an iPhone 3 to an iPhone 6 Plus, as well as an iPad 2 with Wifi capabilities — and one phone whose model hasn't been identified yet.

They were running operating systems ranging from iOS4.2 to iOS9.1 — iOS8 being the level at which Apple says it cannot retrieve the data on the phone because it is encrypted, and only the user can unlock it.</comment>


How To Choose Friends and Find People that Will Help You Succeed - <AUTHOR> http://genjuice.com/2010/06/08/how-to-choose-friends/ <comment><USER2> I have been doing a lot more networking in programming and entrepreneurial groups recently, and have occasionally found myself frustrated when these people I have meet don't want to go grab a drink on a friday afternoon. Similarly I get frustrated when my girlfriend and friends are not interested in my constantly talking about my new startup. So while this is probably not a particularly deep revelation, it is an interesting and helpful reminder that each group can give you something you need without having to overlap.</comment>


Exposing the secret Office 365 detailed activity logs and forensics tool - <AUTHOR> https://lmgsecurity.com/exposing-the-secret-office-365-forensics-tool/ <comment><USER2> I looked at the API calls on the CrowdStrike blog post and I have been using parts of these API's for calls in PowerShell for at least the past year for tracking down issues we have had in Office 365. I can understand how frustrating it can be if your competitors seem to have "secret knowledge". However that knowledge may have been gotten by calling up the very helpful people at MS support, laying out the problem and they send you a Powershell script in return.

<comment><USER3> I couldn't agree more. Why is the API not public? Is it because some sort of top secret corporate conspiracy? Or is it that management just decided to avoid the burden of publishing and maintaining an immature or lesser used API? After reading your comment that whole article seemed a little sensationalist

<comment><USER4> > just decided to avoid the burden of publishing and maintaining an immature > or lesser used API

"Burden" is an understatement. Any API Microsoft documents becomes part of their ongoing commitment to eternal backward-compatibility. (Heck, even some things they never document at all still end up forced into that commitment, like the internal registry hives in Windows 95.)

So Microsoft do everything they can to only document what they're absolutely sure they have in a good, stable, "won't regret later that we didn't fix it some more before setting it in stone" state.

<comment><USER5> They could just flag it "volatile", "unstable" or something. It's very unlikely that Microsoft did not properly document the api internally and as you see it's leaking out anyway.

<comment><USER6> If you'll ever develop a single simple API you'll find out that doesn't work at all. People will use unstable APIs and people will blame YOU and only you when they break.

</comment></comment></comment></comment></comment><comment><USER7> > It was as if Alexander Fleming had discovered penicillin but kept the > details hidden in order to make more money. It just seemed wrong.

Because your right to make money is equivalent to other people's right to remain alive.

<comment><USER8> I don't think there is a right to compel others to unlimited spending to keep you alive. Sure, pencilin is comparatively easy to grow and hopefully you live in a country with universal healthcare that covers it, but if it were some more expensive substance that can't be covered the analogy holds.

</comment></comment><comment><USER9> Is this API exposing keystroke timing for search queries, which can be used for biometric profiling of authorized users (and attackers)?

</comment><comment><USER10> I'm not exactly sure why a new tool is needed. Everything necessary is found from the referenced Crowdstrike code at [https://github.com/CrowdStrike/Forensics/tree/master/O365-Ou...](https://github.com/CrowdStrike/Forensics/tree/master/O365-Outlook- Activities)

</comment><comment><USER11> > The tide turned on Friday, June 8. Out of the blue, an email popped onto the > forensics community mailing list. It contained a single link, to an > Anonymous video.

All that video said was "the API you seek is called Activities". Am I missing the joke, or is the name of the API literally the only thing that they needed to get this working?

<comment><USER12> I've not delved into the code, but typically a lot of APIs when called without any parameters can return an XML page containing the schema of what it can do. So yes, it's totally plausible, that if you already knew how Office 365 APIs worked, all you needed was the name of the unknown API.

</comment></comment><comment><USER13> Could anyone ever honestly believe this data was not logged by Microsoft??

I'm at a loss for words, really.

<comment><USER14> I am at a loss for words that you honestly believe some people didn't think or assume it was logged.

</comment></comment><comment><USER15> This is similar to Azure activity logs - in that they do not provide you log access to "read" actions.. only write/delete ones. However, Azure actually DOES keep those read ops logged. Though I guess, it's not similar in that: Azure still doesn't have an API to fetch them.. not even an undocumented one.

<comment><USER16> If an API is undocumented, how can you know that it doesn't exist? It might very well exist for internal debugging purposes, just not at the URL you might expect. Or maybe it's at the expected URL but returns 404 to everyone whose access token isn't flagged as an employee in the appropriate department.

As someone who relies _very_ heavily on logs to debug issues in immature and/or fast-moving products, I would be surprised if they didn't log everything. It's sysadmin 101.

<comment><USER17> In the modern era, you should expect that the privacy policy contains the details of everything that's logged. You need to know that so you can tell your customers what is logged by your subs.

<comment><USER18> > In the modern era, you should expect that the privacy policy contains the > details of everything that's logged.

Perhaps corporations with a history of abusive tactics and legal shenanigans, would prefer to follow a different path?

</comment></comment></comment></comment><comment><USER19> Is this about the whole Office 365 suite including all apps like Word, Excel, etc. running locally or only about Office 365 mailbox accounts? If it is the latter, could the title please reflect this?

</comment><comment><USER20> So is there a secret tool? Or is this just an undocumented API call that people are only now finding out about?

<comment><USER21> It's a secret tool that uses undocumented APIs :)

<comment><USER20> Ahh nice, well the cat is out of the bag now

</comment></comment></comment><comment><USER22> This makes me wonder how many other APIs rely solely on obscurity to protect major features.

<comment><USER23> I don't know if this is to protect so much as it's an undocumented and immature API so they never made it public and kept it for internal use only.

<comment><USER24> Even if that is true not letting forensics specialists know that those logs existed when critical security events took place is very much a problem. But it gets downright shady when only a handful of companies have them while others are told they do not exist.

</comment></comment></comment><comment><USER25> So in the video linked to in the first paragraph: anon says "while the rest of you... still use shitty Perl and have no hair". Lulz indeed.

<sigh>

</comment><comment><USER26> And now that it is public knowledge...Microsoft has killed access to these logs.

</comment><comment><USER27> Did not know, wow.

</comment><comment><USER24> I had to laugh at the line "still use shitty perl" in the video...

</comment><comment><USER28> All this Facebook-bashing in the recent months and then m$ office is spying on everything you do. This is like a "legit" keylogger, which is activated per default, because it's a product _feature_. But, you have to trust it also per default, it seems. Damn.</comment>


Sex Machine: Get gender from first name in Ruby - <AUTHOR> https://github.com/bmuller/sexmachine <comment><USER2> As a man named Tracy I would just throw out a caution to anyone thinking of using this. At this point in my life I don't really care about people calling Ms. Tracy Platt. But what it does do is immediately signal that I don't really need to pay attention. Fake familiarity doesn't usually work too well.

As a side note I would like to mention that having a girl's name does have some benefits. For example my wife can handle bank account issues over the phone for me. Also some near misses - I was assigned a locker in the girls locker room in junior high but they caught on before I could use it, and once a telemarketer called to offer me a spot in an all woman's resort spa. The only time I said yes to a telemarketer and I got rejected.

<comment><USER3> Me and my significant other frequently impersonate each other when dealing with banks and hospitals over the phone (we're a gay couple). It honestly never occurred to me that straight folks can't get away with this. How unfortunate; it's quite a time saver!

<comment><USER4> We can, it's just a little more tricky... example being while looking up plane ticket information for an S.O. I'm usually her "personal assistant".

</comment></comment></comment><comment><USER5> Gender identity is actually a quite tricky topic and should be approached carefully. I would discourage anyone from trying to use this library, the real world doesn't fit neatly in your multiple-choice view of gender. For more information, please watch this great talk: <http://vimeo.com/61172068>.

<comment><USER6> I can't imagine making a dating site these days: "I'm (name text field), a (sexual identity text field) interested in meeting (sexual identity text field) for the purpose of (dating/friendship/sex/swinging/whatever text field)." Good luck with that business logic. Maybe we do need intelligent agents for this stuff.

</comment></comment><comment><USER7> Without knowing what data it's been trained on it's of questionable use. What maybe a 18 year old american girls name may be a 60 year old german mans name.

The gender of a name can vary heavily by culture and time-period, it would make much more sense for the api to return the data in the form of ranked probabilities.

As an aside it's worth noting that as this library is GPL3 it means you can't use this code in any non-GPL product.

<comment><USER8> > Without knowing what data it's been trained on it's of questionable use.

Literally the very first line of the README has a link to the source data. It contains name frequency data for a number of countries and the README clearly indicates you can provide a country of origin when doing lookups.

> As an aside it's worth noting that as this library is GPL3 it means you > can't use this code in any non-GPL product.

The source data is GPL, there wasn't much option.

<comment><USER9> The data is GPL documentation license; why/how would that affect the code?

</comment></comment></comment><comment><USER10> Frankly, it is none of your business what the sex or gender of a user is. I understand that sometimes there is money to be made by collecting this information but it is also alienating and just plain irrelevant (and I think there is also money to be made in recognizing that people can be fluid.)

You can give your users an option to provide you with these details but guessing/requiring is not a good practice.

On a side note, it's interesting that the most common gender neutral title is Dr.

<comment><USER11> I think you're looking at this through too narrow a use case. I agree you shouldn't be taking individual people and guessing what their genders are. And you should minimize the instances where gender is even relevant in your application.

But what if you have a whole bunch of data and want to do some aggregate statistics? "Do women use our product?" is a perfectly reasonable question to ask yourself. You don't need it to be exact, and it's certainly not reasonable to ask every user. So you use some heuristics and you get some useful data.

<comment><USER10> I agree I'm mainly concerned about cases where gender follows you around a website when you're logged in.

"Good Morning Mr. _" and stuff like that should be avoided unless supplied by the user. For your own stats using this library is probably better than asking users for that information.

</comment></comment></comment><comment><USER12> Shouldn't this be called "Gender Machine", they get it right on the project description but not on the project name, weird.

<comment><USER13> I had a friend who insisted "gender" should be used for linguistic use (for example cheese being masculine in French) and "sex" for the boy/girl-ness of a person.

Determining the boy/girl-ness of a chicken is called "sexing" the chick. I see "sex machine" as a machine that sexes by name.

<comment><USER14> This product is used for linguistic purposes, not for deciding whose head to cut off.

</comment></comment></comment><comment><USER15> I know that most of us already know this, but it is worth repeating: sex is biological, gender is cultural (for instance, "la montaña" - the mountain is feminine in the Spanish language). A "sex machine" would tell you whether you were dealing with a biological male or biological female, or something else, but it would not tell you the gender.

<comment><USER16> Of course you're technically right, but the pedantry is out of control. In reality, when speaking English in a professional (and pretty much any other) setting, "sex" means "gender."

I don't think it's worth repeating. I'd say it's repeating this kind of misplaced vernacular revisionism that's making us (in which I controversially refer to the disparate collection of users on HN as a single group) look even more anal and oversensitive than we actually are.

<comment><USER17> A non-zero quantity of people have a gender that is separate and different to their sex. By marking out differentating sex and gender as "vernacular revisionism", you are contributing to making the lives of a non-zero quantity of people worse than they need to be. Erasure sucks, please don't perpetuate it.

</comment></comment></comment><comment><USER18> This is exactly what I am looking for! I run a tech conference and am interested in seeing what percentage of our attendees are male or female. I only have names for historical data, so this should help give a somewhat close approximation of sex!

</comment><comment><USER16> Haha, wow. It's like someone said, "Hey, what are people reacting incredibly poorly to right now?", then took the answer, and built an almost-useful library with a funny but obviously-destined-to-offend-lots-of-people name.

Really though, geek PC hilarity aside... with so many collisions and uncertainties, this just isn't a practical approach.

</comment><comment><USER19> We tried to solve a similar problem with our app, too. We were trying to generate questions based on person and occasion (think: "What should I get my _boyfriend_ for _his birthday_ ).

It got interesting when occasions didn't warrant possessives ("What should I get my boyfriend for Christmas"), and when language factors were considered ("What should I get mi abuelo for su cumpleanos"). We decided to try and crowd source it, which worked ok: essentially we left the occasion empty, and if the person wanted to attach the gender-based possessive to it, they could. Otherwise, we would guess with what information we had. We figured, over time, we could actually create a service where we could sell that information (GaaS: Grammar as a service?).

Turns out, people just wanted to be able to write their own titles, and we quickly trashed the idea in the early phases.

</comment><comment><AUTHOR> I submitted this, but I'm _not_ the author of the library.

I agree with many of the concerns and limitations brought up here, most notably the fluid, non-binary nature of gender. That said, thoughtful application of probabilistic guesses about gender _can_ add value in certain situations. For instance: [http://source.mozillaopennews.org/en- US/learning/freeing-plu...](http://source.mozillaopennews.org/en- US/learning/freeing-plum-book/)

</comment><comment><USER20> Any reason you called it "Sex Machine"?

<comment><USER21> <https://www.youtube.com/watch?v=5qjHLsctLL8>

</comment></comment><comment><USER22> How is this useful?

The answer is convention over configuration. See, if we institute a societal convention that your gender is derived from your first name (automatically by a Ruby program), it will save a lot of time and energy and make the world more DRY.

<comment><USER23> Let's institute a convention to refer to everyone by a unique identifier. Oh wait, that's prison.

</comment></comment><comment><USER24> Ohhh the controversy that would be generated if this gem ever got big.

[http://www.confreaks.com/videos/1120-gogaruco2012-schemas- fo...](http://www.confreaks.com/videos/1120-gogaruco2012-schemas-for-the-real- world)

</comment><comment><USER25> I can this being useful if perhaps your attempting to target with maybe some email marketing..long as your content with it being 70-80% accurate.

</comment><comment><USER26> Funny. I had plans to build one of these in a month or so time. Now I can crib the answers, Cool.

</comment><comment><USER27> >> d.get_gender("Álfrún")

Out of curiosity, why did you choose that name?

</comment><comment><USER28> This gem is too clever by half.

</comment><comment><USER14> Looking forward to the upcoming submissions

1\. Rename "Sex Machine" 2\. Why Women Don't Like Rubyists 3\. Don't Publically Shame the Person Who Suggested the Name Change 4\. Take Your 'Sex Machine' and Shove It

</comment><comment><USER29> Iiiiit's Pat!</comment>


The case for an embeddable Gecko - <AUTHOR> http://chrislord.net/index.php/2016/02/24/the-case-for-an-embeddable-gecko/ <comment><USER2> I was deeply saddened when Gecko embedding got the axe, because that action was responsible for the death of Camino, one of my favorite browsers in its era. It was really great to have two fully native Cocoa browsers for OS X (Safari + Camino). Between the two there was little need for anything more.

If you want 100% native modern browser on the Mac desktop today you're stuck with Safari. The Mac version of Firefox has always felt somewhat like a kludge. Chrome is closer, but it opts to do its own UI drawing, text editing, spellchecking, etc instead of using Cocoa-provided facilities which is likely at least partially responsible for it being less battery-friendly than Safari.

It's my personal opinion that web engines should take a "webkit" stance in regards to interoperability; they should be UI-agnostic at their core and offer rich plain C APIs for _any_ language and UI toolkit combination to easily bolt onto. A developer shouldn't be forced into using any particular technology to take advantage of something so versatile and ubiquitous as a web rendering engine — this is the chief reason I dislike Chromium/Electron/Node- WebKit: they mandate how I write my UI and what it's written in, which (to me) is highly unappealing.

</comment><comment><USER3> Mozilla's research render engine Servo sounds like the best bet, rather than redesigning all of Gecko's API space. It already implements the CEF, and was built specifically for embedding. The fact that it's an order of magnitude faster than all other rendering engines can't hurt, either.

<comment><USER4> I don't think CEF API compat is good enough. Look at other Chromium based applications in Electron or nw.js. They use up multiple processes and are bulky. What is needed is a low level embedding API that does not have IPC and process forking baked in. Sadly we are on the path to losing a lot of that...even the Servo devs said that while they expect it to work at that low of a level, multi process is all they are concerned about supporting[1].

1 - [https://news.ycombinator.com/item?id=9541721](https://news.ycombinator.com/item?id=9541721)

<comment><USER5> I think, like Patrick said there, there's not much reason for Servo to stop working single process (in fact, we still are single process by default?) aside from cruft buildup and lack of interest. If there's a need for maintaining a single process mode that's not too much effort.

<comment><USER4> I would love to be able to embed Servo with this approach. With the serious lack of cross-platform AND cross-language UI toolkits available these days, everyone is turning to embedded browsers (I am looking at 7 Slack processes averaging 40MB each, though the Slack devs may deserve blame). I think bit rot is what has made --single-process for Chromium no longer viable.

Heck, I'd say even making it easily embeddable before feature complete would still get adopters due to app devs knowing what they need to support unlike the open web. Granted I cannot really put my money/skills where my mouth is here so it's just wishful thinking on my part. I am not familiar w/ where Servo stands on the embedding front today, I have not looked in a while.

<comment><USER5> Using Servo to build apps is an explicit goal, and part of the browser.html project ([https://github.com/browserhtml/browserhtml](https://github.com/browserhtml/browserhtml)) includes developing a privileged set of APIs and other things ("Graphene") that work in Servo and let you build applications. This is more towards creating standalone applications (no need for actual embedding) that use Servo, though.

As far as the embedding story is concerned we do support the CEF API (if you need something more there, please file an issue and we'll look into it), and we do want to eventually make it into a webview-esque thing which you can embed in Android and elsewhere.

</comment></comment></comment></comment></comment><comment><USER6> I think the hope is in Servo. NetSurf and Dillo are missing from the timeline.

</comment><comment><USER7> I would really like to see Gecko and Spidermonkey in a more embeddable format as well. Being able to run as a "backend" for Node or Electron Shell, so that you don't have to be on V8 and Chromium would be absolutely great.

</comment><comment><USER8> I have always thought it a shame that Mozilla didn't aim for a better embeddable engine. Embedded browser engine seems like such an obvious part of their mission.

<comment><USER6> It's not a priority for them. The first comment explains the endemic lack of resources.

It's a bit like Google and their appliance. It's better to have a vertical product with no leaf and build on top like they tried with FirefoxOS.

<comment><USER9> > endemic lack of resources.

Funny, the number of "labs" projects mozilla undertakes and eventually abandons doesn't suggest such a thing.

</comment></comment></comment><comment><USER10> Jolla's Sailfish Browser is based on Gecko [http://blog.idempotent.info/posts/whats-behind-sailfish- brow...](http://blog.idempotent.info/posts/whats-behind-sailfish-browser.html)

It uses custom APIs to embedd Gecko with Qt : [https://github.com/tmeshkova/qtmozembed](https://github.com/tmeshkova/qtmozembed) [https://github.com/tmeshkova/embedlite- components](https://github.com/tmeshkova/embedlite-components) [https://github.com/tmeshkova/gecko-dev](https://github.com/tmeshkova/gecko- dev)

</comment><comment><USER11> Why would anyone choose embeddable Gecko over Electron?

Spending time on this is a waste of Mozilla's resources. The real competitor is clearly Servo (once it actually works with real pages than just Wikipedia and GitHub) because it is actually faster and is not legacy software that barely works.

<comment><USER12> > legacy software that barely works

Did you create a new user account just to spew that shit?

<comment><USER11> I'm being very pessimistic here, but even with e10s improvements Gecko is clearly dying.

<comment><USER12> I find your lack of faith disturbing.

[https://mo.github.io/2015/11/04/browser-engines-active- devel...](https://mo.github.io/2015/11/04/browser-engines-active-developers- and-commit-rates.html)

</comment></comment></comment></comment><comment><USER13> This post reads like the author has never heard of Servo, but it seems unlikely that someone who has done this much research wouldn't come across it or mention it. It's planned to deprecate Gecko, it's faster, and it's designed as a drop-in replacement for embedded Chromium.

<comment><USER14> Chris Lord is well aware of Servo. He's a Mozilla Corp employee. He's been a part of Mozilla since at least as far back as when HTML5 video was first starting to become a thing and Firefox was integrating WebM, which was first announced at Google IO 2010.

He focuses on Gecko here because Mozilla's relationship with it is something that will continue for some time.

<comment><USER13> I see. Thanks for correcting me.</comment></comment></comment>


Ford Mustang Expands Family: All-Electric Mustang Mach-E Delivers - <AUTHOR> https://media.ford.com/content/fordmedia/fna/us/en/news/2019/11/17/all-electric-ford-mustang-mach-e.html <comment><AUTHOR> Previous discussion on thedrive.com article: [https://news.ycombinator.com/item?id=21561556](https://news.ycombinator.com/item?id=21561556)

</comment><comment><AUTHOR> > SUV/CUV is an easy sell

> $37k after credits for entry level (but reasonably premium)

> Partnering with Electrify America to approach competitive levels with > Tesla's network

> Putting their "best foot" forward with an attractive design and legendary > nameplate

> AWD only adds $2700 to the base trim level costs

> White/black/gray included, $400-600 for fancier colors

Overall this is some real competition in the electric vehicle marketplace and I'm starting to get excited for consumer choice.</comment>


Wikipedia, Notability, and Open Source Software - <AUTHOR> http://ubuntard.com/2010/03/wikipedia-notability-and-open-source-software/

<comment><USER2> Apparently Wikipedia's policy on "canvassing" forbids anyone from soliciting "outside" supporters to join discussions you care about.

 _One of Wikipedia's favourite guidelines is the one on canvassing. You see, if an article you're interested comes up for deletion, it's not permissible to contact outside sources that may know more about the topic, because they are likely biased. Canvassing will often get you a severe warning, or banned. Linus's law states that "given enough eyeballs, all bugs are shallow." On the other hand, Wikipedia's collective belief is that bringing new people with new perspective to something is a heinous offence… After all, it might upset their precious status quo._

Please go read the policy here: <http://en.wikipedia.org/wiki/Wikipedia:Canvassing>

The incumbent editors' transparent effort to quell dissent is appalling.

<comment><USER3> It's consistent with the (IMO misguided) philosophy that merely caring about a topic constitutes a conflict of interest and thus experts or other interested parties shouldn't participate. It's probably also a pragmatic (over-) reaction to the constant gaming of virtually all Internet polls.

<comment><USER2> I would not mind as much if the policy read like it was intended to prevent ballot stuffing. Instead, it reads like an elitist minority realizing that they are outnumbered and setting up barriers to the participation of opposing viewpoints.

<comment><USER4> It's far more likely that a group of well-meaning people who initially set out to protect Wikipedia from the influence of various elitist minorities have failed to realise that they have become one themselves. Beware of true believers -- there will always be a crusade in the offing eventually.

</comment></comment></comment></comment><comment><USER5> Wikipedia's deletionist policies scream opportunities for wiki with specialist coverage.

As an example, the open source gaming encyclopedia wiki I founded and built was a partial result of wikipedia's deletionist attitude toward obscure open video games.

What it ultimately led to, is the colonization of niches wikipedia refuse to cover in-depth. This may be a good thing, as dedicated community grows up to make niche encyclopedia much more in depth and more useful than what would otherwise be at Wikipedia.

<comment><USER6> To some extent, that's the Wikia model. (To the extent _some_ deleted topics eventually wind up in Wikia wikis, aggressive deletionism may make money for Wikia.)

</comment></comment><comment><USER7> I have a counter-point. 3 years ago I was using SDCC C compiler [1] for a 8051-compatible microcontroller. I checked Wikipedia for some background and found that SDCC article [2] was deleted.

[1]: <http://sdcc.sourceforge.net/>

[2]: <http://en.wikipedia.org/wiki/Small_Device_C_Compiler>

And you know what? Deletion is not the end of the world. I just re-created the article from scratch and after 3 years it's still there! Here's what I wrote in the talk page:

= Why re-creating the article =

I know this article has been deleted before. But I believe there are strong reasons to recreate it:

* Small Device C Compiler is included in Debian starting from 2002, and FreeBSD starting from 2004.

* It has good statistics on SourceForge (highest rank is 41 at Aug 2006, stable 6000 downloads per month).

* It is mentioned in 5 books according to Google Books, and has about 70 hits on Google Scholar.

* It is the only open source C compiler for popular Microchip PIC16 and 8051 microcontrollers.

And a final note: I am recreating the article from scratch.

</comment><comment><USER8> This article is extreme; but the points it raises are a major problem for Wikipedia.

I used to be a fairly regular editor but one day realised I was spending 60% of my edits on argument and pointless meta (mostly trying to help defend field experts with not much wiki experience from the idiots).

There is a broad amount of sanity on Wikipedia but there are very very vocal areas that are causing problems.

<comment><USER9> The sloppy adherence to the notability guidelines has pissed me off so much in the past that I've entirely written off even bothering to contribute to wikipedia anymore. I've posted pages on people, software, projects and the like that met or exceeded the guidelines and had all but 1 or 2 deleted within a day or so and spent literally months on getting a few deletions reversed until I finally just threw in the towel.

I'm constantly surprised at the things that wikipedia _doesn't_ have in it more than what it does. And I'd wager that there were pages on those subjects in the past and they've simply been deleted.

In other cases, subjects that I've referred to on occasion over the years have seen their article content slowly diminished over time to be practically useless. Things like screenshots being taken down, history or explanations being gutted, external links disappearing. It's all becoming basically useless on many levels.

I used to start research at wikipedia to get good pointers to sites, now I pretty much just google and hit next page a few times to get past the SEO spam.

</comment></comment><comment><USER10> While dwm probably does deserve to have a wiki page.. most pages do not..

If every OSS project, anime character, street gets its own page, the whole thing will grow too large for any group of people to effectively maintain..

The deletionists are also probably the people who end up deleting spam, prank edits, etc .. which is a pretty thankless job with no end in sight, and I can understand their sentiment, when they advocate for a smaller but higher quality wikipedia.

</comment><comment><USER11> I donated to Wikimedia in past years. I shant be doing so again. It's not that this particular article is something I care about, but I'm not going to use my money to support something that's increasingly working against the spread of human knowledge.

</comment><comment><USER12> Hey hey. I was a Wikipedia admin for a year or two (until focus shifted elsewhere). If there are any guidelines that you'd like clarification on, I'll do my best.

<comment><USER13> Can you explain why posting a notification to a partisan group about a deletion is considered canvasing? It seems like saying "if there is an issue involving schools, you can't tell the parents of school kids." Am I just reading that wrong? (Just so we're clear, I'm not attacking you. I can see how someone might take it that way so I wanted to clarify before we even go down that road.)

<comment><USER12> <http://en.wikipedia.org/wiki/Wikipedia:Canvassing>

I don't really see anything in WP:CANVAS that would frown on informing a specific subgroup. If anyone's capable of demonstrating notability, it's likely to be those who are most familiar with the subject at hand, yeah? I'd actually encourage going directly to the associated community and asking for assistance in determining notability.

That being said, evidence does need to be put forth that meets WP:NOTE: "If a topic has received significant coverage in reliable sources that are independent of the subject, it is presumed to satisfy the inclusion criteria for a stand-alone article." There are many subsections and clarifications, but that's really the core of it.

My experience in notability largely revolves around webcomics. There's a very low bar for entry and a fair amount of pride in one's creation, which I can well understand. However, things started getting to the point where an article was being created for each and every webcomic out there. In some cases, the fan community was quite helpful in demonstrating notability: [http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion...](http://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/The_Whiteboard)

If you disagree with notion of notability in general, we can discuss that separately (so long as you put forth an argument that my cat McMuttonchops can have an article in Wikipedia).

<comment><USER13> The way that graph reads if you inform a partisan audience about an article for deletion, it's considered canvasing and you can be baned as a result. And given that the discussion of deletion for the dwm article was closed because of discussions here and other places, it just appears that that is exactly what happened.

</comment></comment></comment></comment><comment><USER14> With apologies to Bismarck, Wikipedia is like a sausage - it's better not to see it being made.

</comment><comment><USER15> I agree that it's a mistake that Wikipedia is deleting these articles, free software is probably taking the brunt of it because there are no print magazines for software (or very few compared to professions that existed before).

Overall, the deletionism hasn't seemed to slow the growth of Wikipedia:

[http://en.wikipedia.org/wiki/Wikipedia:Modelling_Wikipedia%2...](http://en.wikipedia.org/wiki/Wikipedia:Modelling_Wikipedia%27s_growth)

Although I would like to see more recent stats on their deletion rate: <http://en.wikipedia.org/wiki/User:Emijrp/Deleting>

</comment><comment><USER16> And the result is that a lot of experts go and make their own wikis, because they can't merge their content into Wikipedia. Which kind of defeats the whole centralisation advantage of Wikipedia.

</comment><comment><USER17> Perhaps someone should start a new Wiki that can be overlain on Wikipedia. Then all the deleted content could be kept, but we would still be able to access all the information via one site.

</comment><comment><USER6> Deletionism is a sad, bizarre chapter in human history whose last pages are even now being written.

But what can we radical inclusionists do in the meantime?

The articles that do survive deletionism are useful, and important. Wikipedia remains a cultural treasure. So, the proper response to deletionism is not to boycott or withdraw from Wikipedia, but offer qualified support of the common base, all the while preparing for the eventual, inevitable, glorious inclusionist fork.

More of my reasoning here: <http://memesteading.com/2010/03/15/dialectical- inclusionism/>

<comment><USER18> This fork could be, articles as they appear it Wikipedia, plus other articles that weren't accepted. However, what about deletionists affecting the edits of existing articles? Swiping Wikipedia's history, and keeping your articles in line with that would be a serious pain.

<comment><USER19> Wikipedia could easily set a flag that says how core the article is and then users could select the level of inclusion or notoriety they want to see. It'd also be awesome if on every page they included some sort of visualization of editing activity & population of editors and the amount of viewers who have looked at the article in relation to the edits. This way a user can get a feeling of how many eyeballs have been on the page.

<comment><USER18> This should supposedly be active by now: <http://www.wired.com/wiredscience/2009/08/wikitrust/> from a quick look I can't figure out how to turn it on.</comment></comment></comment></comment>