"I know how to program, but I don't know what to program" - <AUTHOR> http://www.devdungeon.com/content/i-know-how-program-i-dont-know-what-program <comment><USER2> Yesterday I was on the European Lisp Symposium, listening to the talk about Clasp and CANDO. Christian Schafmeister, who is a _chemist_ , basically wrote his own Common Lisp implementation with focus on speed and C++ interop to have a base to run a molecule design tool on - because no available software was up to the task he's doing (designing stuff like water filters out of molecules)[0].

What it made me realize is that... I need to find myself _something else_ to do than programming. Something else to learn about in greater detail. There are many, many interesting problems out there to solve, but you have to know about them first. Programming is great as a support speciality, if you have another one to support it. Right now the only thing I'm specialized in is making better tools for developers. Which we're in need of, true, but even more so are other domains.

[0] - Yesterday's talk should be up soon; in the meantime, here's his talk from last year at Google: [https://www.youtube.com/watch?v=0rSMt1pAlbE](https://www.youtube.com/watch?v=0rSMt1pAlbE).

<comment><USER3> Is there a list of real world, expert vetted list of problems that can be solved with software? Problems like the one you mentioned (not yet another project management app). It would be awesome if someone can curate a list like this and act as a bridge between experts from other fields and programmers who want to work on such problems.

<comment><USER4> I have a range of such problems. On major issue is that learning what the problem is, and exactly how to solve it, is a fairly major undertaking.

Also, because I'm in research, no-one is going to pay you for your work (or if you get paid, it will be embarrassingly small)

I'm not sure how many people there are who would be willing to invest a couple of weeks learning a new topic, to then write a program in that topic without pay. Oh of course, and probably useful to provide some minimal support going forwards as well.

<comment><USER3> What kind of problems are they? What field?

I understand what you are saying about pay. But here is the counter argument for it - say you have 3 problems to solve, that can be solved with software. You don't have time or patience to code it yourself, but you know your peers and friends also have the same 3 problems. If you can clearly write down the requirements, I think there will be programmers who will be willing to work on the problem - especially if they know there are people who want the problems solved and there is a possibility of turning it into a side project or a business.

Maybe you could pick a handful of the problems, post them here and see if there is any interest?

<comment><USER4> I won't do it in this post, but I'll aim to write up a blog post, and see if it gets any interest.

</comment></comment></comment></comment></comment><comment><USER5> In a recent humble bundle, I found Automate the Boring Stuff with Python [0] which partially answers this. After going through the basics of Python, it describes building small projects such as scanning an Excel spreadsheet and sending email to people who are marked as 'not paid'. Projects like this give a different perspective to programming. Programming is not only about building grand projects. It can also automate every day stuff which you wouldn't normally call a programming task.

>>> contribute to an open source project

It's a very very common advice and I believe a wrong one, especially to novice developers. It's simply... Not that easy. Yes, there are tons of projects but most of them are pretty damn large or mature enough so that easy tasks have been a long time ago. Some projects (e.g. servo) have web sites dedicated to new contributors where you can filter issues marked as easy but there are not many projects to choose from. You can look for small, less popular projects... But that's not an easy task either. Plenty of experienced developers have an issue 'want to contribute, don't know where' and they find it tricky, it's much harder for the novices.

[0] [https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)

<comment><USER6> If you convert to CSV, emailing the non-payers is a one-liner in Powershell. Even converting the XLSX to CSV is pretty easy with the Excel .NET libraries, and well-documented in blog posts and StackOverflow.

Sometimes, the bigger challenge with automation is getting users to see a service, function, or utility as the underlying algorithms and calls, and not as this immutable black box interface. Once viewed this way, it's easier to separate automation into more easily defined goals.

\---

Foreach ($nonpayer in (Import-CSV ("C:\billing\" \+ (get-date -F MM) + ".CSV") | where {$_.pmt -eq 0})) { Send-MailMessage -from firstname.lastname@example.com -to $nonpayer.email -SMTPserver relay.example.com -title " Payment Overdue" -body "Hello $($nonpayer.first-name), your payment for $(get-date -f MMMM) was not received. Please send payment today."};

(I wrote this on the bus on my phone)

<comment><USER7> You probably don't want to be hard-coding the address of your SMTP forwarding host in a script. If you have to change to a different one, you will have to hunt down this sort of usage and fix it.

<comment><USER6> Yes, but if it weren't hard-coded, it wouldn't count as being a one-liner. ;)

Besides, it's rare for DNS names to change; the point of DNS is the underlying server addresses can change without changing the name. And a service like SMTP relay should be less likely to change than other types of host.

But still, good point. This could easily be a Param if the function would be used in many environments.

<comment><USER7> Oh the DNS name will change if you use your ISP-provided SMTP server and you change your ISP from Acme Internet Services to A-1 Networks. :)

<comment><USER6> Ah, that's exactly the kind of situation where you'd want a param with a default. As an example:

PS C:\> New-Parameter SMTPSvr -TopHeader -BottomHeader -ParameterType string -DefaultValue "mail.example.com"

            Param(

                    [string]$SMTPSvr = "mail.example.com"

            ) #end Param

</comment></comment></comment></comment></comment></comment><comment><USER8> For people interested in science (finance would also work) there is an infinite number of things to be done to be useful (or simply interesting) at various levels.

Doing calculations by writing functions, reading files, etc. is a great way to progress. One can take some equations from an intro physics/chem/bio book and get started. Or doing some budgeting/personal finance/investing simulations using personal banking CSVs or online stock data.

It's a good alternative to game programming in that it may be more obviously pragmatic and appeals to people (like myself) who are thoroughly uninterested in games. I imagine it's a very different style of programming as well; less interactive and more geared towards producing results rather than an experience.

For more experienced programmers looking for interesting and useful side projects (maybe to show off skills for a job search), I think there is a lot of opportunity to work with scientists to help them with their research. It's actually pretty easy to reach out to scientists by going to public talks and seeing what they do, then chatting them up and seeing how to make yourself useful. The hard part is of course sticking with it...

<comment><USER9> I did just that in my early career as a hydrogeologist. I wanted to impress my soon to be masters supervisor, so I programmed a simple analytical model that is used in my field. In doing so, I learnt about how cautious groundwater modellers have to be in interpretation and fundamental problems in the mathematics. My supervisor still brings it up everything I see him at conferences.

<comment><USER8> Nice! I learned Matlab to do nonlinear optimization of GPS data to solve for fault locking depths and slip rates, and then a year or two later learned Python to do run FEMs of thermochronology data (also to get fault slip rates) on Amazon's servers in parallel. (Matlab was not really up to that task.) None of that was to impress my advisor exactly, but it worked...

</comment></comment></comment><comment><USER10> I mean... "get a paying gig"? Lots of people don't know how to program, but really do need something programmed, so this is a pretty straightforward peanut butter/chocolate scenario, plus you get money.

<comment><USER5> I get what you mean but I believe the post describes a different issue and talks about side projects which are very different from paid gigs.

In paid gigs, you have hard or soft deadlines, commitments, etc. But sometimes you just want to code with no pressure, no deadlines, no managers, under total freedom and the money is not the first (and often not the second) priority.

That's why paid gigs often is not the answer.

<comment><USER11> I disagree here. Maybe if someone has had very little exposure to programming. I've found with an admittedly limited and completely anecdotal survey of developers around me that stress helps. The deadlines and people actually depending on you is a crucible that helps you get better much faster. You have to develop all the soft and hard skills that go with just pounding keys. Like project management and time estimation. Dealing with other people and evaluating problems.

You might get there with total freedom, but stress might get you there faster.

<comment><USER2> Let me counter your anecdote with my anecdote - I work _much_ worse under pressure. Deadlines and commitments stress me out.

I suppose different people have different needs. I started with programming as a childhood hobby, and one thing I retained from that period of my life is the strong need for autonomy in the kind of projects I do, and in the way I do them. Which is, sadly, quite incompatibile with the way a typical employer wants you to work.

</comment></comment></comment></comment><comment><USER12> _It usually comes in a phrase similar to "I know how to program, but I don't know what to program."_

"How" is about yourself. "What" is about others. Both are important, but "How" ususally comes first. The best way to transition from "How" to "What" is to trust that you have enough "How" (you probably do) and talk to enough others to understand their "What". That oughta give you plenty to do.

 _In the software community the rule is "don't reinvent the wheel." It's almost frowned upon if you rewrite a library when a mature and stable option exists. While it is a good rule in general, novices should not be afraid to reinvent the wheel. When it is done for learning or practice, it's totally OK to make a wheel!_

Yes! The best thing I've ever done to get better ("graduating" to the next level) was to rewrite something else. Sometimes because I thought it sucked, sometimes because it was so cool that I wanted to grok how it worked from the inside out, but never because it needed rewriting. I have never learned anything reading someone else's code. I have always learned tons rewriting it.

 _Don 't get the notion that you need to have the best idea ever before you write a program either._

I never write anything in order to get ideas. I write stuff in order to fill my tool box with enough skills and wisdom so that when I do get an idea, I'll be able to run with it.

 _How many of you have been in the situation where you think "I don't know what to program?" How did you handle it? What advice would you give to others in that situation?_

Just write something, anything. You probably won't know where this will take you, but rest assured, it will take you somewhere you never would have found by not writing it.

Great post! Thank you, OP.

<comment><USER7> The "what" is also about yourself. To be a complete programmer, as a creative artisan, you have to generate requirements and specifications, not only code. Ken Thompson didn't wait for PRD from product management before starting Unix.

Being able to generate the "what" is necessary even if you're working on other people's requirements. This is because other people's requirements are usually not so detailed that code will pop out. There are plenty of gaps where your creativity is required to go from the high level spec to the detailed spec. That's the design aspect of development.

The requirements leave out the "how": but hiding in every "how" is plenty of "what"! "This requirement doesn't say how such and such is to be achieved: _what_ do we choose to satisfy that?"

Someone who has no idea or interest in programming something if left without external requirements is probably not a great designer; he or she is lacking at least some aspect of the "maker" instinct. The maker is defined by making; you would have to wrestle the craft out of a true maker's hands.

If you get a completely detailed spec handed to you, then you're just a "coding technician". Someone will make a programming language which directly executes such a spec, and you're obsolete.

</comment></comment><comment><USER13> The worst "writer's block" is when I'm actively trying to think of ideas of what to program. I get the most interesting ideas for side projects when I'm doing anything but programming.

For example, watching the Eurovision semi-finals last night I thought, "the lyrics are so cheesy and awful, I bet they could be written by a computer program", so I spent an hour or two writing a very simple Markov chain generator using input from all this years' English language entries to generate fake Eurovision songs.

The other weekend I wanted to play with React and HTML5 canvas, so I wrote a starmap/world generator for an old desktop SF RPG I used to play. I was listening to a podcast about that game so it got me thinking.

These are trivial ideas, certainly not earth-shaking or money-making, but they're good practice and fun to work on and if nothing else I can just add them to my Github portfolio.

<comment><USER14> Lately, I've been getting better at catching my "someone should build X" ideas. I used to quickly (and unconsciously) discard them instead of thinking that I could build them myself. Sometimes the ideas aren't even related to software but I'm still keeping them. Who knows, should I ever get tired of programming I may _actually_ build up on them.

</comment></comment><comment><USER15> Read this: [http://usermethod.com/](http://usermethod.com/)

Basically, if there's a product you've been looking for and can't find, make that. If that doesn't exist in your life at this moment... maybe hang tight until it does.

<comment><USER16> What if I know how to code and most of the tools that I can't find can easily be implemented in crude yet effective scripts? Usually I weigh out the cons and the pros and end up creating a simple script/task that I, as a programmer, can efficiently use, yet it's far away from being published. Am I the only one who makes something useful for self only to understand that it requires substantial effort, time and devotion to turn into an open source product?

<comment><USER17> Are you the only one? No way.

The vast, vast majority of the code I write is only used by me. It's not on github, it's not "published"; it's just to scratch an itch.

</comment></comment></comment><comment><USER18> I suffer from this. Recently someone told me,

"Don't think of "problems" in the extreme sense. A problem to solve could be as simple as increasing efficiency of something by 1%."

<comment><USER19> That reminds me of Star Trek TNG Geordi boosted the engine efficiency 1% or so.

Data asked why he is working on the engines Geordi says the engineer on another starship had his engines at something like 95%.

Then Geordi asks the computer for an update on the Enterprise's warp engine and the computer replies the engine efficiency increased a bit due to his changes.

[http://memory-alpha.wikia.com/wiki/Force_of_Nature_(episode)](http://memory- alpha.wikia.com/wiki/Force_of_Nature_\(episode\))

</comment></comment><comment><USER20> Honestly, I think the problem often isn't "I don't know what to program" but instead "None of my ideas are things I actually can, or want to, program".

I have lots of big ideas. Big applications, distributed systems, etc. My experience tells me they would take months or years of dedicated work, even working with others. I already have a job.

I have lots of small ideas. I don't want to spend time on most of them because they're not particularly interesting to me. I don't want to write a TODO application that's perfectly suited to me, even though I want such a thing. I don't want to futz around with the UI and write all the mundane utility functions. There's no interest there for me.

So there's just nothing I'm particularly passionate about enough to motivate me to spend my time on it. And that's no big deal, at work the I have the luxury of other people thinking up the big problems and providing me with countless amazingly intelligent peers with whom to create things. And at home I have other hobbies.

Edit: So, I guess to crystallize some advice from that, at least for people who are similar to me: try to get a job that satisfies your "I want to code amazing things" itch, and then enjoy everything else the world has to offer outside of work.

<comment><USER21> That attitude is fine if you're content making someone else's ideas. If you've got lots of big idea, do something about it. Who cares if it takes you months or years of dedicated work? If that's your hobby, then what is the issue? How much time is spent watching television? Cut that in half, and build your big idea.

<comment><USER22> I have other things I'd like to do nobody is going to pay me for.

<comment><USER21> Then what was the point of your original post? If you're happy with what you're doing(or not doing), then good! Otherwise it sounds like you do wish you were working on these ideas, and are looking for some reassurance of it.

<comment><USER22> You should probably ask the guy who wrote it, and not me.

</comment></comment></comment></comment></comment><comment><USER23> I'm opposite. I have so many ideas but don't know how to program. Just pay attention to anything that frustrates you in daily life, especially if you're researching something to buy. Is there confusion? lack of info? etc? Is there a way you can scrape content together to present information better for this audience? It's all about creating value, and I find reducing frustration or thinking on the part of a user is usually an easy way to start.

<comment><USER24> Hey how about you spit ball some of those ideas over here? I bet there's plenty of hungry programmers in here eager to make them come to life

<comment><USER25> I have ideas for crazy things. Here are some:

Make a Wikipedia for code. Not a wikipedia _about_ code, but a Wikipedia where the pages _are_ the code. No references to outside tools/libraries, all the functions are either in the base language or references to other wikipedia-of- code pages. The pages are presented in a literate programming style.

Bring back the Inferno OS, but replace the original VM (Dis) with the Microsoft CLR.

Make a P2P publishing system for scientific publications. Let the contributing scientists have individual accounts, and manage reputations with a blockchain reputation system. Let people also donate their CPU cycles to scientific computations through this system. Require publications to store their data in a database format that your system's client can query and process with some programming language. Require all data tables, and results that appear in the publication's text be expressed as functions performed on data queried from the database (or potentially databases from other publications.)

</comment></comment></comment><comment><USER26> "... and sometimes i know _what_ to program but it's such grunt work that i can't get myself to do it".

<comment><USER27> I hear ya. That's been my week.

I understand all dev jobs will have some grunt work, but once you've been doing it for 10+ years, it gets harder to work on mostly grunt work. My brain needs something more challenging.

<comment><USER28> give me a junior to flesh out my sketches, it'll be done in two weeks. ask me to go it all alone, see you in four months.

</comment></comment></comment><comment><USER29> Programming isn't music. It's a tool to solve a problem. Not knowing what to build is a solution looking for problem. Generate ideas by getting out into the real world and finding out the pain points in life. Build tools to fix those problems. Preferably, pick a problem which people are willing to pay money to solve.

Still not thinking of anything? Go outside and play until you find something.

Edit: I didn't read the entire article. I couldn't get beyond the music comparisons. Rockstars in music get a lot more money and fun than rockstars in programming do.

<comment><USER30> Music isn't art. It's a tool to solve a problem. Not knowing what to compose is a solution looking for a problem. Generate ideas by getting out into the real world and finding out the pain points in life. Compose scores to accentuate those problems. Preferably, pick a problem which people are willing to pay money to have portrayed musically.

Still not thinking of anything? Go outside and play until you find something.

</comment></comment><comment><USER20> Hm.. I think the author is confusing "I don't have any good ideas" with "I don't know how to begin writing/structuring an application." He/she compares "I don't know what to program" with "I don't know how to write a song". But "I don't know how to write a song" is not the same as "I don't know what to write a song about". Lots of people have one problem but not the other.

</comment><comment><USER31> My problem now is just available time. I have plenty of things I want to get done, it is just a time sink problem.

</comment><comment><USER32> I know how to program, but most of the stuff i want to program are too complex/advanced for me to create.

</comment><comment><USER33> I found it helpful to take programming courses at the community college. There you have someone who will actually evaluate what you've made and give you helpful suggestions for improvement. You won't have any trouble finding stuff to do because it will be assigned to you.

</comment><comment><USER34> This is pretty much as a child learns, you don't put children to do complex things at once, if they wanna learn to write they have to make circles/lines to learn to write letters then words then sentences, they got to repeat what everybody has done already.

</comment><comment><USER35> I guess the hard part is to find something complex enough that you'll get motivated and simple enough that you can get done on your own in the free time you have. And software is pretty good at teaching you how complex simple things can be.

<comment><USER5> Challenging is probably better choice for a word then complexity. Anyway, there are a few different kinds of complexity.

One comes from simply the problem at hand being large / complex and that's something that might be really hard to come up with.

However, it can also be challenging because of unfamiliar tech stack. Be it a new language, new framework, etc. Going too far in this direction can lead to projects being too hard to complete so you want to balance it with familiar technologies as well. For example, if you are familiar with Python and Javascript, picking Elexir and CoffeeScript might be too much. However, Python and CoffeeScript would make a good combination. You get the idea.

</comment></comment><comment><USER36> I have ideas and know how to program but lately I'm not feeling the passion that I used to have. I think I won't start anything unless I'm part of a hard working team that cares enough too =/

</comment><comment><USER7> > _Doing programming challenges is good mental practice, but they do little to > help someone learn how to create a new program._

What does that have to do with the topic of _knowing how_ to program, but not having a _what_? That is shifing the topic to "I don't know how to program very well; how can I get more practice".

How about developing an expert assistant program which helps writers stay focused on a topic?

People who actually know how to develop can have this problem.

</comment><comment><USER37> Good idea, bad colour contrast.

</comment><comment><USER38> Isn't there a website with good business ideas? See if you can find some programming challenges there.

</comment><comment><USER39> Perhaps the knowledge of how to elicit tasks from customers is part of knowing how to program.

</comment><comment><USER40> [https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_c...](https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science)

</comment><comment><USER41> I have a list of project ideas 500 miles long and growing every day. I somehow feel obligated to build all of it and it gives me anxiety.

<comment><USER42> Mind to share it? I find generating good project ideas for me is quite difficult instead :)</comment></comment>


Power Laws in Chess Openings - <AUTHOR> http://physics.aps.org/viewpoint-for/10.1103/PhysRevLett.103.218701

<comment><USER2> As an aside, the article mentions how scientific paper citations exhibit a power law behaviour. Does anyone know where I might get my hands on some real world scientific citation graph data without having to scrape it together myself?

<comment><AUTHOR> If you follow the literature referenced in this recent blog post you should be able to find what you are looking for. Also pay close attention to the content of shalizi and newman's review article - there is a lot of notorious and well known statistical sloppiness in the literature on power law distributions.

[http://cs.unm.edu/~aaron/blog/archives/2009/11/power_laws_an...](http://cs.unm.edu/~aaron/blog/archives/2009/11/power_laws_and.htm)

It's especially interesting that they call the power law distribution of _wealth_ into question.

EDIT: the link to the shalizi and newman review in the blog post is a link to a "buy this .pdf" site. Here's the mentioned article on the arxiv

<http://arxiv.org/abs/0706.1062>

<comment><USER2> Thanks, interesting paper. Are you a researcher in this area? If so, I was wondering whether you know of any work that tries to PREDICT an expected citation score for a paper based only on information available at its time of publication? For example, one obvious predictor would be the journal in which a paper is published, assuming a paper in a high ranking journal is more likely to have a high citation score in the future. However, I have a couple of other predictors in mind that might be interesting.</comment></comment></comment>


Ted's summer culture list: 114 podcasts, books, TV shows, movies and more - <AUTHOR> https://ideas.ted.com/teds-summer-culture-list-114-podcasts-books-tv-shows-movies-and-more-to-nourish-you/ <comment><USER2> While obvious, these are simply books TED speakers like. I suspect you might get a better list asking at HN, like [1].

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

<comment><AUTHOR> That's quite a good list, and I'd seen it, but I disagree with the idea HN provides better lists (I think the above is unrepresentative) - they are often skewed towards tech and business which is fine but rather limited in scope.</comment></comment>


Bufferbloat - <AUTHOR> http://apenwarr.ca/log/?m=201101#10 <comment><USER2> I don't understand his description of why SFQ + TBF is disastrous. "Well, given that SFQ has inserted a whole bunch of fairness into the queue and the packets are no longer bursty... your interactive session has about a 50% chance of having its packet dropped by TBF." But, er, the situation he's talking about is one where your interactive session contributes only 1% of the packets, and no matter how much fairness SBQ inserts it can't make the next packet as likely to be from your interactive session as not.

The reduced burstiness seems more relevant: suppose your bandwidth hog session is only using 10x more packets than your interactive one overall, but it's using them in bursts; then "when there's been too much data lately" that's probably because you're in a burst of bandwidth-hoggery, so there's much less than a 1/10 chance that the next packet is from your interactive session.

Only, that doesn't quite make sense, because for the bandwidth hog to be hurting your interactive session the latter needs to be trying to send/receive packets while the bandwidth hog is being a bandwidth hog, or at least soon enough after that the buffers are still full of hogswill. In which case, that next packet is surely quite likely to be from your interactive session after all.

Network experts: What am I missing here?

[Edited to add: My best guess is that what I'm missing is that "soon enough after that" may be quite a long time after. In any case, I don't see any way for what _apenwarr_ wrote to be right.]

<comment><USER3> The reason he had those problems, I'm guessing, is that he never setup traffic classing filters.

Generally, I've never run _just_ TBF/HTB + SFQ. I've always run them hierarchically, HTB on the top interface, then several HTBs feeding into that one. Each of the lower HTB queues has a different amount of "flow" allowed to it.

Once you approach it this way, it all works rather nicely. As the multiple queues allow you to spread bandwidth, but also priority into the higher level queue. I can run telnet/ssh sessions during a torrent swarm with no issues.

</comment></comment><comment><USER4> Instead of Stochastic Fairness Queuing, a better approach the bufferbloat problem from the end host is to enable RED/ECN on all client hosts. However, as the author mentions, this is going to massively hurt the non-ECN capable hosts in the network.

This approach is "better" because it is analytically proven that for a number of fair TCP stacks competing on an ECN enabled link, the average buffer occupancy can be controlled "around" a certain operating value, which puts a bound on the latency contributed by a particular link.

Also, I wonder if the bufferbloat problem becomes significant only in really small RTT networks. i.e., where the RTT is at least the same order of magnitude compared to queuing delays. On long distance links, my guess is that the propagation delays might dominate latencies.

I disagree with the point that a solution to bufferbloat is purely end-to-end, if that's what the author implied (Apologies if the author didn't mean this). Even if you have perfectly shaped end hosts, if they share a bottleneck link that's deep buffered, they both will suffer the latency problems.

Queuing/buffering in networks is a very nice research area. "How much buffering do we need in a network?" "What if I run a network with as small a buffer as possible?" There are some people who believe that there should just be O(1) buffering in the network. It has been theoretically and experimentally shown that TCP loses only 30% of the throughput if the bottleneck link in the network has a buffer size of just ONE PACKET! So the question here is: is 30% thput loss acceptable? If latency matters, then perhaps yes.

<comment><USER5> "this is going to massively hurt the non-ECN capable hosts in the network"

Where does the author say that? And why would it? ECN wasn't designed to screw non-ECN hosts; it's supposed to be incrementally deployable. AFAIK, the only reason it hasn't been deployed is because a small percentage of home gateways are buggy WRT ECN.

<comment><USER6> Actually he says the opposite:

(This isn't cheating; you aren't hurting anybody else's performance by turning on ECN for only one machine. Like magic, ECN is just always an improvement, and always fair. Nowadays, chances are that the reasons ECN is off by default don't apply to you anymore; try turning it on and feel the love.)

</comment></comment></comment><comment><USER7> A simpler way than the _"Super complex UI, lots of fiddly magic numbers, and no documentation. You're sort of doomed."_ method in the article: wondershaper. It's in Ubuntu and as easy as wondershaper eth1 9500 9500 (for a symmetrical 10Mbps connection). You'll probably be able to fine tune better settings manually, but this is a good start.

<comment><USER8> I think you're missing the same thing the author missed in the Jim Gettys' article. You cannot fix the situation easily in every situation if the ISP is not behaving correctly, contrary to what the post says. He was able to fix this specific scenario, because he was the bottleneck (he was generating more traffic / accepting promise of delivery) in this case. The original series of articles (I really recommend reading them - they've got a great deal of tech details) dealt with a bit different situation - the person was not even saturating the link. Problems started appearing because of the shaping on a link which actually should support the traffic - he could introduce fake bottleneck, which was not the point really, because he would be wasting some possible bandwidth. The problem there was mostly out of his control, although could be mitigated to some extent by local tuning ([http://gettys.wordpress.com/2010/12/13/mitigations-and- solut...](http://gettys.wordpress.com/2010/12/13/mitigations-and-solutions-of- bufferbloat-in-home-routers-and-operating-systems/)).

I didn't want to say your solution won't work. But it's not going to solve all problems - it will work if you / your direct link is the bottleneck.

<comment><USER7> Sure, but at least then I've done what I can on my end and can blame any remaining problems on my ISP with a bit more confidence :)

</comment></comment></comment><comment><USER9> As Jim Gettys explains, this actually a complicated problem and while traffic- shaping on one end of the pipe can help, there is nothing you can do about your head-end's buffers or your stupid middleware buffers.

This is really a more frustrating problem that won't easily be solved. I suggest you all read Jim's original posts on the matter as they are enlightening and explain how TCP windows work and how your ISP configuration can mess it all up.

</comment><comment><USER10> I remember fiddling around with this a few years back, I even made my own shaping script somewhat based on wondershaper (<http://www.carlos- rodrigues.com/files/unmaintained/ctshaper/> \- which probabyl still works).

At the time I could get a huge improvement in interactive response and concurrency on my 512Kbps/128Kbps DSL connection. Without it it was impossible for be to be playing some online game while another computer in the house was downloading something.

The benefits diminish as bandwidth increases, as concurrency gets much better without any measures. So, the black art of traffic shaping becomes much more difficult.

</comment><comment><USER11> Anyone have an idea of whether this holds true for cable connections? Also do most high end wireless routers handle this well?

<comment><USER12> Most cable modems and wireless routers have similar problems. You can easily test your cable connection. Upload a large file to a fast server while watching ping times.</comment></comment>


The Next Genocide - <AUTHOR> http://www.nytimes.com/2015/09/13/opinion/sunday/the-next-genocide.html <comment><USER2> _The danger is not that the Chinese might actually starve to death in the near future, any more than Germans would have during the 1930s. The risk is that a developed country able to project military power could, like Hitler's Germany, fall into ecological panic, and take drastic steps to protect its existing standard of living._

Silly, obvious military-industrial-complex-sponsored scaremongering is silly and obvious.

<comment><USER3> Except that the article places the blame on America's policy of denying the science behind man-made climate change. It might be scaremongering but the article presents uncomfortable observations:

1) China is buying land and food from abroad 2) Some conflicts in the middle east are tied to food shortages 3) Climate change is a threat to food security

So yes, the circumstances are brewing the perfect wet dream for the military- industrial-complex

<comment><USER2> Yeah, us, and everyone else besides _some_ of the Europeans. China, for instance, is still shovelin' on the coal. Neither coastal property-owners nor any other decision-makers actually _believe_ the disaster scenarios. Even if they did, TFA invoking global warming is more of a button-push than an argument. Few details are specified in the chain of logic from "China imports food" to "world war", but credulous readers will conclude that global warming will make it all worse.

China importing food is neither surprising nor destabilizing. Only in the Washington echo chamber could investment and trade with developing nations be portrayed as some sort of "threat" without derisive laughter ensuing.

</comment></comment></comment><comment><USER4> Heh, one need only exchange the words "lebensraum" with "manifest destiny" to see that the origins and history of the United States are quite compatible with genocide if it furthers our economic goals.

<comment><USER5> That's some funny logic there.</comment></comment>


Why Python class syntax should be different - <AUTHOR> https://nedbatchelder.com//blog/201905/why_python_class_syntax_should_be_different.html <comment><USER2> The basis of this persons argument is faulty, it seems he doesn't quite understand how class constuction works in python. His argument seems to me to be that it looks to much like a function call, but as matter of fact it is one. Basically it calls the type-function underhood to construct the class...</comment>


Some Thoughts on Hiring at a New Startup - <AUTHOR> https://m.brianmcmanus.org/some-thoughts-on-hiring-be51f06f26a7 <comment><USER3> 18 year agency recruiter here. The problem with most recruiters today is that they are so concerned with controlling the process that they get in the way of letting two adults have a dialogue, and the recruiting industry is inundated with junior level people who don't know what they are doing.

The theory is that if the recruiter has a high level of control over both candidate and client, the odds of a positive outcome for the recruiter (a fee) increase. The client and candidate are both essentially 'buyers' in the sense that they have to agree to accept the other, and the recruiter is 'selling' to both parties.

But nobody wants to buy from someone who sells too hard, and that's what most recruiters end up doing.

When I started in recruiting, I wanted to be involved in every stage of the process to be sure I had some level of control. More recently I've realized that if the candidate is mature (and not going to make rookie mistakes like asking 3x market rate for salary just to 'test the waters') and the client has a decent hiring process, I'll make the intro and then step away until (if) I'm needed.

A recruiter can be quite helpful as a sounding board for both sides during negotiations to help facilitate a deal or save a deal that is failing.

>I've had folks change their mind even after accepting an offer. Hell, to be honest I've done it myself (and felt terrible about it).

A recruiter should also be helpful in providing guidance on situations like these. For example, I usually offer my clients a handful of tips to try and guarantee that someone who accepts the job will actually show up on day one. Having lunch with the new team between acceptance and start date is probably the most common.

But today's recruiter is far too interested in control. Make the intro, step away, and step in when necessary - otherwise, let them talk.

<comment><USER4> > the recruiting industry is inundated with junior level people who don't know > what they are doing.

Agree. That's killing it for me.

The typical message from a new recruiter who dropped out of school or just pivoted to that less than 2 months ago, trying to sell positions (s)he no clue about at companies (s)he doesn't want to tell.

> A recruiter should also be helpful in providing guidance on situations like > these.

Agree. I think recruiters should be

1) good middle men negotiations. To advise and prevent the rookie mistakes. Most candidates have very little experience with that (Think, like guys who'll message their dates 12 times in the day because she didn't answer yet.)

2) good contract and professional advisors. It can get really tricky to arrange job offers and contracts, like arranging the start/leave date and notice periods with whatever special stuff apply to your circumstances, at 3 simultaneous competing companies that you know you'll only stay at a single one in the end.

</comment></comment><comment><USER5> Thoughts on the final 'Offer' stage. If it's your startup, be brutally honest with your first hires. Put yourself in their shoes when you make the offer. Explain it like you would explain it to yourself.

\- Tell them, unprompted, key difficulties that may lie ahead (in an upbeat manner)

\- Sell them on the goal, but don't sell them that they are the right person - that's their choice

\- Do not make promises you can't keep. Let me repeat this. _Do not make promises you can 't keep_

The reason for doing the above is a) You will have tough times together - <USER2> is your team - you must start well b) If they can't handle these conversations you probably don't want them c) You're human, behave well if you can

Context disclaimer - this is from a London, UK perspective while hiring senior people. YMMV.

<comment><USER6> Very good points. Another point for being brutally honest:

The people we all want have no trouble finding work to pay their bills somewhere. If they are working for larger companies, they likely receive the key company info in HR-mandated newspeak. Hearing a direct, honest view from the top can be instantly attractive.

</comment></comment><comment><USER7> Great advice. I was wondering if anyone out there has experience of sourcing technical leads when what's primarily on offer is equity for a founding/lead role at a bootstrapped startup with an early product. Clearly you need to have a compelling vision, show potential and find people in the right frame of mind/stage in their career but I'm wondering if I'm missing any important channels? So far here are a few I've tried and my experience:

* AngelList - seem to mainly attract recent bootcamp grads

* Meetups and Networking Events - seems very inefficient and so far I've come across very few technical folks at these events, at least in digital health

* A lot of personal outreach using LinkedIn/email - probably the most successful so far..

* HN Who's Hiring - surprisingly few leads, but very high quality ones so far.

* Personal network - although similar to the author's I'm relatively new to the Bay Area

<comment><USER8> You're missing probably the biggest one of them all - free postings on indeed. They aren't as visible as the paid ones but the traffic is massive. We got a lot of low quality leads through them, but the pure volume still made it our best recruiting tool by far.

also, Ads on stackoverflow tend to get us high q leads as well

</comment></comment><comment><USER9> I'm absolutely amazed that there isn't a single mention of referencing in here. It's by far the most important thing we do in our hiring cycle.

Here's what we do, which is a little different:

1/ We'll spend in the order of 5-6 hours with a mid-to-senior hire before we recruit them. We pick one topic from their CV (the project they're proudest of or happiest with), and dive into it in huge detail: everything from the people involved to the outcomes and recognition of success. It helps to illustrate what the person is truly like.

2/ Where it's possible, we'll pay the person a pro rata salary equivalent to spend a day with us actually working in the role. I know a couple of other companies doing this and it's really great.

3/ If we like the person we immediately throw out whatever references they provide and spend a few hours dredging up people they worked with from our networks. We also look at the people they named in the project example. Once we've got a list of 6-10 people, we ask the candidate if we can reference using those people.

4/ Typically at this point we've decided that on paper we want to make an offer. Referencing is the last opportunity we have to really assess the person's ability to cope under pressure, how quickly they drop their "new job" act and get into being themselves, and crucially what "themselves" is like. I nearly always only ask questions which could be perceived as negative at this point -- what makes them throw their laptop across the room? What stresses them out? How do they communicate when under pressure? What are the things you told them they need to work on in their last review?

Referencing probably only accounts for 10-20% of the time I spend on a candidate, but the weighting I give it is huge when it comes to working with and managing that candidate when they're on the team.

A million different ways of doing things -- but referencing is so often overlooked and I've never understood why.

<comment><USER10> Because most people worth a dime interviewing for you are actively working for a different company. By asking and calling references you're "flushing them out".

This _does not_ mean I disagree with you. We had someone working for us, we're connected on LinkedIn. That person since then switched multiple jobs and I know for a hard fact that he'd never get a job if the company just called people working with him. No way.

<comment><USER9> > Because most people worth a dime interviewing for you are actively working > for a different company. By asking and calling references you're "flushing > them out".

I totally used to think that too, but whenever I've asked people about our process they say - "sure when you're making an offer, make it contingent on references and do a bunch of them."

I never revoke an offer unless we find out something truly bad at reference stage. Everyone has their foibles, and it's just useful to have more information about how to work with them.

<comment><USER6> So, is the reference checking goal to look for truly bad things that would disqualify a candidate? If so, are you trying to see if the candidate is an ass who was not acting this way during the interviews? This, to me, is the only way that could in principle be caught during referencing, but I wonder if it actually does.

I thought someone (a reference) who would badmouth a colleague to a prospective employer would not be a reliable source of the information. This is an honest question -- I do wonder when you find disqualifying things what do they look like?

<comment><USER10> To me, references are like a polygraph. It's a nice thing to have but in a politically driven world, it can also be vindictive.

I listened to a podcast a while back about bankers that were given horrible references by vindictive bosses because they didn't cooperate with some loan policy or something like that.

</comment></comment></comment></comment></comment><comment><USER11> Most hiring by most companies is not based on research. There is a huge body of research on how to hire effectively, part of the filed called industrial and organizational psychology, that goes back a full century all over the world. There is also a lot of legal regulation about what can be done and what cannot be done in hiring procedures. I wrote a FAQ about this issue a few years ago that lives on as a well liked Hacker News comment[1] that I welcome you to check. The FAQ links out to a lot of useful online resources about the research and law on hiring procedures.

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

</comment><comment><USER12> Mentioned in a comment or two, but want to highlight. Be up front with salary ranges, especially if you want people to come in and pair, etc.

I had a great initial process with a promising startup who wanted to graduate to a "we'll pay you contract rates to work with us a couple of days" sort of evaluation.

Since I was a FTE elsewhere and would have had to take PTO, I asked for a comp talk first. While I had no expectation to make the same salary I already was, I discovered their high end was way under what I'd calculated as a max pay cut I could take and still pay bills. It probably would've gone above water a round or two of funding later, but I would potentially have drained my savings waiting around. Unless I were founding, that would've been unacceptable.

I'm glad I forced the talk first or else that would've been a frustrating end to the process. My basic take is the more you ask as part of your evaluation process, the more you need to make sure it's even a possibility for both sides.

</comment><comment><USER13> My sense of every recruiter I've interacted with is that they have made a few deals with specific companies and they are just trying to sell me on them. Like a travel agent who only sells trips to a handful of specific resorts.

<comment><USER14> Well, that is literally exactly what is happening. Recruiters generally don't contact you about a position/company unless they have a requisition (request from the company to fill an open position) with that company, which also requires a Master Services Agreement (general contract that allows the agency to work with the client company). A much smaller percentage of good recruiters will sometimes find a great candidate, and "market" that candidate to companies that they do not currently work with, as a way to get their foot in the door. But when they do that, hopefully they are up front about it, and not lead you to believe they have an actual MSA and open req with that company yet.

</comment></comment><comment><USER15> There _are_ recruiters out there that concentrate on very specific technical areas, keep in touch with senior people, and still fulfill a necessary function pairing up qualified people with new opportunities. These folks can save all kinds of time and risk when you're looking for somebody with very specific skills. Some are pretty well known in the industry (e.g., you call Julia when you need a compiler writer) but I wonder whether they're eventually going to go the way of the professional high-end travel agent.

</comment><comment><USER16> Some things that are missing and I do want to know: the exact location of the office, pictures inside the office so I can see the chair and desk I'll be using.

<comment> jon-wood And the other side of the coin. Do you actually require me to be in the office. I only work remote, possibly with a visit or two a month to the office if needed.

</comment></comment><comment><USER10> Here's my perspective.

(I am writing in a snarky way to convey a message)

1\. If you're using recruiters, you're already losing. Especially if those are recruiting agencies that "hide" the name of the companies.

The cold emails are just ridiculously hideous.

2\. Use as little hyped up words as you possibly can. You might change the world, but everyone else is saying the same thing and people are getting sensitive about it.

3\. Impact - Emphasize what is the impact of the role. Why do you need _my_ skills, Not just an _engineer_ skills, why do you need _me_. If you don't need me I don't care what you need, post on LinkedIn for all I care.

4\. The mail needs to come from the CTO with as many details as possible about the company. Not how much money you raised and from which VCs, everybody raised money and everybody as VCs behind them. I could care less. What are the technical challenges, what's the roadmap, what challenges are you facing that you need me to solve and help with.

5\. Compensation - "Competitive salary" means nothing. I don't think it's relevant to me at all. You need to be specific about the compensation levels. If you wanna give a range, that's also fine. If your range stops at X and I am making X+50%, I know we are too far apart, we could save each other the trouble.

6\. Interview - If the interview requires more than a single day, I don't care. If it requires whiteboard, I don't care, If it requires multiple processes and screens, I don't care.

It's all about managing friction. Just like acquiring a customer on Google or Facebook. If the process has too much friction, I don't want to go through it. I just don't. I'm happy where I am and it's not worth my trouble.

All of these may sound elitist, I get that. I really do. But if you want really senior engineers the targeting is different than people that just finished bootcamp or have 2-3 years of experience.

<comment><USER17> I've had conversations with recruiters where I've initially sounded interested, then changed my mind because it just sounds like too much hassle.

They simply can't understand that I would give up when I realised there were three interviews, or that I needed to spend a day doing a test.

Sure if I did well in one interview the other two would likely be fine too, but equally... I could just go to another company that says "OK" after a conversation in a bar and save myself a lot of friction.

<comment><USER18> I'm the same way. A full day interview is just silly, multiple day interviews, no way. Look at my resume, meet me, decide, make an offer. If it doesn't work out, fire me, but don't play this silly game of multiple interviews with multiple people that don't really talk to each other or coordinate. It makes the company look like they don't know what they are doing and/or are indecisive. You can keep that.

<comment><USER19> I strongly disagree with this. I've been on the other side of the fence, trying to hire people for an early-mid startup (5-40 people) as an early employee.

There are more people than you'd expect who can talk the talk but can't code at the same level. In the majority of companies, I'd bet there aren't too many openings for engineers in such a narrow role. If you don't want to work with an 'idea person', would you want to work with an 'idea engineer'?

Multi-day interviews are likely overkill, but a full day interview is completely fair. There's no need to do 4 back-to-back algorithm whiteboarding sessions, but testing other aspects such as data modelling, general architecture, and coding style/ability are all high-signal.

<comment><USER20> Look at it from the candidate's point of view. Depending on what company I'm working for, I get 10, maybe 15 crappy days of paid time off that I have to split between vacation, sickness, and YOUR interview. If you take an entire day of my time, I can only do that max 10-15 times in the year, and that's if I don't get sick and have no vacation. I'm going to highly favor a company that does not make me blow one of those days entirely.

Multiple days? Not a chance.

<comment><USER18> I agree. If it's between two companies that pay "competitive rates," and one company wants me to interview for an hour and one company wants me to interview for a day, I'm not going to waste a day.

If you were paying 2x rates or real equity, ya I'd slog through a day long interview, but I bet you aren't.

What does your company have to offer that would compel me to spend 8 hours interviewing that another company doesn't?

<comment><USER4> You need to charge more if you get two competitors for you.

Maybe they'll be only one company willing to pay then, maybe that will be the one with the one day interview :D

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> The author doesn't mention much about how to position yourself to be attractive to your candidates. Here's what I look for - and what I learned when we were hiring people of our own(not a startup but a dev shop of two...now seven). If you want good candidates to pick you, you have to show them (much like investors) that you know what the hell you're doing, otherwise the smartest will walk away.

1) Look legit, as much as possible without spending mass $. Marketing is key for startups, again try look like you know what the hell you're doing.

Most people will walk away if you don't have a solid website. Have a company Linkedin, Facebook, and GMaps listing as well.

The more results in google search the better, try to fill the front page for your name with random things like an actual company would. As long as your name isn't stupid this is much easier than it sounds, you can make a lot of noise on the interest for free.

Have a working phone number with a phone tree, best if it's an 800 # but local area code is better than nothing.

A few company shirts helps even if you only wear them while interviewing. If you have an office on top of it you're set.

Whatever you do try to avoid meeting at public places like coffee shops, a lot of scams are doing this nowadays and candidates will be weary. If you don't have an office your home is probably best.

Another thing, use something like Workable to manage candidates and have a real financing and benefits system setup like zenefits + freshbooks. These things will be visible to prospects and new employees quickly and again shows that you know how to run a real company.

2) Cut all the buzz and BS in job listings. Don't try to make it sound like a difficult job to land. Make interviews easy and fast to get, LOWER the bar. Emphasize lax rules and freedom. These are your only advantages.

Remember who you're competing against. Good candidates will have many choices of where to work and you don't have anything against their brand appeal, pay, benefits, and overall attractiveness. Don't pretend that you do, your selling points are as follows: Be your own boss, loose rules and freedom to build something as they see fit will be the main drivers for most of your early hires. You may get wannabe CEO types, and don't be afraid, these are the people you want. Be afraid of the ones in it solely for money. There's much better ways of making money than joining a startup...these people are probably stupid or naive.

Most good candidates will end up with more than one offer. You need to make the process faster than any other company so that you can short circuit some of these people before other companies have a chance. You're small enough to be quicker to the draw than larger companies, use that to your advantage. To make the process faster, you need to do more thorough initial screenings so that you hire more people that come in the doors. Bigger companies don't want to waste the time but you can afford to. Most companies have an "offer lag" of about 1.5-3 weeks from initial contact, so you should be hiring people by Friday if you meet them Monday.

The "culture fit" is really important in super small companies. Try to make friends with the person you're interviewing. Is it someone you would chill with? Look at your current employees. Do they like to go out an party on the weekends? Play sports? Video game nerds? Try to hire the same at first. People not getting along at huge companies doesn't matter much, but when you're forced to work together all day it's important

<comment><USER21> Very good points! However I feel like if you speed the hireing process up too much many candidates will walk home without the impression of having to achieved something bigger. Shure, you should not waste too much time, but greater upfront effort will make the candidate feel like he has actually achieved something if he gets the offer. And this in return may increase the likelyhood of him or her accepting the job. The point I am telling you may be hard to explain, but in a nutshell I just want to say that you should try to increase the value of getting an offer by increasing the time frame between first contact and final offer just a little, for instance by having an extra meeting/screening/etc. in between.

<comment><USER22> We made a big deal of making candidates feel wanted, but not necessarily congratulatory. Same goal of raising the mental value of an offer but a different way. I get what you're saying, something perceived as difficult to get usually has a higher value placed on it. However, I disagree that this helps in a (pre-funding) startup :). The "we only hire the best" moniker has been beaten to death by silicon valley and people that have worked at startups before know this just isn't true. Candidates know that getting an offer from google etc.. is a big deal. If you try to sell them hard on your value they'll either think you're a bunch of used car salesmen or delusional.

Our approach is to meticulously research anyone we're serious about and bring these things up during their interview. In my own interview experience it's extremely rare for someone to take any interest in your personal projects and achievements, or even in your "story". We lived in the same state? You came from a place I'de like to visit? We both know some obscure language? Worked at the same company? Interesting/crazy projects on github? I'll star you. The end goal is to make it hard to say no, and making as much of a personal connection as possible has worked wonders for us. Make sure not to go too far and lie... if you can't find anything that interests you about a candidate why consider them in the first place?

Whenever I've been looking for a job a quick turnaround is a sign of competence. These guys are on top of their game type thing, as in they know I'm good and want to hire me right away. I just don't see waiting being a positive especially in a startup when you're supposed to be doing everything fast and efficently.

It's me btw, can't remember my throwaway pw :).</comment></comment></comment>


In the Long Run with Jeff Bezos - <AUTHOR> http://measuringmeasures.com/blog/2010/10/1/in-the-long-run-with-jeff-bezos.html

<comment><USER2> His princeton's speech is a personal favorite of mine. And specifically these following questions:

 _Tomorrow, in a very real sense, your life -- the life you author from scratch on your own -- begins._

 _How will you use your gifts? What choices will you make?_

 _Will inertia be your guide, or will you follow your passions?_

 _Will you follow dogma, or will you be original?_

 _Will you choose a life of ease, or a life of service and adventure?_

 _Will you wilt under criticism, or will you follow your convictions?_

 _Will you bluff it out when you're wrong, or will you apologize?_

 _Will you guard your heart against rejection, or will you act when you fall in love?_

 _Will you play it safe, or will you be a little bit swashbuckling?_

 _When it's tough, will you give up, or will you be relentless?_

 _Will you be a cynic, or will you be a builder?_

 _Will you be clever at the expense of others, or will you be kind?_

</comment><comment><USER3> My personal values match those of Bezos. I have also also lived by the regret minimization framework (although I never called it that).

I believe the only way to live is to live in the long term. Short term problems that trouble you at the present are exactly that, short term.

Could anybody recommend a good biography of his life?

<comment><USER4> There are a few books about Amazon itself which covers a lot about Bezos. I read one in 2001, which was called "Amazon.com - Get Big Fast" which was a fascinating read, but I think if you look on Amazon (!) and read the reviews there are a few out there worth reading

</comment></comment><comment><USER5> For those who want it in video format, here's Bezos on regret minimization <http://www.youtube.com/watch?v=jwG_qR6XmDQ></comment>


Firefox Considering Tor Integration - <AUTHOR> https://lists.torproject.org/pipermail/tor-dev/2014-September/007533.html

<comment><USER2> I couldn't find any mention of Mozilla or Firefox for that matter in the message thread. Is this just speculation about who the "vendor" is, or is there something I am missing ?</comment>


Show HN: Explore Wikipedia edits made by institutions, companies and governments - <AUTHOR> https://ailef.tech/2020/04/18/discovering-wikipedia-edits-made-by-institutions-companies-and-government-agencies/ <comment><AUTHOR> Hi HN!

I have built a tool that allows users to search and explore edits to the English Wikipedia made from IP addresses associated with public organizations. I've written a brief article explaining how it works and you can see the tool in action here: [https://wikiwho.ailef.tech](https://wikiwho.ailef.tech)

This was just a fun side project for me to build, and so I decided to share it with everybody else. I'll gladly receive any feedback and answer your questions.

Have a nice day!

<comment><USER2> The text is almost unreadably small in firefox on a 1366x768 monitor. Screenshot: [https://0x0.st/i1K2.png](https://0x0.st/i1K2.png)

<comment><AUTHOR> Thanks for the feedback. I believe it was because I specified the base font size on the body element using the 'vw' unit. I've switched back to 'px' and it should be alright now.

</comment></comment></comment><comment><USER3> Yeah, at one place I worked at, an employee was banned because she kept trying to remove certain information about the organization from Wikipedia. I was a little amused, but she very nearly got our whole range banned.

I find coordinated efforts to edit Wikipedia -- by whoever and whatever "good" their reason to be -- fairly creepy. It's like a lot of _little_ Ministry of Truths running about the place trying to massage reality.

<comment><USER4> _It 's like a lot of little Ministry of Truths running about the place trying to massage reality._

You just described the entirety of the advertising, public relations and marketing industries. It's essentially commercialized brainwashing. Humans, as social animals, have been at it at least since recounting great stories of hunting as pre-sapien hominids and probably earlier as pre-hominids.

<comment><USER5> The first sentence is also the thesis of Adam Curtis' documentary The Century of the Self.

<comment><USER6> underrated (timeless) documentary. [https://www.youtube.com/watch?v=DnPmg0R1M04](https://www.youtube.com/watch?v=DnPmg0R1M04)

</comment></comment></comment></comment><comment><USER7> [https://www.craigmurray.org.uk/archives/2020/04/information-...](https://www.craigmurray.org.uk/archives/2020/04/information- wars/)

'Long term readers will recall the Philip Cross Affair. A Wikipedia Editor named "Philip Cross" was relentlessly conducting a propaganda operation' ..

'The incredible thing about "Philip Cross" was that he never took a single day off. From 29 August 2013 to 14 May 2018 "Philip Cross" edited Wikipedia every day, including Christmas days, for 1,721 days.'

<comment><USER8> > Being the BBC it downplays the affair in a number of ways – crucially, it > gives several examples to show that Philip Cross's edits are harmless, and > not a single example of his thousands of vicious edits, such as his editing > my Wikipedia entry to call my wife a stripper.

<comment><USER9> I don't think of Craig Murray as the peak of unbiased writing.

<comment><USER10> Everybody has biases. Murray wears his on his sleeve.

More interesting: do you have _concrete_ and _verifiable_ information that his reporting of the Philip Cross Affair, that Murray' conjectures about its background, are wrong? Can you put forward an alternative explanation?

<comment><USER9> "he wears his on his sleeve" \- his biases you mean. You've downright stated he's openly biased. So we agree.

But that does not mean he's automatically wrong, nor that he's worthy of dismissal overall. Just that I'd take more care to filter what he says than I would with, say, the beeb . Not that the beeb are beyond criticism BTW.

And I'm not disagreeing with him that this PC guy is odd and worthy of investigation.

It's just that overall fact that he indeed is openly very opinionated. That's fine, so am I, just _caveat emptor_.

</comment></comment></comment></comment></comment><comment><USER11> The equivalent feed for the UK Parliament has been running since 2014 at [https://www.twitter.com/parliamentedits](https://www.twitter.com/parliamentedits)

</comment><comment><USER12> This is really cool!

But the approach seems a little flawed, as edits are attributed based on IP address. If I understand correctly that means it:

\- doesn't capture edits made using Wikipedia accounts

\- doesn't distinguish personal activity of individuals from those of the organization

\- relies on a couple of third-party IP databases which aren't authoritative and may be out of date (one of them hasn't been updated in 6 years)

\- can be circumvented by organizations using "unlisted" IP's or a VPN

Of course, the landing page is fairly transparent about these limitations. It doesn't mean the results are uninteresting, but when I looked at the most active month for the Government of Canada, it was clearly just an individual that happened to work there who's interested in TV and music (particularly The Robonic Stooges and Madonna).

[https://wikiwho.ailef.tech/organization/46a20a0820d609f90314...](https://wikiwho.ailef.tech/organization/46a20a0820d609f90314ea85462e9205)

<comment><USER13> I believe this flawed approach is the only possible approach.

As far as the individual interested in music the edits that are just individual edits on government time or IP address are a different problem than the other three. I guess could have some sort of analyzer to rank how likely the edits are to be of organizational interest and not just individual interest. But that would probably also require enough work to need to be monetizable for someone to put in that work.

<comment><USER12> Granted. I wonder if communities who maintain certain pages become aware over time of accounts known or strongly suspected to be associated with interested institutions. Per Wikipedia policy anyone paid to make contributions must disclose the fact ([https://en.wikipedia.org/wiki/Wikipedia:FAQ/Organizations](https://en.wikipedia.org/wiki/Wikipedia:FAQ/Organizations)) but I'm not sure how vigilantly that's enforced. It would be interesting if Wikimedia released a transparency report about this, or even if organizations themselves did so (i.e. "here's a dump of all our social media activity last year").

<comment><AUTHOR> This page might be interesting: [https://en.wikipedia.org/wiki/Conflict-of- interest_editing_o...](https://en.wikipedia.org/wiki/Conflict-of- interest_editing_on_Wikipedia)

It lists several cases that have been discovered of accounts editing Wikipedia for PR purposes or similar.

</comment></comment></comment></comment><comment><USER14> 12 years ago there used to be a fantastic tool called WikiScanner that did exactly this. It made headlines for revealing edits by intelligence agencies and corporate character assassination campaigns around the world.

One that stood out for me was a series of bizarre edits from CIA IP ranges to Mahmoud Ahmedinejads article

[http://news.bbc.co.uk/2/hi/technology/6947532.stm](http://news.bbc.co.uk/2/hi/technology/6947532.stm)

The site went offline unceremoniously in 2008

<comment><AUTHOR> Yes, I mention this in the article as well. I came up with this idea and then discovered it had already been done before, but since it has been offline for such a very long time I thought it could be cool to do it again 12 years later!

</comment></comment><comment><USER15> At a previous enterprise job, I actually emailed ethics@ when I caught a coworker editing a Wikipedia page in violation of the Wikipedia rules and company policy. It became clear during my subsequent interactions with the general counsel that they didn't exactly get many emails to that alias, nor did they really know how to go about handling a relatively minor violation.

</comment><comment><USER16> Institutions, companies and governments can't bother to edit from a VPN, or from a tethered cell phone?

<comment><USER7> > Institutions, companies and governments can't bother to edit from a VPN, or > from a tethered cell phone?

IP addresses are masked if using a registered account. It would be interesting to cross-reference those except Wikipedia don't gave this out.

I do know I opted-out of Wikipedia after being censured for posting the birth date of a deceased individual. In violating of privacy policy or some such WP:bla bla bla. The terms of which are impossible for the average individual to decode. A fortnite later the information was inserted by some senior administrator. I guess all Wikipedians are equal, except some are more equal than others.

<comment><USER17> I stopped editing when it became clear that all of my edits were immediately reverted. They were all simple grammar, spelling, or tense modifications. I assume the original authors had scripts in place to make sure there were no changes.

<comment><USER18> Someone should make a wikibot to _make_ such small innocuous edits, in order to detect such rogue editors who consider themselves "owners" of certain pages (against policy, I might add). It would perhaps also be possible to find at least some of these by detecting these changes in the editing history in cases such as yours.

<comment><USER19> The trick is to post the proposed edit on the talk page first, then make it after a few days if nobody objects. If your edit is reverted, you can point out that the user didn't raise any concerns on talk. Reverts are very much supposed to be a last resort measure, the primary way of shaping a wiki article is via discussion/deliberation on the talk page. Also very handy for edits that you know to be controversial.

</comment></comment></comment></comment></comment><comment><USER20> This is very welcome, because it's a side of WP content that isn't very transparent without a lot of time-consuming scrounging. Hopefully others can build on this foundation.

</comment><comment><USER21> Is it just me or the font on WikiWho really small? Also it doesn't seem to scale correctly with page zoom for some reason.

<comment><AUTHOR> Thanks for this feedback, I'll try to fix this as soon as possible.

</comment></comment><comment><USER4> Hilarious: [https://wikiwho.ailef.tech/diff/115cb29701ac58cd3cdf515ed043...](https://wikiwho.ailef.tech/diff/115cb29701ac58cd3cdf515ed043c9e7)

Airforce on the Pope: [https://wikiwho.ailef.tech/diff/88dfea55a8f8f112b404c62da094...](https://wikiwho.ailef.tech/diff/88dfea55a8f8f112b404c62da094882f)

Someone in the Navy taking offense at the content of the 'creation science' article: [https://wikiwho.ailef.tech/diff/06d1afb0c1ff80f387c99d007059...](https://wikiwho.ailef.tech/diff/06d1afb0c1ff80f387c99d007059ca9d)

</comment><comment><USER22> Great work, even with the caveats others have mentioned! But to maybe add yet another caveat: do you or anyone here know of any way that a malicious actor could expose a complete fake IP address, say in order to discredit an organization, other than working though an infected machine within the organization? Pardon my ignorance, and my intention is not to have such techniques be made common knowledge (if they exist), but if this is possible then it is an important aspect too.

</comment><comment><USER23> Wow, this is really interesting. Nice work!

Just a random example I found clicking around, an edit from the U.S. Department of State, removing a paragraph of criticism from the article "2003 invasion of Iraq". Looking at the history from Wikipedia, it was added back a few minutes later.

[https://wikiwho.ailef.tech/diff/3ccc3672d891b62a895d4821c4ab...](https://wikiwho.ailef.tech/diff/3ccc3672d891b62a895d4821c4abbcd9)

</comment><comment><USER24> I find the title and article a bit misleading. Like "companies" dont edit wikipedia, usually it's a random dude forgetting to log with his phone to correct spelling, a gross mistake when he was reading his CEOs life or vandalism.

I'm not sure why this project stopped at the obvious: it should go further and find "negative" edits that are beyond spelling, fact checking or general updates.

<comment><AUTHOR> Well, I happen to disagree. It is a well documented fact that companies often try to manipulate Wikipedia (either directly or by paying somebody else to do it). Granted, majority of the edits are non-malicious in nature but finding controversial edits automatically is really hard, and the goal of the tool would actually be to aid people in finding them.

</comment></comment><comment><USER25> It would be interesting to investigate WP pages that are "ideologically locked" for whatever reason. Maybe even come up with a metric, etc.

Some of this would be rank politics, of course, and some PR edits. But others might be rather surprising. As I recall, for several years, the main C++ page forbade any substantial criticism of the language.

</comment><comment><USER26> Wow. This is really, really cool. Having this level transparency on who is spreading narratives or propaganda in what way is very interesting. In my few brief searches on some history-related pages you can see hoardes of edits from US military bases for instance.

</comment><comment><AUTHOR> Wow, I thought the post was dead and I went to sleep with it having only ~5 votes and I find out today it exploded!

Didn't think it was possible several hours after it was posted. I'm reading the comments and trying to reply now.

</comment><comment><USER27> You do realize that if an employer makes an edit during work, the IP will be of the company. Your title makes it seem like it's the official stance of the whole company.

</comment><comment><USER28> Why is the US Navy so active on such innocuous articles?

<comment><USER29> Bored sailors?

Posting from inside does not mean, they do so on assignment.

</comment></comment><comment><USER30> This is awesome!

</comment><comment><USER31> Nice job!

Try editing the title to Show HN: (more appropriate).

<comment><USER32> I've added that now.</comment></comment>


Ask HN: What's the best way to receive money internationally? - <AUTHOR> We're considering PayPal (but have heard the horror stories about holds on larger amounts) or a wire transfer (but would prefer not to provide our routing and account number).  10K+.  Would love to hear the community's suggestions. <comment><USER2> In the past I've done similar amounts using a wire transfer service like Travelex ... from memory, it was a fixed fee (not a % commission) & the exchange rate was good. You just pay them cash over the counter.

The exchange rate is where standard banks often make a killing when doing a wire transfer.

<comment><AUTHOR> Thanks for the suggestion! I'll check 'em out. I was secretly hoping that there was some awesome YC-backed start-up that's nailing this problem that I'd missed..but this looks like it may be helpful.

</comment></comment><comment><USER3> Why wouldn't you want to provide your routing number and account number? You give them out every time you write a check. Wire transfers are probably the only good option here.

<comment><AUTHOR> Because there are places where that's all it takes to spend money. I trust our clients..but you never know..especially when dealing with an international client you've never met.

<comment><USER3> Create a checking account just for this purpose. Only use it for holding transfers. It takes about ten minutes to setup a new account at most banks.

<comment><AUTHOR> This is what we've landed on as a default - just seems kinda wonky. As if MacGuyver were handling our incoming $ or something.

</comment></comment></comment></comment><comment><USER4> I don't know how this would work with international but I think knightsbridgefx.com is a good option.

They do currency conversions through bank accounts. So you save $ on the exchange + you get the money wired. Minimum is 10k so this might fit the bill.

Where are you sending/receiving from?

</comment><comment><USER5> Found this <http://saasy.com/matrix.php>

<comment><AUTHOR> This is interesting. Has anyone used them?

</comment></comment><comment><USER6> Try Stripe, i've heard many people consider it instead of Paypal.

<comment><USER7> The bank account which is linked to the stripe account have to be in the US. But as far as I know they are accepting CC from all around the world. If you are sitting in the US and you just want receive Money from everywhere, than stripe is a good option. At least if you are dealing with small amount of Money. As far as I know stripe takes some percentage from the transaction. For big transactions, like 10K USD, I wouldn't recommend it.

</comment></comment><comment><USER8> for Europe based transaction try Transferwise <https://transferwise.com>

</comment><comment><USER9> I've used Transpact for international payment.</comment>


We want to hear from you on encryption - <AUTHOR> https://petitions.whitehouse.gov/response/we-want-hear-you-encryption <comment><USER2> Okay - just stay out of it. Let the NSA develop defenses against snooping that should be free for the world and earmark couple of billion for zero days development/purchase and other TARGETED offensive capabilities.

You don't need to be able to listen to everything as long as you have the capability to enter into anything with zero days</comment>


How I Invest My Money - <AUTHOR> http://www.getrichslowly.org/blog/2011/04/25/how-i-invest-my-money/ <comment><USER2> This post is about how he allocates money to his investment accounts, which was not interesting to me.

If you want to know how he actually invests his money, that's discussed in this post of his:

[http://www.getrichslowly.org/blog/2011/04/20/rebalancing- in-...](http://www.getrichslowly.org/blog/2011/04/20/rebalancing-in-real- life/)</comment>


Fighting Corruption in the U.S. Criminal Justice System - <AUTHOR> https://www.theamericanconservative.com/articles/fighting-corruption-in-the-u-s-criminal-justice-system/ <comment><USER2> Full series here:

[https://www.theamericanconservative.com/articles/where- the-r...](https://www.theamericanconservative.com/articles/where-the-right- went-wrong-on-criminal-justice/)</comment>


Content Security Policy (CSP) for the web we have - <AUTHOR> https://blog.mozilla.org/security/2014/10/04/csp-for-the-web-we-have/

<comment><USER2> I like the original CSP and while I don't take issue with them adding these extensions both seem quirky to use...

So with nonce based whitelisting, you really need your JavaScript blocks generated from code behind/a framework. Since they have to be rotated every single request, it would only really be efficient to utilise it when the entire page is re-generated every request already.

With the hash blocks, first off generating the hashes will be pure hell without amazing tooling, and also the devil is really in the details for exactly what the hash represents (e.g. the literal block as written, the block trimmed, the block with all whitespace removed, etc).

If it is the literal block as written then that is going to break a LOT. A single extra whitespace? Broken. The source changed from UNIX to Windows newlines, broken. ASCII to UNICODE conversion? broken. Code style applied? Super-broken, and so on.

So with both nonce AND hash based approach it seems like it has to be totally automated, and now you've effectively turned all HTML pages from "static" content into dynamic content (since in both case you're likely generating the CSP elements each "compile").

Honestly these seem like such a PITA to use, that they don't really make it easier for existing code bases to move to CSP, since a lot of work to find and modify every single JavaScript block (and then the CSP block) would be quite an undertaking. If I was going to do that I'd just move it all to *.JS files and use CSP 1.0.

<comment><USER3> you're definitely going to need tooling for hash blocks, but i don't think it needs to be particilarly sophisticated or amazing. I think you could provide pretty generic support in a couple dozen lines of php, or easily add it to any static site generation tool like jekyll. but, yeah, if you are purely manually writing static files in a yext editor, its going to be error prone.

Still trying to wrap my head around the nonce -- it seems like maybe it precludes just about any kind of caching, including CDNs? That seems like kind of a non starter.

and yeah, even though they start out talking about legacy site issues, both of these techniques seem to me more useful when you actually have some design reason to prefer or need inline scripts (there are a few), and less likely to be useful as a conveninet solution for a legacy site you don't want to change much.

</comment></comment><comment><USER4> This is great, but every time I read CSP as Communicating Sequential Processes. Funny thing about cultural contexts.

</comment><comment><USER5> One of the reasons preventing XSS is important is preventing data exfiltration.

One of the things I see a lot of people doing is whitelisting in their CSP rules 3rd party APIs like Google Analytics. Well...these can be used to exfiltrate data too...

There are a TON of 3rd party APIs that can't be safely whitelisted with CSP. A whitelist for GA or Stripe on all pages means you are poking holes in your CSP....And poking holes in anything usually has issues associated with it.

</comment><comment><USER6> Not particularly relevant, but still ironic that this page about CSP gives me a mixed content warning.

<comment><USER7> The mixed content warning only happens in Chrome. They just need to change the comment form's action:

        <form id="comment-form" action="http://blog.mozilla.org/security/wp-comments-post.php" method="post">

In this case, the potential to transmit unencrypted data exists, so Chrome warns. Firefox seems to be oblivious to the issue.

<comment><USER8> Firefox will warn when you try to submit the form.

Filed [https://bugzilla.mozilla.org/show_bug.cgi?id=1077880](https://bugzilla.mozilla.org/show_bug.cgi?id=1077880).</comment></comment></comment>


Ocular dominance - <AUTHOR> https://en.wikipedia.org/wiki/Ocular_dominance <comment><AUTHOR> There are a bunch of methods to determine this: [https://en.wikipedia.org/wiki/Ocular_dominance#Determination](https://en.wikipedia.org/wiki/Ocular_dominance#Determination)

The one my dad showed me as a kid is the one I usually show others: The Porta test. The observer extends one arm, then with both eyes open aligns the thumb or index finger with a distant object. The observer then alternates closing the eyes...

It meant that as a right hander with left eye dominance, I started shooting pool left handed at a young age. I don't think it's had much importance otherwise, though.

Thinking more about it, I think when I do shoot right handed, or if I always would have, I'd just need to keep the left eye closed ahead of time -- to avoid the shift that occurs once closing it, having already aimed.</comment>


Ask HN: How to keep feet warm and healthy when sitting? - <AUTHOR>

As a coder, I sit for long hours and especially in winter, I find it hard to keep my feet warm. Getting up and moving around periodically helps a little but usually after 10 mins, it's back to its worst condition. I've read about feet warmers/massagers and heating pads, what do HN readers use to keep their feet comfortable? <comment><USER2> What kind of socks do you wear?

<comment><AUTHOR> I've tried all kinds, from plain thick cotton to wool and even wrapped my feet in emergency blanket.

<comment><USER2> I got nothin' then! I think my socks are only 60% wool, and they never bother me. Though my hands are frequently cold to the touch and they don't make me feel chilly at all, so maybe it's a sensitivity thing?</comment></comment></comment>