A Two Month Debugging Story - <AUTHOR> https://kev.inburke.com/kevin/a-two-month-debugging-story/ <comment><USER2> > To ensure each test has a clean slate, we clear the database between each > test.

The proposed solution to manually nuke the database state seems crazy to me. Some alternatives:

1\. Run the entire test in a transaction, do flushes and assert as normal. At the end, ROLLBACK instead of COMMIT and now you have a pristine database again. [1]

2\. Setup pristine DB state once and then use `CREATE DATABASE ... WITH TEMPLATE ...` to create a temporary database. Not sure what the perf hit is, but it's probably worth trying. [2]

[1] [http://alextechrants.blogspot.ca/2013/08/unit-testing- sqlalc...](http://alextechrants.blogspot.ca/2013/08/unit-testing-sqlalchemy- apps.html)

[2] [https://www.postgresql.org/docs/9.4/static/manage-ag- templat...](https://www.postgresql.org/docs/9.4/static/manage-ag- templatedbs.html) CREATE DATABASE actually works by copying an existing database. By default, it copies the standard system database named template1.

<comment><USER3> Hi, I wrote the post. We'd love to use transactions but our ORM doesn't support it. More info here: [https://kev.inburke.com/kevin/dont-use-sails-or- waterline/](https://kev.inburke.com/kevin/dont-use-sails-or-waterline/)

We wrote our own transaction library and have been shifting queries over to it/a saner ORM. [https://github.com/shyp/pg- transactions](https://github.com/shyp/pg-transactions).

I've never heard of database templates, I'll have to take a look.

<comment><USER4> If your ORM doesn't know about transactions, that doesn't necessarily prevent you from wrapping your test runs in transactions. I was in a situation where I needed to start / rollback a transaction without ActiveRecord knowing about it, and was able to hack AR slightly to make that work -- so you can likely do the same.

You even mention in the Waterline section of that blog post that you've written your own transaction library, so this shouldn't be too hard.

<comment><USER5> Or run your database on a RAM disk with snapshots (LVM, FS, block device, or virtual host based)

<comment><USER6> I would imagine resetting the whole db even on a RAM disk after each of 6000 tests wouldn't be particularly fast.

<comment><USER5> With snapshots, it should be instant.

</comment></comment></comment></comment></comment></comment><comment><USER7> Oof - seems like you're running on a managed platform that can't be debugged in a reasonable level of detail?

If it were me I'd want to take the problem somewhere I _could_ get root access and debug it properly. So I'd be interested to know what value this (unnamed) CI platform provides to make it worth a wild goose chase.

<comment><USER7> Additional: Maybe it's just me but not being able to debug drives me CRAZY, sorry that I'm not being more helpful :) I've done bits of embedded systems work where you have to chisel out your own debug tools from glue and LEDs and serial ports and I basically hated it, or rather learned a bunch of ways of making it "right first time".

Test technology surely doesn't need that level of secret sauce that you need a hosted service - after two months I'd definitely want another way of doing it.

</comment></comment><comment><USER8> I'm not saying that e2e testing is without value, it can be useful... but its just not worth it I've found. I write unit tests only, which don't touch the database. My litmus test is am I testing an "algorithm" \-- something that has outputs solely based on its inputs.

If you insist on tests that touch the DB, the speed can be improved by chaining tests instead of resetting the DB everytime (this has its trade offs).

If I need to test a piece of code that generates a dynamic SQL statement, I would simply assert that the correct SQL is generated. I would not need to actually execute the SQL to see that it is correct. The point is to test that my logic generated the correct SQL, not to test that my database vendor implements SQL correctly. The latter would just be caught in manual testing. I like the BDD school of thought that you are writing specs, not tests.

<comment><USER9> I second this. I worked at a research company that had terabyte-scale SQL databases of curated data, and the tests would take 5 - 8 hours to run because they were verifying query results rather than the queries themselves. This also meant tests would fail because of changes in the data rather than just changes in the code. I rewrote the entire test suite to match SQL statements against a symbolic SQL description, which turned out to be a much more robust and extensible solution.

</comment></comment><comment><USER10> At risk of invoking the wrath of test fanatics -- aren't tests supposed to save time? If your tests are both unreliable and so hard to debug that you haven't been able to fix them for two months, I'd think you'd be better off just turning them off and figuring out a better testing strategy.

<comment><USER3> Hi - we definitely weren't looking at this full time for two months, just off and on as it failed various test runs, and I had time to look at it.

We have a large suite of tests that integrate with Postgres. Maybe one out of 50,000 database queries would fail. It was hard/impossible to predict which query would fail, since the problem wasn't with any individual query. By your logic, we should throw out our entire test suite. I'm not sure what we're supposed to replace it with.

<comment><USER10> > By your logic, we should throw out our entire test suite.

That's why I figured I was invoking the wrath of the testing fanatics... that is where my logic leads. :-) I have no idea what your tests look like, maybe they're super useful, but I've worked at places in the past where there were thousands of tests that were frankly pretty useless, and were actually a net negative for a variety of reasons, but to point that out got you labeled as a "cowboy". (To be clear I'm not against automated testing, just automated testing done badly.) If you're running them in a context where you can't debug it, at the very least I would move it in house onto a machine where you can hook up a debugger.

<comment><USER3> Our tests are pretty useful, they check things like "when you ask the API to submit a pickup, it gets assigned to a driver", and so on. Especially in JavaScript where anything can take any value they've been extremely helpful.

<comment><USER11> That's another argument I've never understood.

I've been working on applications with javascript for over 10 years.

Not once can I remember a javascript bug where someone passed a value as the wrong argument and it made it into production.

Maybe it has happened, but it's just not a common bug. I just don't remember it.

Like, you can easily write it as a mistake as you're developing but it's obvious as soon as you run it. But if that bug gets in production your dev didn't even bother to run the code to see if it worked as intended.

</comment></comment></comment></comment></comment><comment><USER12> First thought that came to mind was to just blow away the database and create a new one, see how long that takes.

I had found waterline's load time to have a LOT of things that I hadn't expected and take a long time... I'm just using knex now. Every time I try for magical solutions, I keep regretting it and end up using less magic.

<comment><USER13> Magic is fine, but there should always be a path to do things sans pixie dust. For something like an ORM, that would be a path to retrieve the raw DB connection to do things around / between queries. You even see the same pattern play out in programming languages; C# has the `dynamic` keyword that disables type checking on a variable.

</comment></comment><comment><USER5> What we do when we detect a failure is freeze the test runner instance, and allocate the same failed test to another runner. If the second runner succeeds, we okay the build, but we put the test and the frozen runner in a queue for investigation, and some engineer will be responsible for diagnosing and fixing this intermittent test. This queue is worked every day on a rotating schedule.

We run our own CI/CD infrastructure, on top of virtualized infrastructure; if you use a third party that doesn't give you that, you might want to look for alternatives.

<comment><USER14> Has this strategy worked perfectly so far? I would imagine a best two of three method would work better like those used for integrity in high radiation environments. However, I'm guessing code is significantly more deterministic and the danger of false positives (tests passing when they shouldn't) is much smaller.

<comment><USER5> This has worked well for many years. Most of the intermittently failing tests are older, from before we had robust dependency injection, and they get incrementally improved this way.

False positives are also super costly for us, as everyone works on trunk (by design, to avoid skew) and deploys all ckeckins directly to production. "Best out of two" is sufficient for the old tests, and if someone creates new intermittent tests, we follow up with education so that isn't a persistent problem.

</comment></comment></comment><comment><USER15> I think best practice here is to run the whole test in a transaction and then roll back the transaction at the end. This is the approach Django uses.

<comment><USER3> We'd love to do this but our ORM doesn't support it. [https://kev.inburke.com/kevin/dont-use-sails-or- waterline/](https://kev.inburke.com/kevin/dont-use-sails-or-waterline/)

</comment></comment><comment><USER16> I usually try to minimize the number of tests that rely on this (shared) DB state. So I'll focus more on unit and integration tests. Functional tests still do have value though. See: [http://xunitpatterns.com/Testing%20With%20Databases.html](http://xunitpatterns.com/Testing%20With%20Databases.html)

Where possible, I like to have data that can exist independent of the other data on the system. I can make a separate 'tennant' for that test - and just ensure it's wiped before I proceed. Sort of a multi-tennant approach. Works great. I don't bother with a 'teardown', but do any cleanup before the test runs. I also ensure the tests are written to not make assumptions about global state.

Instead of dropping all constraints as the article suggested (that sounds hacky), I use ON DELETE CASCADE constraints. If I miss some, the tests fail. Seems easy enough to maintain.

With the above approach, DB testing is approachable and still pretty quick.

</comment><comment><USER17> They are using CircleCI, btw. I really like Circle, but they could sure be more helpful with the SSH access, as you mention. Also a personal nitpick, they (still) have no way to test a circle.yml file except for pushing a change and seeing if it works. Anybody that's used the service will know exactly what I'm talking about. You end up pushing four times just to get the syntax right. They know about that (iirc there was a support forum post requesting the feature some years ago), too. But besides that, I heartily recommend Circle.

</comment><comment><USER18> I always like to read stories of other teams' debugging adventures. One thing that occurred to me as I got toward the end of OPs (ongoing) narrative was that perhaps its time to fall back and consider other ways of setting up the data environment for each test. If the data that each test is dependent on is a small enough subset perhaps it makes sense to create a separate database for each test or class of tests, which can just be dropped and recreated before the test run?

</comment><comment><USER19> _disabled autovacuum by default_

I realize this wasn't their solution, but it's worth noting that generally speaking, disabling auto-vacuum isn't recommended. Even if you do, it will still force vacuum jobs to prevent transaction ID wraparound.

* [https://www.postgresql.org/docs/9.5/static/routine-vacuuming...](https://www.postgresql.org/docs/9.5/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND)

<comment><USER3> Agreed, but if you are running a CI provider and recycling containers, seems easy enough to do it as part of the recycle step.

<comment><USER19> I agree it'd be a nice option for them to provide, but I don't believe making it the default for every customer is a laudable goal.

If vacuums are hanging/causing locks and these truly are just test tables, it might be beneficial to use temporary tables instead as the autovacuum daemon ignores them. Additionally, unlogged tables that reside on a memory disk can be insanely fast - might cut some additional time down depending on your data.

</comment></comment></comment><comment><USER20> I thought instead of telling you to drop your test suite, switch your ORM, or something equally as crazy I would rather just empathize. I'm glad you guys figured it out. We all have these kind of bugs that drive us insane. We all have those difficult to test bugs that can't be reliably reproduced. The feeling when you finally solve them is amazing. So congrats on finding that crazy bug!

</comment><comment><USER21> With Hibernate we used to connect it to a in memory DB just for the tests and to a real DB for production.

It was easy and quick to drop schemas.

<comment><USER3> I agree that would be faster, but we rely a lot on Postgres's database constraints and we've previously had code problems go undiagnosed when the test schema didn't match production. Six in one, half a dozen in the other, I guess.

<comment><USER5> Why does your test infrastructure allow a schema that doesn't match production? Seems like low hanging fruit there!

<comment><USER3> Sorry - that was a few months ago, we replaced it as soon as feasible. We had to upgrade a lot of tests to make it work with our prod schema

<comment><USER5> Right. In the best of worlds, your tests just apply the production schema update on start, and similarly you apply checked in schemas ASAP to production after passing tests!

</comment></comment></comment></comment></comment><comment><USER22> > We could draw a dependency graph between our 60 tables and issue the DELETEs > in the correct order

If the above works, automate it.

<comment><USER6> creating a dependency graph between tables is not exactly a 20 minute task. Certainly doable, but getting it right would take time. Anyways, no need to do it, can just do the deletes in a transaction.

</comment></comment><comment><USER23> Writing 6000 integration and unit tests can be avoided by using purely functional statically-typed languages. There are some that even compile to JS, such as PureScript. Most of what typical JS tests check can be expressed with pure functions and types.

</comment><comment><USER24> Have you thought about starting up multiple replicas of your database in parallel and then pointing each test suite to a different one? This way you may be able to parallelize them very well.

<comment><USER3> This is an interesting idea!

<comment><USER24> Let me know how it works out for you.

</comment></comment></comment><comment><USER6> You can just do all the deletes in the same transaction and then the constraints wouldn't need to be disabled.

</comment><comment><USER25> This might be a weird question, but surely you run your tests locally in a loop?</comment>


AirCrack NG 1.4 Updated:  Several performance improvements - <AUTHOR> https://www.aircrack-ng.org/doku.php?id=changelog <comment><USER2> Not just performance improvements. "Aircrack-ng: Added PMKID cracking" This brings WPA-PSK exploitation to the masses.</comment>


Easy online interactive vs. line chart - <AUTHOR>

I'm looking to put an interactive line chart on my blog for people to compare performance between a few things. Anyone know of a good one thats free? Thanks! <comment><USER2> Something like this I guess? <http://www.highcharts.com/></comment>


Beatles Unknown "A Hard Day's Night" Chord Mystery Solved Using Fourier Transform - <AUTHOR> http://www.scientificblogging.com/news_releases/beatles_unknown_hard_days_night_chord_mystery_solved_using_fourier_transform

<comment><USER2> Actual details.. the article doesn't even reveal what the chord is: <http://www.mathstat.dal.ca/~brown/n-oct04-harddayjib.pdf>

<comment><USER3> So what's the chord??

<comment><USER4> From the paper:

George Harrison on 12-string pairs 2 through 5: (A2 A3) (D3 D4) (G3 G4) (C4 C4)

George Martin on piano: D3 F3 D5 G5 E6

John Lennon on 6-string: C5

Paul McCartney on his Höfner bass: D3

Expert mixing masks the timbre of the piano amongst the guitars, leading to the "mystery."

<comment><USER5> Who's Paul Hofner?

<comment><USER6> Should read: Paul McCartney on a Hofner bass (semi-acoustic, violin-shaped electric bass guitar).

<comment><USER4> Fixed.

</comment></comment></comment></comment></comment></comment><comment><USER7> Dominic Pendler dedicated a chapter of his book "The Songwriting Secrets of the Beatles" to this chord, and demonstrates quite convincingly that there was a piano involved. It's a bit disappointing that the Dalhousie professor doesn't point to the existing literature before claiming to have discovered something novel.

<comment><USER8> Where does this article (the PDF cited by nickb, not the link, which isn't working for me anyway) claim to be doing something novel?

It's a cute demonstration of basic physics, more-or-less at the freshman level (although lots of high school students could follow it). It doesn't claim to be anything else.

UPDATE: Finally got the blog link to load. While the original paper is modest in its claims, the blog hypes them up and then fails to cite the original paper. This blogger does not earn a cookie.

<comment><USER4> The paper is a little bit hand-wavy about the mathematics of how CDs are sampled, how the Fourier transform works, and how frequencies are converted to semitones. But it does have references which mostly alleviates my desire for rigor :)

Once the author has a list of pitches though, the process of assigning pitches to instruments is very well laid-out. The key to locating the piano was that piano strings are hit in triplets, and each string in a triplet is tuned ever so slightly differently.

Signal processing was one of my favorite courses in college.

</comment></comment></comment><comment><USER9> It's nice to have an algorithmic way to find the pitches in a chord, but honestly anybody with a good ear can pick that out. Try sitting down with a Bill Evans recording and figuring out the different chords you hear - something jazz students do all the time.

The fact that it's not reproducible on a standard-tuned guitar might have stopped guitar players from figuring it out on the fretboard though.

<comment><USER10> _honestly anybody with a good ear can pick that out_

According to the article, this specific chord has been debated for decades by people with good ears.

<comment><USER11> But what they've debated is the exact voicing and instrumentation (which instrument played which part), NOT the notes of the chord. All this "debate" seems to just be Beatles fanboys looking for a lot more cleverness and complexity in Beatles music than really exists. As a huge fan of music and music theory, and no huge fan of the Beatles, I can assure you that countless abundantly more eluding, complex, and novel chords exist in other music.

</comment></comment></comment><comment><USER12> "see if he could apply a mathematical calculation known as Fourier transform to solve the Beatles' riddle."

I feel less dumb today knowing clearly exactly how that would work. Although I would have thought it would in practice be feeding it into an audio analysis app and picking the peaks and mapping them to notes on various tunings. Not really mathematics though, but cool none the less.

</comment><comment><USER13> things like this make me giddy

</comment><comment><USER14> Definitely not the way to hit on chicks that are Beatles fans.</comment>


It's Time For Google To Take Advantage Of Motorola Mobility - <AUTHOR> http://nathancampos.me/post/17625243947/its-time-for-google-to-take-advantage-of-motorola

<comment><USER2> tldr; Google should get MM to make Nexus phones.

This would come back to bite Google. Android's success is by and large because of Android licensees. Google demonstrating a clear interest/preference in a specific one would not make the other OEM's too pleased.

<comment><USER3> I'm not sure I agree that the other OEM's would be upset, or that having stock Android is a preference. The other OEMs must feel their custom UI is a value add, so why would they mind competing with a stock UI? As long as MM isn't the sole Nexus OEM (which they wouldn't be, since it's open source), I'm not seeing the issue. Please elaborate if I'm missing something.</comment></comment>


Building a Secure Electron App - <AUTHOR> https://github.com/reZach/secure-electron-template <comment><USER2> It's a great idea to have a template for writing secure Electron apps, but this particular template should only be used with caution. I don't think it has been reviewed or endorsed by the Electron team as actually following those best practices, and I see a few issues just skimming from my phone:

They're trying to expose IPC to the renderer in an unsafe way. See their discussion on this GH issue [https://github.com/electron/electron/issues/21437](https://github.com/electron/electron/issues/21437) (referenced from the main readme as blocking some features they want to implement)

On their "building a secure app" page they complain about Electron's quick release cadence [https://github.com/reZach/secure-electron- template/blob/mast...](https://github.com/reZach/secure-electron- template/blob/master/docs/secureapps.md)

> The trouble that I've found with electron, is that their release schedule is > crazy, with only a few months before each major release. We know that > electron is a young framework, but it is hard to keep up so quickly!

Electron releases quickly to pull in critical upstream security fixed from chromium. That reasoning is explained pretty thoroughly in the best practices documentation [https://electronjs.org/docs/tutorial/security#17-use-a- curre...](https://electronjs.org/docs/tutorial/security#17-use-a-current- version-of-electron)

I haven't looked at their implementations of the other security best practices, so these might be the only red flags, but I'd still recommend against just blindly copying the template without understanding and verifying the best practices they're attempting to implement.

<comment><AUTHOR> (author)

Thank you for your feedback. This template has not yet been reviewed but I hope to get candid feedback like yours on spots that may have been missed.

I am planning to change the way the IPC renderer is exposed; Marshall from the Electron team pointed me to a better way of doing so and I hadn't had time to update the repo yet. That will be something I update soon in the code and in the docs.

The best practices I take from Electron themselves; [https://electronjs.org/docs/tutorial/security](https://electronjs.org/docs/tutorial/security). If there are other security reports please send them to me and the template can be enhanced further.

<comment><USER3> Is it possible for you to switch your license to something more like MIT or BSD? The work you're doing is great but I believe the majority of Electron apps are developed inside companies and by licensing your project as GPL you make your work into something most commercially employed devs can't touch.

<comment><USER4> Looks like they just switched to the MIT license (same license Electron itself uses).

</comment></comment></comment></comment><comment><USER5> If anyone is interested in Electron application security, I wrote a guide that explains the methodology behind some of the choices the author here has taken and even goes a bit further in a variety of areas: [https://know.bishopfox.com/research/reasonably-secure- electr...](https://know.bishopfox.com/research/reasonably-secure-electron)

<comment><AUTHOR> (author)

Thank you, I will read up on this!

</comment></comment><comment><USER6> I wish that Safari would support Progressive Web Apps on Desktop like Chrome. I would much rather provide an Application Manifest and Service Worker than building a pseudo native desktop app.

</comment><comment><USER7> This is based on the Security documentation that the Electron team maintains, which is full of good advice: [https://electronjs.org/docs/tutorial/security](https://electronjs.org/docs/tutorial/security)

</comment><comment><USER8> For other types of security try [https://github.com/tauri- apps/tauri](https://github.com/tauri-apps/tauri)

It is an electron-like framework written in Rust, and is designed to be as lightweight as possible.

</comment><comment><USER3> Be aware this is GPL licensed

<comment><USER9> What's wrong with free software?

<comment><USER10> Nothing, but a GPL-licensed framework is one that is difficult to use commercially, because this is a case where GPL "infects" the user. This use case was the reason for creating the LGPL.

</comment></comment></comment><comment><USER11> Is it still possible to unpack the asar, rewrite the source, and repackage the asar?

<comment><AUTHOR> (author)

Yes, it is quite possible to do that. One of my down the road goals is to add light obfuscation to the source code upon packaging. If anyone is motivated, they can break into _any_ source code and repackage.

I'd also like to add some form of checksumming, but again if they have access to the source code they can change anything they want to.

<comment><USER12> Code signing with a trusted cert is what really helps in this scenario.

<comment><USER13> It's tough due to platform limitations -- e.g. I think that macOS codesigning will only sign binaries, and your JS/ASAR files are not binaries.

<comment><USER12> Shouldn't Electron be a "platform" in this case, and provide affordances for that?

<comment><USER13> It is better to use OS codesigning than hand-built codesigning because then the OS can enforce it -- e.g. App A can't overwrite App B. Anything you hand- roll can be unrolled by an attacker.

I guess my preferred solution for be for Electron to find a way to put the ASAR inside the main binary and find it there and then codesign that, I'm not sure why it hasn't happened yet AFAIK.

<comment><USER12> It depends what the threat model is. My understanding of Electron apps is that the binary part of the app (Chromium, node, whatever are the parts of the Electron that present the app to the user) is not changing all that often, while web app bits can be updated by simply downloading new version from the publisher's site (correct me if I'm off base here). If this is the case, then the threat here would be the attacker MITM'ing communications between the user and publisher's site and serving malicious payload to the user. Electron validating the signature before serving downloaded bits would mitigate the threat even without OS support (remember - Electron haven't changed, only web app bits have).

Note that I'm saying "Electron validating the signature" \- not web app doing that, which I assume what you meant by "hand-rolling".

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> It would be cool to have a regression testsuite showing "insecure" code for each class of security problem, and showing that the problem is fixed by the template.

<comment><AUTHOR> (author)

That's on my roadmap! Do you have ideas on how a testsuite for that might work? I am open to suggestions.

</comment></comment><comment><USER14> > Secure Electron App Bit of an oxymoron no ?

/facetiousness

On a lighter note :

> Feature #1

> Only load secure content - (Need help!)

What kind of help? For this template project ?!

<comment><AUTHOR> (author)

Yes, I need help as I wasn't able to test the security recommendation. I found some snippets but they didn't work when I tested locally.</comment></comment>


So I've made this iPhone game.. - <AUTHOR>

It's simple and a lot of fun; based on the Japanese game show Silent Library. It started out as a game for me and some of my friends who are fans of the show, but after several parties where everyone wanted to play when we got started I decided to take the app to the App Store. It has sold 5 copies in as many days... Any tips on how I can market this app? Any success stories amongst the news.ycombinator readers?
URL with more info about the game: http://www.innernode.com/iphone_silent_library.html
Cheers from Norway <comment><USER2> Silent Library is probably the least exciting name for an App ever. You need to play up the naughty/dangerous/outrageous angle.

<comment><AUTHOR> Well it's a group effort - and when people get into it, it's hilarious. I've placed it into the Entertainment category rather than the Game category. Maybe that will help...

</comment></comment><comment><USER3> I'm not sure if marketing will help much. The game doesn't seem to be interesting.

</comment><comment><USER4> play a game with your friends, upload to youtube, hilarity ensues.</comment>


Ask HN: Which email-me-when-my-site-is-down service do you use? - <AUTHOR>

<comment><AUTHOR> Recently my Debian 8 server started "being down" from time to time. It does not respond to http,ping and ssh. Nothing is in the logs. Just like the power has been turned off. Only when I reboot it, it comes back.

It's a dedicated server rented from 1and1.

While I try to find the problem or a new provider, I would like to get notified when it is down.

There must be an endless number of free services for this. Can my fellow startup buddies from HN recommend one?

</comment><comment><USER2> I use monitive.com totally happy with them.</comment>


The Great Legacy Code Crisis of 2016 - <AUTHOR> http://devops.com/blogs/great-legacy-code-crisis-2016/

<comment><USER2> In my experience, "legacy" is used by sales types to mean "that which I did not sell you." Yet that may include complicated logic to enforce business rules, adhere to regulatory requirements, etc. Do you think that Amazon really has a technological advantage over the biggest banks that would offset their other advantages?</comment>


Why Outsourcing Sucks - <AUTHOR> http://www.diovo.com/2008/08/why-outsourcing-sucks/

<comment><USER2> This is taken from the perspective of an Indian, with respect to outsourcing to India. I personally have had the same problem in the past (with India) so I looked around. In the end I settled on outsourcing, in a slightly different way, to some guys in Russia, Latvia and Brazil. The short version (which I appreciate is still quite long!) is:

1\. I employed individuals, not companies. It took more time, but I got good quality people on board. This is 8 years ago when I started, so I think I speak from experience.

2\. The initial guys I started to work with, I have now made partners in some of what we do (sourceguardian.com as one example - they are full partners in it). Reward well and treat people with respect. It goes a long way.

3\. I usually start with small tasks and build up. This way you can assess quality of code, but of equal importance you can also recognise if someone is motivated and who will deliver to deadlines. Anyone who misses immediately, I don't use again. Harsh, but it works for me.

4\. I was not a programmer when I started. I appreciate this is Hacker News, but we're not all born like that and indeed it was never my dream. I learned to program so that I could put myself in the mind of the people I was working with. Worked for me, and guess what?... I enjoyed it. I'm still not a good or fast programmer, but I can converse more accurately what I want with the knowledge of what will work

I find it annoying when people put their own personal perspective as some kind of universal law. Outsourcing maybe sucks for many people, due to their experiences, but for me personally it has allowed me great freedom in my business and has introduced me to more cultures and more people than I would have otherwise.

<comment><USER3> As a software consultant, I always want companies to outsource their programming tasks...to me! ;-)

But seriously, I agree with your take, inovica, I was frustrated with the quality of work (and integrity of the workers) when trying to cut costs and hire Indian programmers. So I looked elsewhere and have been very pleased with the results I've gotten by working very closely with Russian programmers.

A blanket statement such as "outsourcing sucks" isn't helpful to anybody seriously considering it. It's also link bait, imo.

<comment><USER4> You're kind of doing the same thing -- the fact that you've had good experiences with Russian programmers doesn't mean that Russian programmers are good, and Indian programmers are bad. I've had very _bad_ experiences with Russian coders (not by choice).

I think the parent's point was that _some_ outsourced people are good, and that you just have to take time to find the pearls in the (giant, steaming, rancid) piles of oyster guts. The bigger problem with outsourcing, if you ask me, is the communication delay. It's nearly impossible to build a team when they're thousands of miles (and 12 time zones) away.

<comment><USER5> I would suggest looking in India for coders and paying them 40-50k/year in India. The idea is to skim the top talent out of the market and maintain quality not just add people at the lowest cost possible.

</comment></comment></comment></comment><comment><USER6> This is not a well researched article. At best its a personal perspective and everyone is entitled to theirs...

Empirically a majority of the software work outsourced happens to be the resource intensive and the mundane work from large companies, primarily in the US. The software outsourcing companies from India have figured out or happen to know how to deliver and meet the expectations of these clients best. They are addressing the market need.

I hope the people on this forum realize and distinguish between outsourcing companies in India and the Indian programmers.

In other words, Don't hate the player, hate the game...

</comment><comment><USER7> _"You will get quality code only if it comes from your heart - like when you code for yourself."_

Good advice for anybody, anywhere, any time.

</comment><comment><USER8> What he says is pretty much very true. Consulting Companies here are on a hiring spree in colleges. Education here is pretty bad too, the reason being it is in a chapter-wise marks format. Let me tell you how a CS student prepares for exam, Variables is 20 marks, Pointers are 50 marks and Arrays are 40 marks, Lets just study Pointers and Arrays(you get the point right). This is pretty much the case everywhere in India. Optimize the marks at the cost of Understanding.

An entry level engineer here makes close to $1.5-$3/ hour in a reputed consultancy firm. I would not want to talk about those low paying firms at all. Nobody can expect good code for $3/ hour. I am sure Clients are paying more money per person but Consultancy is a broker here who eats up much of the money of their employees. This is pretty much the case here.

<comment><USER9> Sorry, but i disagree with your _blanket_ statements as well.

      Let me tell you how a CS student prepares for exam,
       Variables is 20 marks, Pointers are 50 marks and Arrays are 40 marks, Lets just study Pointers and Arrays(you get the point right).
      This is pretty much the case everywhere in India.

Not sure how many CS students you know, and how many of them actually studied the way you mention. But to extend that to "pretty much" everyone is going a bit too far.

And as far not giving your best (or getting the best) when you are working for $5 an hour (its great we have currency exchange rates!), is also not true as well. I know plenty of people who give/gave their best, just because they liked it. I love programming and believe i churned out good stuff, when i was earning that much. And there are plenty of others like me.

So does that "pretty much" means, everyone does great work, no it doesn't.

<comment><USER8> I was talking about education system, it is not application based but theory based. More importance is given to marks than understanding... which leads to bad programmers. As i stay in Bangalore(it is a outsourcing hub), i can surely tell the situation here.

There are surely exceptions, you can find tons of great programmers in India who contribute a lot to FOSS, but the other question is "Are these people working in Outsourcing Consultancies"? I guess not.

 _And as far not giving your best (or getting the best) when you are working for $5 an hour (its great we have currency exchange rates!), is also not true as well. I know plenty of people who give/gave their best, just because they liked it. I love programming and believe i churned out good stuff, when i was earning that much. And there are plenty of others like me._

Understand, we are talking as a whole, there are always exceptions. There are many people like you, who like what they do but most of them are here only because of the money, that is the reason there is so high attrition rate in consulting firms. I can give you tons of reasons but i don't have time. Time spent giving you answers is inversely proportional to lines of codes written. ;)

</comment></comment></comment><comment><USER9> As they say, the truth lies somewhere in the middle.

It is never wise to trust and go by any blanket generalization. I am afraid the author raised very valid points, but at the end made this blanket statement:

      So what is the solution?
      Don't outsource. Seriously.

And then (probably as an afterthought) added this:

      If your work is very monotonous and does not demand high quality, outsource.
      If you want a very good software product and if it the flagship product of your company, never ever outsource.
      You are doomed otherwise.

My views on this topic:

1\. Outsource wisely. If consider yourself a hacker, and are in early stages of developing your product/startup idea, then outsourcing is definitely not for you.

2\. If your work is not well specified and not well thought out, cross location development would make it even more harder to come up with something special.

3\. Good programmers are not easy to find anywhere. If you are looking to outsource, and want a good team, please be ready to put in the hard yards. Negotiate, and select your team.

4\. If even if you have the right team 'skills wise', please give this 'relationship' a little bit of time as well. :-). Developing a good working relationship across geographies is not easy. So, if you are looking for a quick solution in a short time frame (2-3 months), your odds of not getting what you really want, are higher.

Previous related discussion threads:

<http://news.ycombinator.com/item?id=217858>

<http://news.ycombinator.com/item?id=233145>

</comment><comment><USER10> Interesting to see that Mech Eng grads in India have the same problems as in the UK.

</comment><comment><USER11> Outsourcing doesn't suck in _all_ cases, which this article seems to imply. For example, I was maintaining cobol apps on a mainframe that were about 20 years old. Recently I read a news story that gov. payroll systems in California run entirely on cobol, and also that cobol programmers are impossible to come by. In India, the big firms actually train new grads in cobol etc., if the job requires it.

So, now, what is better, just stop paying the gov. of california employees, or outsource the payroll processing to india?

outsourcing is not just about money, there's more to it.

</comment><comment><USER12> Well you know there is an old story about John Henry who dug out rock with a pick ax to make way for the railroad being built to connect the east with the west in the American frontier days. John Henry was really good, but one day a steam engine came along that could do his job just as well. So there was one day a contest. Henry kept up the the machine as best he could, and, in some versions of the story, even beat the machine, but his heart failed him at the end and he died. Moral of the story: no matter how good you are at your job, new ways of doing it will always come along to make your old way of doing it obsolete. It is called progress. Thus it is with outsourcing. It is the wave of the future, it is inevitable. If you don't like it, perhaps you should get to your next meeting via covered wagon and let the rest of us use the new fangled railroad contraption. I for one like outsourcing - more work for less cost. Can't argue with that baby! :-)

<comment><USER13> Sure, "more work" if you measure in man hours; but when you actually go to use the code and find that it won't compile because the Indian coders who wrote it didn't even have computers, and wrote the entire application down on paper and paid to have it typed, you realize you wasted your time and money.

Outsourcing is no different from hiring regular programmers; if you wouldn't hire the people you're outsourcing to, why in the world would you trust them to do a good job?

True story, by the way.

<comment><USER14> If the results of outsourcing were so bad you all guys wouldn't be so worked up about it. The truth is, the person you answered (currently downmodded to -1) made an excellent point. People who protest against outsourcing are no different from the workers long ago, when the companies first started using machines to perform tasks previously done by physical labor. The workers then went on strikes, were destroying the machines etc.

<comment><USER15> Not necessarily a great analogy. I think you are trying to liken cheap, possibly underpaid, labor to machines and factories. While I think that it is entirely possible that cheap Indian (or other) labor could replace more expensive American labor, I don't think low paid labor is exactly the next generation of technology. Something about likening cheap human labor to convenient innovations in technology just doesn't strike me as right.</comment></comment></comment></comment>


Entropy in Social Networks [pdf] - <AUTHOR> https://www.cs.virginia.edu/~jlp/12.SOCINFO.pdf <comment><USER3> Fascinating paper. Seems to support the idea that social networks are just another species of complex system, and as such tend to develop self- reinforcing structures of influence according to an underlying set of universal state-transfer properties, iterating over time and amplifying the quantum effects governing atomic interactions between members of the ground set of elements (people, at this scale), broadly similar to the way that complex physical systems are all echoes of thermodynamics.

I wonder... will there be a periodic table of ecosystemic elements some day, a Zuckerberg's standard model of quantum sociodynamics? /s

<comment><USER4> Also could suggest that by mandating periodic group-connection-reinforcing rituals, like daily/weeky religious or other activity, that a society can reach a connectivity state that's quite inflexible.

<comment><USER3> Indeed, this is a function of monumentalism, which is to reify and consolidate ritual into a pattern that is as permanent and immutable as humanly possible, and thus make the physical landscape shared by a given community reflect the mental landscape they likewise share.

<comment><USER5> All that rhetoric is wasted on bored churchgoers.

</comment></comment></comment></comment><comment><USER6> I can't believe this is a published article. 3/4 of the paper is essentially crackpottery (e.g. Proposition 5 proves that the composition of surjective maps is surjective), while the final 1/4 is a "proof by picture" (see Figure 6) that you'd see from a mediocre undergraduate pset.

<comment><AUTHOR> The figures ("pictures") aren't part of the proof, they're part of the presentation, and Figure 6, as stated in the paper, is included as a reference to an analogous work.

<comment><USER7> If you read the last 1/4 of the paper, you'll see that Figure 6 is an integral part of the discussion; furthermore, nothing in the discussion is proven rigorously --- they all appeal to the picture.

That is exactly what a proof by picture is.

</comment></comment></comment><comment><USER8> I know this is HN but can someone ELI-don't-have-a-PhD-in-mathematics?

<comment><USER9> The math is tough to grok, but it appears they are using some set constructions to show that given a certain cycle size (4 or more) within a graph, those cycles are stable (Irreducible) based on some previous work. Thus, network stability is contingent on those cycles and you can extend this to say that the reason social networks don't dissolve is because these subsets give stability to the graph?

<comment><USER10> Honestly, I've had easier times reading through representation theory concerning quantum mechanics! I think I see what it's trying to say though, which appears to be some mathematical basis for what we experience online; communities form, fragment, and it's exceedingly difficult to halt or reverse that process of fragmentation and isolation. Eventually, this trend results in the decoherence of the network.

Is that about it?

</comment></comment></comment><comment><USER11> Not sure this accounts for the fact that social networks, unlike galaxies or the universe can be folded and reconstituted at will. If you think of it like making a pizza, you spin the dough and as it spins it will eventually break apart (mySpace, Tumblr, your-favorite-forum-of-yore) but you can always fold it back over itself. In this metaphor, Facebook's introduction of new features and its acquisition of Instagram, WhatsApp and forthcoming VR (in a way its own universe, without any natural law like entropy) represent folding - reconstitutions and renewals. I suppose we can conclude that if entropy represents a fundamental part of natural law applicable to social networks, our technology will try to negate and dominate it. At the very least and assuming the thesis of the paper to hold true we can say, Social Networks are doing something about it.

<comment><USER12> >without any natural law like entropy

whenever there is gradient between [energy] potentials the things would move along it to neutralize the difference - that is the entropy law at work, nothing happens without it. Folding back, reconstitution, renewal - it is all requires expending energy, ie. entropy increase.

> if entropy represents a fundamental part of natural law applicable to social > networks, our technology will try to negate and dominate it.

our technology is just a tool of ours. Being live organisms we follow the main principle (stemming from the 2nd law) what the life is built upon - <USER2> and dominating entropy in some small volume of spacetime by using energy obtained by increasing entropy in some other volume of spacetime by even larger amount than the energy extracted and the entropy dominated/negated. Technology just allows to amplify that process.

<comment><USER11> Hey thanks, this is an awesome reply and I appreciate it.</comment></comment></comment>


Speech Recognition Is NSA's Best-Kept Open Secret - <AUTHOR> https://firstlook.org/theintercept/2015/05/11/speech-recognition-nsa-best-kept-secret/

<comment><USER2> I can't fathom why this didn't get bumped to the front page.</comment>


Facebook Engineering Live Commenting: Behind the Scenes  - <AUTHOR> http://www.facebook.com/notes/facebook-engineering/live-commenting-behind-the-scenes/496077348919

<comment><USER2> "This wasn't a small challenge: every minute, we serve over 100 million pieces of content that may receive comments."

"But it works because our commenting rate is significantly lower than our viewing rate."

</comment><comment><USER3> Push FTW!

</comment><comment><USER4> push + cache is better than pull + mapreduce</comment>


Ask HN: What will be the next "big things" in computer hardware engineering? - <AUTHOR> Hi,
i just read an article about a new storage method, kind of a persistent storage based on DRAM technology. I asked myself, what will be the next big steps in hardware engineering?
I'm not talking about DDR8 Ram or 7nm Processors. I think about steps like HDD to SSD, which made all computers faster and more silent. Fundamental new hardware designs which will make a computer better.
What do you think? <comment><USER2> What I would like to see, is fewer wires.

Was tidiying up behind my desk with 3 monitors on. Rear is just a spiderweb of power cables, display cables, usb cables for all accessories, usb extensions to power monitor ports, audio cables to speakers and headphones etc.

Something has to give

SSD switch is funny in that it improved personal computers and laptops massively, yet spinning rust disks are more than ever important in data centers. And in NAS at homes.

Can you think of other examples of such improvements before SSD switch, to get an idea of what we are looking for.

LCD monitors come to mind. Occupy less space, weigh massively less, nicer and bigger picture.

Centrino style platform for laptops, standardising connectivity and networking, made them practical for everyone.

</comment><comment><USER3> Photonic computing.</comment>


Madhya Pradesh man cycles 105km to ferry son to Class X exam centre - <AUTHOR> https://www.theweek.in/news/india/2020/08/19/madhya-pradesh-man-cycles-105km-to-ferry-son-to-class-x-exam-centre.html <comment><USER3> Many people in India are so poor they barely survive, and dream of having their children in some kind of desk job so they can earn money. Any money. But not all parents love their children as much as this dad did; the reason most families stay poor forever is the guardian (usually the father) of the family is indulged in cigarette, tobacco or alcohol consumption. What they earn goes to fulfill the most basic needs of the family, and on intoxication.

Hundred of thousands of families stay that way for years until the kid grows up, and either gets a job, or continues like the guardian. It's sad, but true story that I lived through. Not really an Indian, but from a similar kind of community in its neighboring country. I'm telling all this because this kind of kind gesture from a father is rare, that's why it became a news.

Many people ride bicycles everyday for work - my father rode 30kms a day for probably 12-13 years because that was the only vehicle we had. He'd have rode 105 any day for me. Kudos to all the dads who put their children before anything else!

<comment><USER4> > the reason most families stay poor forever is the guardian (usually the > father) of the family is indulged in cigarette, tobacco or alcohol > consumption.

Any studies or citation or is this your personal experience extrapolated? I have seen many bad/uncaring poor parents without any addiction(unless you can call drinking tea addiction). Good parents in poverty is a blessing though and definitely a major part of their children's success.

<comment><USER5> This common knowledge enough that this does not need a citation. Its not just the addiction part, votes get caste on whether the candidate will hand out some free alcohol, a color TV and some cash as a one time incentive to get their vote. The thing is that this works in many states of India. Since getting the votes is so easy (although there is some arms race among the candidates) it should not be a surprise that after being elected these candidates are after their own interest (wealth grab) than do their job of representing the people.

The problem is much more deep-rooted than addiction. There is a large class of people who have not benefitted from the democracy in the ~60 odd years of independence. The way they think is, "I am not going to get anything out of this anyway, neither did my earlier generation. This way I will at least get a TV and some free booze"

<comment><USER4> > The problem is much more deep-rooted than addiction.

Yes, that's my point. There are more severe problems in india than addiction to alcohol and tobacco ruining kid's life. Handing out free things during election to people who are below poverty line has nothing to do with addiction. I was born in a state where handing out rice was very effective.

</comment></comment></comment></comment><comment><USER6> There seems to be a slight misunderstanding regarding the 'exam' and 'testing' context in this article. I don't know if it is translated or was just poorly written.

Just to be clear, this awesome dad was taking his son to another town to appear for the 10th grade Math examination so that he does not fail the paper. Off-topic, but I am surprised that these exams are still being conducted. Most academic examinations are suspended as of now and may resume next month.

Anyways, though the situation was like this because most public transportation has been shut down, it is still a sad state of affairs - and I don't know what to do about it nor what can be a solution.

Respect for this father who is striving to push his son at least a level up the economic ladder via education.

Decades ago, my father used to walk several miles a day to attend school. His dedication and hard work has probably pushed my family through 2 generations- worth of growth. I'd say we are upper middle-class in India right now. And I am eternally grateful to my family for their efforts.

Kudos to this father, and others who strive through utter misery to rise above the hand life has dealt them.

<comment><USER7> The link is to Google Translate. Google Translate is known for having translation errors (but it's still good for a machine translation).

</comment></comment><comment><USER8> Context:

</comment><comment>==

>> Due to the closure of buses (Public Transport closure) due to Corona epidemic , Shobharam took his son off his bicycle at 12 o'clock on Monday night.

There are many stories like this where in one mother drove 1400 km in her motorcycle/scooter to get her son from a place where he was stuck.

[https://www.thehindu.com/news/national/telangana/a-mothers-p...](https://www.thehindu.com/news/national/telangana/a-mothers- protective-instinct-makes-her-drive-to-get-her-stranded-son- back/article31307458.ece)

In normal times, these people would have traveled by buses or trains.

One more:

A five-year old flies alone to be with his parents:

[https://timesofindia.indiatimes.com/life- style/parenting/tod...](https://timesofindia.indiatimes.com/life- style/parenting/toddler-year-and-beyond/5-year-old-travels-all-alone-during- the-lockdown-to-reunite-with-his-parents-wins-the-internets- hearts/articleshow/76005200.cms)

</comment><comment><USER9> I know it's an idea that would kind of... eat itself, were it reality. And maybe this is some shitty first-world take and I'm an asshole for thinking it or whatever. It's even a pretty unfair idea, really. But every time I read these sorts of human interest stories I wish there were a "send them some money" button. Again, an idea that would ruin itself immediately. I know. But failing that I'd rather not have them reported at all. This case is different, sure, because it's not targeted at an English-speaking audience at all, but we get them in our media, too.

Some of those Yazidis in northern Iraq a few years back? Some of the people trying to get into Greece who got interviewed? Man I wished, as soon as they were someone halfway stable, I could have dropped them some cash. An amount I wouldn't have missed that much would have made a difference. This is an utterly dumb "take", I know, for so very many reasons not least of which is that I could be doing more locally and that's something I _actually could do_ , but it's still all I can think about when I see these kinds of stories. How much help even $100 would be some of these places, if only it could get there. And then my next though is how dumb that is. And that I wish these stories would just go away if I can't do anything about them.

<comment><USER10> Life is really hard in most parts of the world and being born in a middle class family is itself a blessing for most when you realize the cruel economic cycles that keep kids of poor people poor.

There was a lot of coverage from India when they imposed their lockdown and the worst affected were the poor again. The crisis itself has a Wikipedia page for it.[1] Quoting from it:

> With factories and workplaces shut down due to the lockdown imposed in the > country, millions of migrant workers had to deal with the loss of income, > food shortages and uncertainty about their future. Following this, many of > them and their families went hungry. Thousands of them then began walking > back home, with no means of transport due to the lockdown. More than 300 > migrant workers died due to the lockdown, with reasons ranging from > starvation, suicides, exhaustion, road and rail accidents, police brutality > and denial of timely medical care.

[1] [https://en.wikipedia.org/wiki/Indian_migrant_workers_during_...](https://en.wikipedia.org/wiki/Indian_migrant_workers_during_the_COVID-19_pandemic)

<comment><USER11> According to reports, 1crore 70lakh jobs in organized sectors have been lost.

Middle-class is in no way lucky, they are overburdened by toll taxes, income tax officers harassing them, local goons not letting them carry on business, politicians and public servants asking for money.

</comment></comment></comment><comment><USER12> One of many such stories of indomitable courage and persistence is that of Jyoti Kumari, a 15-year-old native of Bihar's Darbhanga (Indian village), who travelled on a bicycle for 7 days carrying her wounded father and covered more than 1,200 km from Gurgaon in Haryana to her village because public transport was shut due to Covid.

[https://www.livemint.com/news/india/bihar-girl-who- cycled-1-...](https://www.livemint.com/news/india/bihar-girl-who- cycled-1-200km-carrying-injured-father-offered-trial-by-cycling- federation-11590083089347.html)

</comment><comment><USER13> Few people on this website will ever be able to understand what it is to be poor like this. I cannot even grasp one corner of the idea.

<comment><USER14> don't you have some degree of poverty where you live, or have you never interacted with someone who earns less then you?

</comment></comment><comment><USER15> So much subtext about the undeserving poor. Except that it's not even wrong.

To give just one example, rates of alcoholism are higher in South India - <USER2> in TN and Kerala [1] - where endemic poverty of the Madhya Pradesh kind doesn't exist.

We can agree that addiction is widespread and there's been a world wide shift in the spending habits of people who earn less than a dollar a day. Banerjee/Duflo's Nobel Prize is based on that work [2]. Some relevant quotes:

> Yet the average person living at under $1 per day does not seem to put every > available penny into buying more calories. Among our 13 countries, food > typically represents from 56 to 78 percent of consumption among rural > households, and 56 to 74 percent in urban areas. For the rural poor in > Mexico, slightly less than half the budget (49.6 percent) is allocated to > food.2

> Of course, these people could be spending the rest of their money on other > commodities they greatly need. Yet among the nonfood items that the poor > spend significant amounts of money on, alcohol and tobacco show up > prominently. The extremely poor in rural areas spent 4.1 percent of their > budget on tobacco and alcohol in Papua New Guinea; 5.0 percent in Udaipur, > India; 6.0 percent in Indonesia; and 8.1 percent in Mexico.

> Perhaps more surprisingly, spending on festivals is an important part of the > budget for many extremely poor households. In Udaipur, over the course of > the previous year, more than 99 percent of the extremely poor households > spent money on a wedding, a funeral, or a religious festival. The median > household spent 10 percent of its annual budget on festivals.

5% is a lot on alcohol, but cannot be the major cause of poverty, festivals being an even bigger outlay. We also know that in India those spending habits are gendered, which is why prohibition campaigns have been very popular among women voters.

Nevertheless, the idea that the poor are poor because of their 'poor values' is one of the oldest tropes in the book. Please don't spread stereotypes that are neither grounded in data nor in actual lived experience.

[1] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7014857/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7014857/)

[2] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2638067/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2638067/)

</comment><comment><USER16> Higher Education is the best way to escape from Poverty; Return on Investment in Education is 8.8% [https://archive.is/uaLy6](https://archive.is/uaLy6)

</comment><comment><USER17> next time you complain that about virtual school...

</comment><comment><USER10> Searching the story title on Google throws up some English language coverage as well. Adding an alternative to translated page: [https://www.theweek.in/news/india/2020/08/19/madhya- pradesh-...](https://www.theweek.in/news/india/2020/08/19/madhya-pradesh-man- cycles-105km-to-ferry-son-to-class-x-exam-centre.html)

<comment><USER18> Changed to that from [https://translate.googleusercontent.com/translate_c?depth=1&...](https://translate.googleusercontent.com/translate_c?depth=1&nv=1&pto=aue&rurl=translate.google.com&sl=auto&sp=nmt4&tl=en&u=https://www.industryadda.com/%25E0%25A4%25AE%25E0%25A4%259C%25E0%25A4%25A6%25E0%25A5%2582%25E0%25A4%25B0-%25E0%25A4%25AA%25E0%25A4%25BF%25E0%25A4%25A4%25E0%25A4%25BE-%25E0%25A4%25A8%25E0%25A5%2587-%25E0%25A4%25AC%25E0%25A5%2587%25E0%25A4%259F%25E0%25A5%2587-%25E0%25A4%2595%25E0%25A5%258B-%25E0%25A4%25AA%25E0%25A4%25B0%25E0%25A5%2580%25E0%25A4%2595/&usg=ALkJrhhxisFA_C6guT_SODZrTr- RrfhB6w). Thanks!

</comment></comment><comment> crooked-v Huh, so Indian media has misery-porn-framed-as-supposedly-uplifting-news stuff too.

<comment><USER11> The system is actually very insensitive towards such people and guess what? When these people struggle hard, clear all test - they go for robbing the nation with corruption and their justification for that has always been "when I was struggling and poor, no one came to my rescue now it's my turn and I deserve all the money accured through corruption" and it creates more poverty.

Poor people don't study to join Google or Facebook in India. They study for government jobs like customs officer, railway officer, Indian adminstrative service, Indian Police Service etc... all jobs where you can accure vast sums of money.

The amount of money these officers make offrecord is going to eyewater even westerners. In some cases, the wealth they posses rival even high end executives at Google and Facebook.

Most people understand and acknowledge this system. They know the only way to out is through it, they stay in system - stay hard, make connections then proceed to benefit from corrupt system.

<comment><USER19> Do you know a lot of civil service officers? Because you seem to think that the ranks of the Union public services are mostly filled with highly corrupt officers who were born into poverty. Whereas the truth is that although I know some officers who were the first to get a degree or a high school certificate in their family, I also know of many more officers who come from the upper class, and even some who've been in colonial administration for generations.

<comment><USER11> >Do you know a lot of civil service officers?

Not saying most are corrupt but my experience with customs department, tax department etc... made me realize how corrupt they are.

Which does not refute the point I am making because a few corrupt people are enough to take down the system.</comment></comment></comment></comment>


This is how SaaS Startups *should* sell - <AUTHOR> http://thoughts.jeffvincent.me/selling-vs-sales-reps <comment><USER2> Great points made, but you sound like your hating on salespersons, honestly ;)</comment>


SEO Isn't Dead, But You Need to Act Smarter (And 5 Easy Ways to Do So) - <AUTHOR> http://www.micrositemasters.com/blog/penguin-analysis-seo-isnt-dead-but-you-need-to-act-smarter-and-5-easy-ways-to-do-so/

<comment><USER2> The data are right on. Good stuffs Alex :).</comment>


Why I think we can predict the future - <AUTHOR> https://www.gatesnotes.com/Health/Professor-Hawking-Fellowship-lecture <comment><USER2> I'm certain we can predict the future. We do it all the time without noticing or accepting that we are. We are so good at it, we are disappointed when we are wrong.

I think we actually predict the future correctly more often than not. The question isn't, can we? but rather, to what resolution can we?</comment>


Tide turns for Polish émigrés, lured home by booming economy - <AUTHOR> https://web.archive.org/web/20191210203515/https://www.ft.com/content/5ad40460-15e3-11ea-9ee4-11f260415385 <comment><USER2> -

<comment><AUTHOR> Thanks for your opinion. This link works.

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


Please Criticize my Fitness Site that Stores Workout Programs - <AUTHOR> http://www.funniestlift.com I want to create a site that can easily store workout programs.  This is my first version.  It would be a lot prettier but I'm learning and trying to get feedback asap <comment><USER2> What is it? What does it do? Why do I need it?

Having a meta title would be a good start to describing the site.

<comment><AUTHOR> Thanks, done! It's for anyone that wants to share their workout programs or use others they find.

</comment></comment><comment><USER3> Single biggest thing you did right: Got an absolute minimum product up fast, then asked potential customers to criticize.

Things you could improve: As others said, not clear what this is. Explain it in 10 words or fewer, make them big, bold, and centered. The interface needs to improve...there are too many steps in creation / editing (why must I create the wrong name first, then edit it to correct value?), there's no way to create / modify multiple elements in one step, and it's not clear how many steps there are, so I quit out partway through.

Good luck with it.

<comment><AUTHOR> Thanks for the input and luck!!! Okay, I will make it clear with big font on the home page what the purpose is. I understand it's difficult to use! Haha, I have trouble with it myself! I tried using Javascript to do it all on one page as seen here [http://stackoverflow.com/questions/741576/need-help-with- rai...](http://stackoverflow.com/questions/741576/need-help-with- rails-2-3-four-level-nested-form-javascript-function) This is the best I could do with having it work at all.

</comment></comment><comment><USER4> Neat idea. Could be useful. A couple of thoughts...

1) I agree with everyone here about the need to streamline the process. Once screen for entry, etc...

2) What does each term mean? I know most of them, but whats an "exercise group?" People who don't work out a lot may not know what other things mean. E.g. reps = repetitions. Put something like "number of repetitions" instead.

3) A lot of workout programs are something like: Run a little for 4 weeks. Run a medium amount for 4 weeks. Run a large amount for 4 weeks.

If thats how I'm doing things, I don't want to enter 12 weeks worth on info, I want to enter 3 weeks and have each one repeated. I'm not 100% sure how I would redesign the interface, for this, you can try a few things out...

4) Why are the numbers in drop downs? To me, thats very unnatural (others might disagree).

5) Having it so that anyone can edit and delete a workout could be a bit chaotic.

Edit: 6) One more. After I create a workout, the link at the bottom says "Index." What does that mean? A button that says "Done" or something would be more clear.

<comment><AUTHOR> Thanks for the feedback!

1) I agree it's difficult to use. Streamlining is a technical problem.

2) I also agree it's difficult to understand. I made up the term 'exercise group.' It's to group the different sets and repetitions for one exercise. I need to make the process more clear and easier to use. This kind of ties in to the first problem. I tried using javascript to have it all on one page in a dynamic fashion but wasn't able to piece it all together. This is the first step in getting a useful interface.

3) This is very interesting to me. I came across this issue with swimming. I looked up some swimming workouts and they looked like nothing I had seen before. I'm familiar with weightlifting. I had thought of being able to copy workouts from one to another. What about being able to copy weeks and then being able to tweak?

4) Do you feel more comfortable with fields?

5) I imagined everyone would have an account.

6) Ok, haha yeah I need lessons on design stat!

Thanks again

<comment><USER4> 1, 2) Nice. Wish I could give you technical help, but I don't do any web development at all. I'm sure others here will be able to help though. But, if your having trouble, I'd suggest create something much smaller, with just text fields for example, and try to build it up slowly. Once you get used to it, you can create this interface.

3) Yeah, thats a good idea. A "same as last week" button and a "copy week" button would be great. This can only happen once you re-design the workflow though... I imagine it such that you click a "add a new week" button and then fill it in, so once you do that, you can have these buttons.

4) Yeah. A warning if someone enters something thats not a number/integer, but a field is better (I prefer red text saying "this should be a number" that comes up next to the field, but thats up to you).

5) Even still. If I put up a workout, who will be editing it? How do I know they'll be editing it in a way thats really in the spirit of the original workout. What if a professional weightlifter comes in and starts making the workout more hard core? It might be "better" but not really good for a certain kind of audience?

This is not to say you can't find a way around this. You may want to consider how people get "access" to a workout. If you do restrict access though, a discussion page would be good. I don't see this as an immediate issue, but something you should keep in the back of you mind and think about as you go forward.

6) :) Its just the fact that your a "computer person" so an "index" is something you think about.

P.S. Its good that your taking all the feedback positively.

<comment><AUTHOR> Cool thanks for sharing your thoughts, much appreciated.

1,2) No worries, I'm in no hurry and I imagine learning web development is a slow process. I'm not sure how I'll improve from this point. I could use text fields for everything on a single page but there are dynamic aspects that are hard to get around. For example how do I enable it to take programs with varying number of weeks.

3) I really like the idea of a drop down boxes of the already completed weeks and a "copy week" button next to it; thanks for the inspiration on that!

4) Okay I just thought fields would be easier because you can use your keyboard and press the digit and tab to the next item. The whole site tabs well, which is how I've been using it. I should mention that!

5) Sorry I wasn't clear. I meant that workouts wouldn't be editable and be tied to a user's account. I imagined that anyone could do variations of a workout easily.

6) I guess lol. 'index' is in 'link format' and there's no button was my subconscious reasoning for everything's done I guess.

Yah I'm taking the criticism so well because I care about the final result ;) Thanks for the extended input!!!

</comment></comment></comment></comment><comment><USER5> * Make the delete less prominent and don't depend on Javascript to confirm a delete. If I have it off, my workout plan disappears with a misplaced click.

* Answer "Why am I using this tool?"

* Style the table so my attention is drawn to the part that is most important, probably the table headers or the "Create program" button

* When adding a program, give me some suggestions; muse me. Give me examples like "Run 40 minutes" or "Do 300 pushups (like a boss)"

* On the main page, make the program name link to the show action. The word "display" doesn't help me at all, but linking the name shows me what the page I will click on is going to be

* Don't ever use a <font> element. It's unnecessary and inflexible. CSS is your friend.

I have more, but you're doing a great job so far. It's coming along great!

<comment><AUTHOR> Thank you for your input!!

1) Ok I'll dive into why I have javascript confirming a delete.

2) This tool is to discover workout programs or ideas you see in another workout listed. You can also share your own.

3) Okay, I'll restyle the table to make it more clear.

4) Okay, I'll add suggestions to make it easier.

5) Okay I'll change the link show to be the program name highlighted.

6) Yeah, I need to learn some basic CSS.

Haha, thanks! Feel free to tell me whatever you want. It's in its infancy. The more insight the better! Thanks again!

</comment></comment><comment><AUTHOR> Clickable link. Thanks for any advice, input, whatever!

<http://www.funniestlift.com>

The reason I bought the name funniestlift was because after doing Olympic Lifting for a year I realized it's really hard and being upbeat about it is a much better outlook. I want to create a fun, free, and valuable website for programs of all types!

Hahaha the titles you guys are coming up with are making me laugh! Haha, the reddit meme made its way onto my site!

</comment><comment><USER6> It looked so amateur. The interface said 'hello world' to me, and then I left within 2 seconds. Put at least some serious effort, and feel you have something of value before getting people to spend time criticizing something for you. I feel a bit insulted, as if being an HN reader puts my time into the value category of someone doing cent-work on Amazon Turk. At the level of work you've put in thus far, keep the round table of 'consultants' to your mother.

True story. Remember to add it to your notes.

<comment><AUTHOR> PG said to ship something fast and minimal.

</comment></comment><comment><USER7> It is really unclear what the process is when adding workouts. The only button you have is "next", and there aren't any instructions given. Also, it would be better to have all of the inputs available to enter at once when adding a workout, rather than clicking "next" like a wizard might have.

<comment><AUTHOR> I completely agree with you. I was working with javascript before to do it all on one page as seen here: [http://stackoverflow.com/questions/741576/need- help-with-rai...](http://stackoverflow.com/questions/741576/need-help-with- rails-2-3-four-level-nested-form-javascript-function) But I wasn't able to successfully implement it. I tried to make it easier by showing the program in progress at the bottom. I'll add instructions to make it easier, thanks a million!

<comment><USER7> I think you're trying to over-engineer the form with the nesting. You can make the interface for adding a workout very simple. I agree with others on here, go check out what other workout sites are doing and see if you want to do something different from them or make it more unique, otherwise you're going to have a hard time competing.

<comment><AUTHOR> What do you have in mind about an interface?

Please keep listing the other sites. I didn't know of Hi-Tech trainer.

What would differentiate this site is that this isn't specifically for trainers. It's for everyone to share their workout programs.

There are forums I'm aware of like BodyBuilding.com and T-Nation. They don't have user generated programs. I also want to make it easy to use. I'm not there yet.

Thanks for the input!!!

What I think I know what others may not is that there is a ton of good programs out there just sitting on peoples' desks, not being utilized by everyone.

<comment><USER7> I don't know. I am a weight lifter like you but I don't keep much of a log. I tried one for the iphone but I got sick of substituting different lifts for others because they weren't in the database. I think you have to differentiate between casual workout-ers and more serious ones, because they will both accept different things.

<comment><AUTHOR> Thanks a lot for taking to time to write me feedback. I really appreciate it and it's comments like these that help me out a bunch!!!

What about if you could copy the program on the site and modify it to exactly what's available to you! I see what you mean about casual and serious workout- ers. I think it has to do with goals. Like, the more serious the workout-er, the more specific the goal. "I want to add 50lbs to my squat" is a lot more specific than "I want to stay in shape". If the goals were clearly labeled maybe that could help.

Also, I think it's possible to find fun workout ideas in the database. I'm not sure what, but comboing swimming and doing other stuff in one workout is fun to me and isn't really standard.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> I was thinking this site would be along the lines of [http://startingstrength.wikia.com/wiki/Category:Training_Pro...](http://startingstrength.wikia.com/wiki/Category:Training_Programs) but flushed out and easy to follow

</comment><comment><USER8> This looks like a basic rails scaffold using nifty-generators. Also there is no validation on any of the forms.

<comment><AUTHOR> Yes I used scaffolding to start and tied things together. I want to be a web developer some day. I'll write validations as one of the things I need to do, thanks!

</comment></comment><comment><USER9> not clear what the goal is. If the goal is to track workouts there are lots of better programs you should look at before expending too much effort on something that isn't significantly different.Hi-Tech trainer comes to mind.

<comment><AUTHOR> Cool, I'm looking at it right now, thanks! The idea I had was everyone could pool their individual program ideas. Kind of like an open database for workout programs.</comment></comment>


How big is a Petabyte, Exabyte, Zettabyte, or a Yottabyte? - <AUTHOR> http://highscalability.com/blog/2012/9/11/how-big-is-a-petabyte-exabyte-zettabyte-or-a-yottabyte.html <comment><USER2> "500 Megabytes: A CD-ROM OR The hard disk of a PC"

Made me think of a computer way long ago I had with 500 and sure enough the blog post is actually referencing an article from that time period.</comment>


PG&E is shutting off power in Northern California again - <AUTHOR> https://www.pge.com/en_US/safety/emergency-preparedness/natural-disaster/wildfires/psps-service-impact-map.page <comment><USER2> 3rd time in 3 weeks. I joked that the difference between a 1st world and 3rd world country is that a 1st world country will tell you before they cut you power for 2 days.

<comment><USER3> Problem is, the state has shrublands and, grasslands and forests which historically have been prone to natural fires. Fires happen. People also like building and living in these areas.

The state regulates PG&E, sets rates, and also establishes liability on the utility for incidental fires. So the state regulates them, they follow regulation but when something anticipated happens they're still liable.

So the natural thing to do in that conundrum, as the Wargames villain quoth: the only winning move is to not play.

Ergo they take their energy and go home.

<comment><USER4> PG&E has consistently _not_ invested in maintaining the land around their power lines. This is an entirely preventable problem and caused by a lack of long term investment in infrastructure maintenance.

They've admitted they don't have the time, money, nor manpower to go out and play catch up with all the maintenance that they have deferred, and now the public (their customers) is suffering.

They deserve to go bankrupt from this.

<comment><USER3> I hope so too. I'm looking forward to seeing how much better the state runs what then will be a department.

</comment></comment></comment></comment><comment><USER5> Not-a-PG&E-customer here: where's the animus against _specifically_ catching up on infrastructure maintenance debt coming from?

Corollary: why was said animus not directed to PG&E at the time that maintenance was neglected?

<comment><USER6> I haven't followed this closely, but last year's camp fire was blamed on poorly maintained infrastructure and the PG&E line was that there was a lot of poorly maintained infrastructure around the state.

To the corollary; most people don't complain about the lack of maintenance until the lack of maintenance becomes a clear problem.

That said, I do not know what sort of details PG&E put out in prior reports. I don't know what, if any, public oversight was in place and I don't know if there's merit to the idea that PG&E has been deferring maintenance in exchange for short term profits.

<comment><USER7> The regulator specifically approves the maintenance levels.

</comment></comment></comment><comment><USER8> Sigh. PG+E texted me to say that _maybe_ our power would get turned off. I immediately checked online, where it says that our power will not get turned off. I guess they have multiple databases that are out of sync with each other?

I am not an expert on electricity infrastructure. However, as a software engineer I can tell that PG+E's software systems are low-quality and full of bugs. I can only assume that the rest of their operations meet the same low quality standards.

</comment><comment><USER9> Has anyone seen any plausible estimates of the additional fire danger arising from the use of all the small generators that are firing up during these periods?

I'm curious if all this represents a greater risk than powering up the lines. (But at least PG&E won't foot the bill...)

</comment><comment><USER10> I notice some of the over the air TV channels have no signal. Wonder whether the PGE power shutoff has affected the TV towers.

<comment><USER11> Very likely given where they are likely to be situated

</comment></comment><comment><USER12> It's fascinating that we're apparently tolerating them turning people's electricity off _and_ burning down large parts of the state. You'd think we'd only accept one or the other. Or in a crazy utopian world, neither!

</comment><comment><USER13> This sounds like something you read about in the undeveloped world.

Something is very wrong that this is happening in the USA, let alone a state with the 6th largest GDP in the world.

</comment><comment><USER14> I think the rich and wealthy valley brains need to solve this problem too. This company is definitely done, they already have caused a fire despite outages.

<comment><USER15> PG&E is a government granted monopoly.

Not much SV brains can do about that.

In other words, this is a problem of power, not brains. (no pun intended...)

</comment></comment><comment><USER16> For those who can afford it. It's a great time to get home solar. Even a small 3.7kW solar panel system can help out with the basics if not more.

<comment><USER17> Small battery-less grid-tied systems go down when the grid is down, it's a requirement for safety so a malfunctioning grid isn't kept hot by residential sources.

I do think this will sell a bunch of powerwalls to rich californians though.

</comment></comment><comment><USER18> It's like they're trying to get nationalized

<comment><USER19> At some levels of regulation, there is no meaningful difference between private and nationalized. Owning the means of production includes certain rights like deciding what to do with the capital/equipment. Every regulation that controls your actions with the equipment or what your workers can do is, in part, the state seizing the means of production. Similarly with taxes. The difference between a nationalized PG&E and a private one is that if the state lights a forest fire due to poor maintenance on the lines, the state isn't going to allow you to sue them.

<comment><USER18> >At some levels of regulation, there is no meaningful difference between private and nationalized.

The one regulation missing for this in PG&E's case is mandating profit reinvested in infrastructure ahead of shareholder dividends, buybacks, and|or executive compensation.

<comment><USER19> I think you'd get better results with a system that increases competition and incentivizes things like quality of service. The competition has the side benefit of decreasing those profits you seem concerned about.

Forcing them to spend money internally just incentives internal costs to increase, not to improve quality of service.

</comment></comment></comment></comment><comment><USER20> i have this conspiracy theory: PG&E is normalizing power shutdowns around this time of year and on Nov 3, 2020 they'll shut off power to specific areas while people are voting for the next president.

<comment><USER2> I live in the outage zone so i've been hearing some conspiracy theories.

Trying to get a govt bailout, diverting power to a big secret government project, or (here's a good one) prepping us for more outages so they can start taking people (specifically anti-zionists) in the night, Bolshevik-style. lol.

<comment><USER20> those are some interesting theories. the big secret gov't project is probably like stranger things then. they need the power to drill a hole into the upside down!</comment></comment></comment>


What's In a Side Project? - <AUTHOR> http://founderdating.com/whats-in-a-side-project/

<comment><USER2> really interesting - had no idea so many of these companies started as side projects. also cool to see that many of the ideas derived from a need. sounds like a great way to start a side project is by working on something that you personally have a need for.

</comment><comment><USER3> Thrillist, Mashable, and Lyft are a few other companies that started as side projects.

<comment><AUTHOR> Mashable did too? Didn't know that.</comment></comment>


Top Things That Annoy Programmers - <AUTHOR> http://www.kevinwilliampang.com/2008/08/28/top-10-things-that-annoy-programmers/

<comment><USER2> Being thought of as a "subordinate" (I mention this, because he talks about programmers as being subordinates).

Am I the only person on earth that rails against this? I trade my time for money, but I am no-one's "subordinate". To me, a manager is someone who makes sure I can get my work done and checks on the overall progress.

I guess I'm asking for a mighty downvoting but I really want to know if others think its okay and why its okay to be a subordinate (especially when the superordinates are so often less than impressive human beings).

<comment><USER3> That's funny, because "subordinate" has replaced the previous generation's "inferior" as the commonly-used term for an employee down a step in the org chart.

However, to answer your question: if someone can determine whether you get to keep your job, whether you like it or not you are that person's subordinate.

<comment><USER4> "if someone can determine whether you get to keep your job, whether you like it or not you are that person's subordinate."

Trying to get my head around this. What does "keeping one's job" even mean? isn't there still a mutual contract, and both parties can break out of it? So the boss can act on behalf of the company, and you can't. But presumably you can still quit the job on your own decision. Does that make the boss your subordinate?

It seems the boss has more leverage, as the worst you can do to him is quit, whereas he can fire you. But both parties can hurt each other.

I hope I'll never have to enter such an environment again.

<comment><USER3> _Trying to get my head around this. What does "keeping one's job" even mean? isn't there still a mutual contract, and both parties can break out of it? So the boss can act on behalf of the company, and you can't. But presumably you can still quit the job on your own decision. Does that make the boss your subordinate?_

No, but I suppose it might imply that you could be your own subordinate. Since the boss can fire you, but you can't fire your boss, you have a subordinate relationship.

</comment></comment></comment></comment><comment><USER5> I would actually say that my #1 is when a client (non-programmer) will tell me how easy or difficult it will be to perform the task that they have just assigned me, in an attempt to have their fee waived/lowered.

A typical conversation would involve them saying something along the lines of:

"I just need you to do this (insert non-trivial task) for me. It's really easy, it should only take you about five minutes."

<comment><USER6> Amen. I hear this all the time.

</comment></comment><comment><USER7> Top-ten lists have been getting more and more annoying to this programmer. They're surely somewhere in the top ten by now.

</comment><comment><USER8> Interruptions - absolutely the worst thing ever (Im surprised it was only #9)

I have the somewhat mixed fortune to be currently living with my parents (hmmmm) - which has it's advantages but, man, the interruptions. I have to go to a coffee shop or my girlfriends at weekends just to be able to do an hours coding in peace :D

</comment><comment><USER9> What annoys me is being thrown on to projects without asking what _I_ am interested in doing. I don't intend to do a shit job, but you're not going to get my best work if I'm not creatively invested in my work.

<comment><USER10> You could learn to love the mundane aspects of your job. Seriously though, no one expects you to be creatively invested in that fix to the contact form, but that's the work people need done.

<comment><USER11> This is thinking like a user, not thinking like a programmer. As a programmer, you don't want to fix the contact form, you need to fix the need to fix the contact form. This is how you avoid deathmarch projects; you program away the tedious parts so that you have a functioning system instead of a bunch of code that does stuff.

Just sayin'.

<comment><USER10> I'm thinking as an employee, and not as a dreamer living in a world where the boss asks you what sounds like fun.

<comment><USER11> But programming actually ends up taking less time than coding. Coding a page takes an hour. Coding twenty pages takes twenty hours. Programming a page maker takes a day. Making a million pages then takes no additional time.

Unless you really only have one page that never needs to change (and when has _that_ ever happened?), programming is going to beat coding every time. And it's more fun!

</comment></comment></comment></comment></comment><comment><USER12> I don't think that programmers should be writing user documentation. API documentation, yes. But not documentation geared towards users. It should be reviewed by the programmers who wrote the system, but they shouldn't write it.

One thing that annoys me are arbitrary deadlines. I once had a "manager" tell me that to help me out in working faster, he's going to put a deadline on the project.

Of course that's why the project was late! It's because I had no deadline. It's not because it needed 10 programmers and I was the only one working on it. Needless to say, I didn't work there for long.

</comment><comment><USER13> My old code is fine, so let me put in there a new number 1. "How long will it take?" - there's nothing I fear and hate more than having to do time estimates. And yes, I know that they also help me ...

</comment><comment><USER14>
      10. Requests that begin with, "All you have to do is...".
      9. Deadlines fabricated by others.
      8. Single character variable names.
      7. Being spoonfed requirements on a need-to-know basis.
      6. SQL Selects within iterations.
      5. Requests that describe how, but not what.
      4. Variable names that don't describe what they are.
      3. Meetings without beer.
      2. Dropping everything for the emergency du jour.
      1. Top 10 Lists that infer that all programmers think alike.

<comment><USER15> You get meetings with beer? What is this? Madison Ave where everybody has a bottle of scotch in their drawer?

<comment><USER16> Meetings with beer work well as a time limiter if you don't let people leave to use the washroom. The lenght of the meeting becomes bounded by the participants bladder size.

</comment></comment></comment><comment><USER17> _"Management that doesn't understand programming"_

Huh? My worst managers have programmers trying to break into management while keeping their hand in programming by telling me how I should structure my programs. My best managers were non-programmers who had deep understanding of the development process and thus would get out of the way while did my thing.

<comment><USER18> Semantics, not pedantics. The article means "management that doesn't understand programming" in the sense of enabling development, not in the sense of "I wrote quicksort once".

</comment></comment><comment><USER19> Coding standards documents written by people who can barely program.

<comment><USER20> Coding standards documents written by people who think coding standards are about which side of the * the space goes on. :-)

</comment></comment><comment><USER21> "Can't you just..."</comment>