Modernity, Faith, and Martin Buber - <AUTHOR> https://www.newyorker.com/magazine/2019/05/06/modernity-faith-and-martin-buber <comment><USER2> This is a really thoughtful piece. I'd never heard of Buber before this

<comment><USER3> Check out Zadie Smith's fascinating treatment of Justin Bieber as love object in Feel Free [1], where she argues Bieber and Buber are, after all, English versions of the same German name, so in her mind, the pop star and Jewish philosopher are spiritual cousins - both forever obsessed about personal relationships. The entire book has this sort of unorthodox and completely compelling insight and is a delight!

Edit - a bit more about Feel Free: [1] [https://www.nytimes.com/2018/02/21/books/review/zadie- smith-...](https://www.nytimes.com/2018/02/21/books/review/zadie-smith-feel- free.html)

</comment></comment><comment> vincent-toups "Such haziness was inevitable, because the questions Buber was trying to answer were the most ineffable ones of human life: What is the meaning of our existence?"

This is often said, but I don't feel like its obvious in any way. Questions can be big and hard to answer, but that hardly means we _must_ speak about them without precision.

My sense is that people use oblique language on these questions because they dislike the answers that precise language makes unavoidable.

<comment><USER4> Such haziness is only inevitable for those who don't know but wish to act like they know more than others. The first step to wisdom is in honestly admitting what one does not know. Most people are ego- and pleasure-driven and therefore would rather make up something pretty or convenient or whatever, instead of admitting that they don't have the answers.

"What is the meaning of our existence?" is not at all hazy but is far more simple (yet subtly complex) than people are willing to admit; of course, people are generally not willing to admit that another person can have knowledge they do not, especially if they are deeply wedded to their particular culture (e.g. academic philosophy) and/or faith. And, yes, I do know the answer to this question, and, yes, the answer is both very simple and deeply complex (very much in the realm of "Not 2, not 1").

The simple meaning of our existence is to enjoy life, to be happy. The complexity arises in a couple of dimensions. First, we need to live in societies to survive and prosper. As such, we have an innate morality that pushes us away from selfish, animalistic competition and toward selfless, humane cooperation, across all artificial divisions [e.g. ethnicity, form of religion (including none at all), sexual preference and identity]. This morality is a part of our being and is tied to the inner feelings we get when we interact with our fellow human beings and even the Earth itself (for when we harm the Earth we harm others). Our morality affects how we think and, therefore, how we approach life with our attitudes and behaviors; each society imparts its own moral teachings upon its acolytes, from Dr. King's univesal love and service to the purely capitalistic callous disregard for the suffering of others to the purely evil ethnic hatred and violently oppressive practices by various groups.

The inner feelings of happiness or unhappiness we experience are what we reap from what we have sown in others, combined with our level of self-evolution, for we are the only creatures with a free will and a mind that can evolve itself within its life to achieve moral perfection. As such, we are the only creatures that live under the most subtle of laws: the Law of Karma. This can be evidenced in the general misery of the wealthy and the rather surprising level of joy of the people of the projects that I currently live in; yes, there are exceptions to this because there are, of course, people in these projects that look at others as Buber's "It" and there are wealthy that seek to uplift those less fortunate than themselves (though they are few and far between). It is obvious to anyone living honestly that material wealth does not determine happiness, though it sure does buy plenty of pleasure, most people confusing the two for the simple fact that most people are only concerned with the material aspect of this world, not the bigger questions such as those understood by Buber and the other Sufi sages sprinkled throughout history.

So, then, the meaning of life is to become happy by evolving oneself to create happiness in others by first personally embodying the highest ideals of compassion and service and then by working to establish societies where those ideals are manifest in the institutions of government, business and religion themselves. Here it is obvious that we have allowed the most ruthless, hypcritical and selfish liars and oppressors to seize and hold power. From a game theoretic standpoint, they have access to more tools than the moral human being and the fruits of their labors stand testament to their single-minded power-seeking, our tattered Earth going to ruin and the misery of the poverty- stricken masses demonstrating their efforts.

The crux of the issue resides in the answer to "Why, with most people not being evil bastards, is the world moving away from happiness?" Besides the efforts of the relatively few amoral people, most people are too confused to either confront or overcome their own personal demons and are therefore blind to either their own foibles or those that rule over them; such people are not merely individuals, they form powerful groups of super-ego-driven packs of self-centered power mongers. Here the evidence can be seen in how many poor people support corrupt, self-serving politicians that make the life of common people worse, as well as how many obviously hypocritical religious institutions maintain their adherents.

Here then can be found the ultimate crux of the meaning of life: our Creator is literally Unfathomable and absolutely peerless -- after all, It is the Creator of time, space and all the subtle, mathematical laws that interrelate them -- but It has tied our self-evolution into reaching out within ourselves and establishing a relationship with It. Only in that reaching out can we learn how to self-evolve ourselves beyond our petty animalistic, pack-centric destructiveness and into a global cooperation of compassionate humanitarians that understand that every human being deserves happiness, respect, dignity and the opportunities to live a life of achievement and self-worth, according to their own predilections.

The caveat to such universal compassion is that we must be ever on guard for persons and groups that teach hatred and oppression of others. They must be stripped of their ability to harm others for the work of the righteous is _ALWAYS_ to protect the innocent, no matter who they are, for we are one human race, with all non-destructuve members deserving of FDR's Four Freedoms.

Ultimately, we can talk about what we believe but our choices each and every day are the evidence of the life we live, and that evidence shows in our facial expressions, our tone of voice and the joy (or its lack) we feel within.

"The Way goes in." \--Rumi

<comment><USER5> > As such, we have an innate morality that pushes us away from selfish, > animalistic competition and toward selfless, humane cooperation, across all > artificial divisions

We really don't.

source: look at the world around you today and the past thousands of years.

<comment><USER4> That the vast majority of humanity choose to ignore their moral impulses only testifies to our free will being absolute and the callous disregard (or worse) of others in the choices they make. Simply put, most people simply choose to remain moored to our physical body's animal heritage, where the mammalian dictates are competition between groups for power and within the group for sex and status.</comment></comment></comment></comment>


VSCode Text Buffer Implementation - <AUTHOR> https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation <comment><USER2> Microsoft was the company who pioneered use of Moore's piece table data structure in MS Word in the 90s. It is fascinating to read that the new generation of MS programmers in VS code had to re-learn the same lessons that the old generation did.

<comment><USER3> I was thinking the same! That all the word processors from the 90s must've already figured this stuff out, and half those people must still be at MS. But that knowledge probably wasn't passed on somehow.

Although I have to say, Monaco and VS Code have always felt performant from day one. And that shows the difference between the MS and Github pedigree. This is speculation but there was probably more "CS" applied to the Microsoft implementation from the beginning, them having so many compiler people and CS- trained people, than on Github's side. And Github arrived at that through iterations over the years, them having more of a web developer DNA.

</comment></comment><comment><USER4> Very intersting read, and what's important is that the results of their work are open source and can be used by anyone.</comment>


Games Criminals Play – How You Can Profit By Knowing Them - <AUTHOR> http://www.zacharyburt.com/2010/05/games-criminals-play-how-you-can-profit-by-knowing-them-2/ <comment><USER3> Here are some of the ways that a blogger will try to manipulate you into purchasing a book.

First, the post presents itself as a harmless and useful source of information. There's nothing to lose, and you might be informed or at least entertained if you keep reading.

The story spans several different aspects of human behavior. At some point, it might touch on something that you've personally experienced, which makes you more interested in the post.

As the post goes on, it begins to accumulate reasons why the topic is important, and how it can potentially affect you and your life. Before you know it, you begin to feel like you can't afford to ignore the provided advice.

Then finally, the trap is set! An affiliate link is posted, and all you have to do to feel better about the situation is whip out your credit card.

Here's how you can avoid buying a book that you don't really want:

1) Recognize the signs

2) Use a web site that allows comments to publicly mock the blog post. Not only does this give you the enjoyment of being a jackass, you can transform your reticence into a noble cause.

I hope this advice has been helpful!

<comment><AUTHOR> I'm humbled that my post was powerful enough to elicit this kind of personal expression.

Or are you usually this good?

<comment><USER4> I guess no one ever told you that the worst thing you can possibly do to an American is to trick them into reading a book.

<comment><USER5> What makes you think barrybe is an American?

<comment><USER6> The fact that he didn't like to be tricked into reading a book? :-P

</comment></comment></comment></comment></comment><comment><USER7> The article was interesting to me because I have a friend who is a Prison Guard. He regularly tells stories about working in the system, about the prisoners, and about his work mates.

With the prison system here in Australia, he says there is a genuine drive to get rid of hard-ass prison officers, and replace them with what he calls "yes men", who will back down from any potential engagement with prisoners, because it is essentially bad publicity for the prison system, and the media loves to jump on prison violence (especially caused by the guards). In this the guards are already coming from a weak position because the inmates can actually use the media attention to their advantage

Anyways I'm getting off track, but my mate refers to himself as part of the old school system, where if you care to break the rules at all, it will be met with swift and violent retribution at the guards hands in the form of some sort of midnight visit. This is all being phased out though, as I already mentioned in the previous paragraph.

Also, the inmates definitely know the system, and know how to get around the justice system - There was a recent riot in the local prison here, where the prisoners attacked two of the guards, but even though the prisoners knew there was CC TV on them, they simply covered their faces with towels as to avoid identification. Now the guards could identify them based on mannerisms on camera (the way they walked/moved, used weapons), however it didn't go to trial because the the video was the only evidence, and a prosecution would never get a jury to convict because mannerisms would never be enough to identify the perpetrators. Kind of a long winded way of saying the prisoners know what they can get away with, very well. I asked him what would have happened if the prisoners had actually killed one of the guards, and he said well they would have got away with murder.

Scary place, he certainly earns his 90k per year. Sorry for the long winded response!

<comment><USER8> Very insightful comment. No need to apologize.

</comment></comment><comment><USER9> Two things come to my mind:

\- I would be a terrible correctional officer; and

\- it is certainly a whole another world where people learn to apply their obviously available intelligence and emotions first in a false way and secondly, then being able to pull the plug and turn against the "duck" with these extortions.

Anecdotally, if I was imprisoned and I started to befriend an officer, my loyalty to him would grow as well as his loyalty to me. I wouldn't be able to pull such a stunt that would potentially get him fired and mess up his life if he didn't bring me pot.

<comment><USER5> Perhaps that's why you didn't land in prison in the first place? Or it works the other way round, and your views change when you are in prison?

</comment></comment><comment><USER10> If you're interested in the strange working relationship between guards and prisoners, I highly recommend Newjack:

[http://en.m.wikipedia.org/wiki/Newjack:_Guarding_Sing_Sing?w...](http://en.m.wikipedia.org/wiki/Newjack:_Guarding_Sing_Sing?wasRedirected=true)

The author is a journalist who was refused access to Sing Sing, so he joined the prison service as a guard there for a year.

<comment><USER11> I just finished reading that book, and it doesn't sound like the relationship that this blog post implies at all. He said he sympathized with the inmates a bit (and let them break minor rules), but he didn't bring any contraband in.

(And interestingly, the book makes prison sound a lot nicer than I would have imagined. Less rules than the residential high school I went to, anyway...)

<comment><USER10> No, but he does discover that the guard/prisoner relationship is a lot more complex than he expected, relying for the most part on subtle persuasion and negotiation by the guard not raw coercion. He also show how much time prisoners devote to getting inside their guards' heads, since they often were manipulative and amoral personalities on the outside and now they have nothing else to vent those skills on.

</comment></comment></comment><comment><USER12> _This brings up the notion of sex in the presence of the female, while making the inmate himself appear non-threatening. The way to nip this in the bud is for the female guard to say that any sexual talk in her presence is neither appreciated nor appropriate._

This sounds hilarious to me, in a "you can't fight in here! This is the War Room" sense. Are female guards common in prisons for males in the US?

<comment><USER13> Well he did say that the book is from 1981...

</comment></comment><comment><USER14> I'm not convinced that most of the inmates have quite that level of sophistication, but anyone who's dealt with a particularly effective bully will recognize the kinds of psychopathic behavior depicted.

<comment><USER15> Yeah, this sounds more like AIG or Goldman Sachs.

<comment><AUTHOR> How so?

<comment><USER15> Well, they gradually gained the public trust in the financial sector. Then they proceeded to threaten the country with financial and economic ruin if massive amounts of publics funds weren't transferred to them.

<comment><USER16> > Then they proceeded to threaten the country with financial and economic ruin > if massive amounts of publics funds weren't transferred to them.

Did they?

From the outside, it looked more like "those institutions are too vital, so we're going to pump money in and tell them how to do things" from govt officials.

Which reminds me - the US financial institution bailout is close to break even with the exception of Fannie Mae and Freddie Mac (which the Dems insist on pouring more money into - they voted down liquidation early this week). GM and Chrysler aren't even close.

<comment><USER15> Except that it was Paulson who did almost all of the political leg work.

<comment><USER16> Paulson was a govt official at the time. (Yes, there is a revolving door between GS and govt.)

<comment><USER15> Before which, he was working at Goldman Sachs since 1974.

It was essentially his decision to do the bailouts (despite the obvious conflicts of interest.)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Handmade prison escape tools and weapons:

[http://trinixy.com/28-handmade-prison-escape-tools-and- weapo...](http://trinixy.com/28-handmade-prison-escape-tools-and- weapons-24-photos.html)

</comment><comment><USER18> The thing that confuses me about these scenarios is that it seems to assume too much on the part of the inmates, that they have the ability to make all these extremely minor character judgements and manipulate a person who holds absolute power over them to the extent that they have them enthralled.

If they truly have such powers, why are they not somewhere else other than prison?

<comment><AUTHOR> 1) Prison guards don't have absolute power over the cons

2) The cons don't have them entirely enthralled, but as I mention in the article, severely weakened over time, and vulnerable enough to succumb to minor rules violations that the cons use as leverage against the guards - <USER2> extract major favors

3) A lot of criminals are very intelligent and if they were born in an affluent suburb in Connecticut, they would probably end up just as powerful as many businessmen/politicians. Some criminals end up working their way out of prison and end up very powerful. Look at YM/CMB as a great example of this. (Except Lil Wayne is in jail now on a gun charge because it's all tied up with his "hood" image.)

<comment><USER19> Who is YM/CMB? Google shows a bunch of rappers, but is there actually one that calls himself "YM/CMB"? I guess that guy drank too much of the Web 2.0 naming coolaid ("Street 2.0"?)

<comment><USER20> _that guy drank too much of the Web 2.0 naming coolaid_

 _That_ would be "Horsedick.MPEG" from the movie _Miss March_. <http://en.wikipedia.org/wiki/Miss_March>

</comment></comment></comment></comment><comment><USER21> I feel like posts such as this one say some pretty scary things about intimacy in general, even honest intimacy.

</comment><comment><USER22> _The next step is testing: violating minor rules, asking for things that are not supposed to be given. They test for the resilience of the guards and are also playing to what in psychology is called the "foot in the door phenomenon": people who do a small favor for you are more likely in the future to do larger favors for you._

I am reminded of the teachers' maxim "don't smile before Christmas", i.e., establish yourself as a firm disciplinarian at the beginning of the school year, and you can be more flexible once the students recognize that you aren't a pushover.

</comment><comment><USER23> Holding up the D.E.N.N.I.S. system as an example of successful manipulation kind of torpedoes the credibility of your interpretation. Did you finish the episode?

<comment><AUTHOR> It's never ceteris paribus. Are you familiar with polynomials? Ax^i + By^j + Cz^k? It's the same concept. :)

</comment></comment><comment><USER24> > the con will first touch the duck accidentally

...

wow</comment>


Show HN: Typopo – fix frequent typographic errors with a single click - <AUTHOR> http://typopo.tota.sk/ <comment><USER2> It missed several errors I introduced, such as changing spellings and capitalizing mid-sentence pronouns.</comment>


Ask HN: Is shaving a sign of discipline? - <AUTHOR> Sorry, so much political and social outrage I feel like it's September 2016. Anyway, to my question:<p>Does someone who shave daily show more discipline than someone who grows a beard? It takes a daily effort to keep a clean shaven face. Could there be a growing unconscious bias towards those with shaven faces that give an impression of discipline and "togetherness"? Thoughts? <comment><USER2> This gave me a really good laugh. By that logic, a completely hairless person would be the most disciplined :)

<comment><AUTHOR> Well of course that would be ridiculous! Beards are a decision with social and professional impact for some. Just curious to what others think when making that decision!

</comment></comment><comment><USER3> Shaving becomes a habit after while so it requires little discipline. I would go as far as to say the braking the habit of not shaving requires discipline.

</comment><comment><USER4> For me, times when I shave are times that I have better self-discipline.</comment>


Show HN: The quest to get better insurance prices (starting in the UK [Beta]) - <AUTHOR> https://www.kippie.co <comment><USER2> This is what the site looks like in Chrome 77 on OSX [https://imgur.com/a/6kU4ARL](https://imgur.com/a/6kU4ARL)

The console has a couple of errors;

        "Uncaught SyntaxError: Unexpected token '<'" at olark.2a804f5ea0aa.js:1

        "Axeptio SDK is already loaded" at sdk.js:45

This site was not ready to launch.

<comment><AUTHOR> Hey onion2k,

Thanks for the heads up, our landing page is not 100% ready that's for sure :) What's the screen size of the device you're using so we can reproduce it?

The app which lives at [https://gdpr.kippie.co](https://gdpr.kippie.co) should be but will check on that too just in case and fix any errors now.

Thank you!

<comment><USER2> 1680 by 1779 (one half of a 4k monitor)

I think the issue is that your hero section has a style of "width: 110vh", so it's 110% the height of the user's screen. On a browser that's set to fullscreen on a typical 16:9 aspect ratio monitor that will look fine, but when you've got a fancier set up that means you don't use fullscreen windows it breaks.

<comment><AUTHOR> ouch! missed your comment earlier on today. Thanks this helps.

</comment></comment></comment></comment><comment><USER3> Page is basically unreadable, with all the jumping up and down: [https://m.imgur.com/a/K9KPFHn](https://m.imgur.com/a/K9KPFHn)

<comment><AUTHOR> Hi cynix, thanks for the feedback. Working on fixing this next :)

</comment></comment><comment><AUTHOR> Hey, we just launched Kippie! Part of what we do is request your data under the GDPR law. Here is a link of (what a SAR is)[[https://smiletogether.co.uk/how-do-i-submit-a-subject- access...](https://smiletogether.co.uk/how-do-i-submit-a-subject-access- request-sar/)] and here how to (get it)[[https://www.techrepublic.com/article/how-to-request-your- per...](https://www.techrepublic.com/article/how-to-request-your-personal- data-under-gdpr/)].</comment>


How Your Boss Will Run Your Life in a Few Years - <AUTHOR> http://finance.yahoo.com/news/how-your-boss-will-run-your-life-in-a-few-years-165905475.html

<comment><USER2> "Contract workers will displace fulltime employees" contradicts "Corporate indoctrination (aka brainwashing) will intensify". Just a list of strawmen.</comment>


Where are the Top 1% of Engineers (from Carnegie Mellon) - <AUTHOR> http://www.apeekatchu.com/post/19698690915/where-are-the-top-1-of-engineers-from-carnegie

<comment><USER2> Bah. CS ("engineer") is a pretty rigorous and challenging curriculum at any competitive school, whether it's state or private. So graduating with a CS degree is enough of a level in my book. Of all the hundreds of candidates I've interviewed coming into Apple, the brightest and most self-starter guys and girls instead came from no-name schools in random parts of the world.

Sure in startup land you see Stanford come up quite a lot, because that's where all the money is and so those guys get solid introductions and meetings with all the right people.

Working at a company like Apple (or also Facebook/Google/Microsoft) means you need to be product driven and capable of learning quickly and on your feet. True, they are cushy companies in terms of benefits and pay, but they have high bars of entry. If anything, the opposite is now true, where they cannot afford to hire someone on a hunch, or experiment with them like a nimble startup can since it's near impossible to fire them.

So if you yourself are in a state school (or small "unknown" school), do not worry. If you want to work at a prestigious company out here in California, the real trick is to find the one area you're able to really excel at and push yourself to shine in it. When you're in the interview, make sure you talk about that one shining aspect and really talk it up. When the interviewers see your passion and how you overcame obstacles in it, you'll be a shoe-in.

</comment><comment><USER3> As a CMU student who just took a leave of absence to join a startup, the one thing that really disappointed me was the total risk-averse mentality that exists at CMU.

Based on my conversations with other CMU alumni, I think there is a collective feeling that CMU students need to be encouraged to take risks, not the other way around. Fundraising campaigns like "Inspiring Innovation" and press releases with headlines like "Greenlighting Startups" are wonderful, but there's too much of a campus culture focusing on just doing whatever it takes to "get a good job."

Personally, I feel that it's the one place where CMU stays true to its roots: It was founded by Andrew Carnegie in 1900 as the Carnegie Technical Schools, and till date remains best at doing just that: being a technical school. That's why companies love to come to CMU to recruit: CMU students make great employees. CMU's doing exceptionally well given its relative youth, but I fear that if it keeps trying to be what MIT and Stanford were 10 years ago, it'll always be playing catch-up. As a university it needs to take a risk - a leap of faith.

On the bright side, having been in the Bay Area I've seen an increased percentage of CMU alumni come here and realize that taking risks isn't so bad, and then leave their nice job at Twitter/Facebook/Google/LinkedIn to go for it. It just takes exposure to the right environment for them to realize it. Hopefully as more and more CMU alumni are exposed to (and involved with) startups, they'll help bring awareness to CMU as a whole - I know I'm going to try my best.

Side note: In pg's essay, "How To Be Silicon Valley" (<http://www.paulgraham.com/siliconvalley.html>), he says: "The university is just the seed. It has to be planted in the right soil, or it won't germinate. Plant it in the wrong place, and you just create Carnegie-Mellon."

</comment><comment><USER4> I'd be kind of curious to see more data, both for more schools & more years, and also to follow this "top 1%" through the years. On the one side, I'm curious if this is actually a good predictor of what hot companies are, and three years and a dozen people isn't enough data to make that sort of call. How many people were joining Google in 2005? How many were joining Microsoft?

On the second part, I'm a little curious to see how people's tastes in workplace mature over time. A fantastically smart, driven, awesome guy just out of school is still fundamentally a dumb kid with no work experience. Some of the top CMU graduates from 2002/3/4/5 presumably switched jobs in 2011. Did they go to the same companies as the graduates of 2010/2011? Which companies from 2005/6/7 retained the most of their fresh-out-of-college top 1% hires?

</comment><comment><USER5> Disclaimer: I worked for Palantir.

Palantir does a good job pitching the "We only hire the best and brightest." The pitch worked on me. When I accepted the offer, the smartest person I knew from the CMU CS class of 2006 (my class) was working at Palantir, and this definitely reassured me on my decision.

<comment><USER6> Ah, bummer. I was going to apply to Palantir but I'm neither the top of my class, nor do I go to a particularly top school. May as well not bother I suppose.

Glad I saw this and didn't waste my time!

<comment><USER5> Ha. You may have missed the past tense on "worked for Palantir."

I was the bottom half of my class at CMU, so if it floats your boat to work at Palantir, apply away.

</comment></comment></comment><comment><USER7> There is probably a little bit of confirmation bias: anyone who didn't end up at a large-name company probably dropped off the radar. Maybe he wasn't the top engineer, if he went to work for zarklxyr.com. Oh, but Facebook, that's impressive, he must really be good.

<comment><AUTHOR> I assume you're referring to starting their own startups or joining one correct?

While I agree there likely is some confirmation bias, I can at least say that I included those who joined startups.

The sad part is, there are very few of them. When I was thinking of starting a startup at CMU, I was completely blown away by how little people there cared about taking risks. In 2010, the only startups people knew about were really Palantir and Facebook. In 2012, people at CMU actually still buy the tagline that Facebook is a startup.

It would be great if someone could change this, but as of right now, I'm relatively certain there is less confirmation bias than you think.

</comment></comment><comment><USER8> So the top coders from Carnegie Mellon are working on analytics for finance and spy-stuff, or mostly at very famous firms or grad-schools.

And this is a good thing? It looks to me like yet another sign that our whole social-proof-based talent-allocation economy is broken entirely. How can it be that 15 different people all really and truly wanted to do more-or-less the same stuff?

<comment><AUTHOR> I'm actually quite sure you'll find much more diversity from Stanford on that front.

CMU students tend to be a little clueless on the job search side of things, so they tend to stick to firms that are well known or well respected because they're safe.

<comment><USER9> I see no reason to go so far as to call the actual students in question "clueless" - but there is definitely serious bias in where certain companies do and don't hire. Apple recruits heavily from Stanford for CS, but recruits from MIT for ID, for instance. Some companies only look at MIT, or CMU, or Berkeley - or hire there "first", for no other reason than the founders might have gone there, and thus feel better equipped to evaluate the curriculums and students from those schools.

It's interesting to see where the top 1% of CMU kids go, but looking at the top 1% of every top CS school independently of each other would yield dramatically different results.

</comment></comment></comment><comment><USER10> Honestly its probably more like the top 1% didn't follow the crowd and didn't want that job at (insert famous company here).

But thats my own definition of top 1%</comment>


Apple Is Locking Batteries to Specific iPhones - <AUTHOR> https://www.vice.com/en_us/article/59nz3k/apple-is-locking-batteries-to-specific-iphones-a-nightmare-for-diy-repair <comment><USER2> Another reason for me to hate apple. It's only a matter of time before this greedy company goes to hell</comment>


B-58A Escape Capsule - <AUTHOR> http://www.ejectionsite.com/eb58caps.htm <comment><USER2> The "Wings Over the Rockies" aviation museum in Denver has an exhibit featuring these. The one on display is small and looks like ancient tech. I highly recommend visiting Wings Over the Rockies if you can.

The sign on the exhibit features the claim that the extensive capsule testing ultimately featured an ejection with a LIVE BEAR. A little research says that's true, but they ended up euthanizing the bear to look for internal injuries.</comment>


D-Link patch doesn't address all bugs listed in their own security advisory - <AUTHOR> http://www.devttys0.com/2015/04/what-the-ridiculous-fuck-d-link/

<comment><USER2> I inherited an office with a D-Link router being used that kept misbehaving. I tried upgrading the firmware as a last resort, since DDWRT and the others don't work on it.

Digging around I found a thread where customers were wondering what happened to bridge mode and why it had been removed. An obdurate admin informs everyone that D-Link decided it wasn't needed as a feature, so they removed it. The admin is very coarse and ends up locking the thread.

It seems ridiculous that, for a hardware product, a company would decide to remove features in a firmware upgrade. There is a work around, but even if it is a legitimate thing to do, it seems like a terrible product and engineering culture to be this condescending to customers.

Relevant thread: [http://forums.dlink.com/index.php?topic=4542.0](http://forums.dlink.com/index.php?topic=4542.0)

End of story: The router ended up going in the trash after other issues, along with two different D-Link models.

It's not the best idea to use consumer grade gear in an office, but then I replaced it (as a temporary fix) with an even older Linksys WRT54GL flashed with DDWRT with no problems.

<comment><USER3> > an even older Linksys WRT54GL

That thing has been working for almost ten years (granted it is not an office environment), once with openwrt and now with tomato, while rebooting its little and adorable self every night at 3am automatically so that I don't have to.

It's an amazing piece of hardware that makes one say "back in the day".

<comment><USER4> It was good for its time, but has limited onboard RAM, limited storage, and pretty slow WiFi by modern standards (there are even faster G-band, let alone N). Wouldn't recommend it today, and certainly wouldn't recommend touching Linksys with a ten foot pole.

As to stability, I'd describe it has a mixed bag. I owned one for just under five years and had to do fortnightly restarts (which I eventually automated), and we also owned one at work which needed nightly reboots (DD-WRT provided that).

PS - In fairness to the work one, the building was insanely congested. It was one of these buildings which are shared by three dozens small businesses, and each had 1-2 WiFi networks, plus the local homes also. When you spun up a WiFi analyzer it could not find an empty piece of spectrum, and a lot of routes/APs would crash if you left the "find best frequency" option checked (as they would hop continuously and never find anything).

<comment><USER5> Do you have any particular recommendations for new(ish) consumer routers?

<comment><USER4> I buy Asus stuff then flash third party ROMs. Here's a massive list: [http://www.dd-wrt.com/wiki/index.php/Supported_Devices](http://www.dd- wrt.com/wiki/index.php/Supported_Devices)

If I was buying something today, it might be the Asus RT-AC66U (since it is a "compromise" between price/performance).

</comment></comment></comment></comment></comment><comment><USER6> I was in a dev team for a network security appliance. It is really sad they way they treat vulnerabilities and security advisories. There were very few people who know what the actual vulnerability was.The vulnerability would be listed as one of the last items in a release checklist. Gets assigned to a guy who has no clue whatsoever. The guy fixing the issue would google a patch. apply it. has no way of testing it comprehensively. He will run a basic test case. He will make up a report with a lot of security jargon for the managers and advisory team. And the next release would list the vulnerability as fixed.

</comment><comment><USER7> I've just accepted that residential routers are full of assorted orifices (security holes, backdoors & holes in functionality).

Then again I'm not hiding anything dubious - if I was I'd install a firewall box asap. (And yes I know the "nothing to hide" slippery slope etc argument)

<comment><USER8> I'm guessing that Apple's are better than average, since they have two versions (the built in HD on a time capsule doesn't make it appreciably different) and maintain them for long periods between upgrades.

Asus/Netgear/D-Link/etc follow the "If we don't release an 802.11ac router every week, we won't get enough press releases out!" model, and their firmware suffers as a result.

I'm not touching those unless I can wipe the stock firmware and replace it with Tomato or DD-WRT.

<comment><USER9> Some OpenWRT routers like the TL 1043ND I have suffer from VLAN leakage. Basically the router separates WAN from LAN via a VLAN config as the CPU has only one LAN port. At the router's bootup, devices on my lan would randomly get a public IP adress assigned by the DHCP server on the modem. Scared the crap out of me. From now on the thing is an access point, not a router.

</comment></comment></comment><comment><USER10> Things like this make me so happy to have things like DDWRT, OpenWRT, et al.

<comment><USER11> Why would you still be comfortable using an incompetent company's _hardware_ , even if you fixed the software issue?

Does anyone do meticulous teardowns of routers, much less documenting what silicon is present?

<comment><USER12> Yes, typically home routers tend to use pretty industry standard chips like Broadcom chips (like the BCM5357 in my home router). D-Link, Linksys, and crew don't usually roll their own SoCs, but just seem to throw off the shelf stuff in there. These chips tend to be SoCs, and while I can't be totally sure that there isn't a weirdo NSA backdoor on it (probably just as likely as any other router, residential or commercial), most of the meat lives in the chip, and with good open source firmware (DD-WRT et al.) it's probably just about as reasonable as anything else coming and going. I certainly have far more faith in a regular off-the-shelf SoC + open source firmware tuned to my own needs (and believe or not thisn't hard at all) than anything with propriety firmware, including (and especially, to me) Apple. Maybe the next best thing to do is to build your own WiFi router from totally off the shelf parts (not so hard to get into a small form factor any more).

As to inspecting the SoC itself, that would be certainly interesting. Most of them are just ARM SoCs; this might make for an interesting blog post looking at the silicon.

<comment><USER13> ARM? I thought most routers used MIPS. At least several of the ones I've used are.

<comment><USER14> ARM is taking over from MIPS in the 802.11ac supporting products. MIPS is still around, but is now in the second tier of popularity alongside PPC. The single-core MIPS 24K and 74K that have been so popular just aren't fast enough for doing smart things at DOCSIS 3 speeds. They've also largely switched from NOR flash to NAND flash.

</comment></comment></comment></comment></comment><comment><USER15> this guy clearly has a passion for security.

d-link could do well by firing whatever uncaring 9-to-5 programmers they have and hiring him.

part of the problem is that people with this kind of passion and skill are few and far between... is very rare that good people want to work for a company like d-link on something like drivers or router software.

<comment><USER16> > d-link could do well by firing whatever uncaring 9-to-5 programmers they > have and hiring him.

That's a great experiment to discover how long somebody can can stay passionate inside an uncaring corporation.

I give him 2 years to become an uncaring 9-to-5 programmer.

<comment><USER15> good point...

i do think it is pretty hard to stop caring though, what happens generally is that if you start to get that demoralised you will leave and find something else. :)

</comment></comment></comment><comment><USER17> It's better to stick with OpenWRT or DD-WRT.

<comment><USER18> Care to share your opinion of why that is? Have you compared Tomato? What problems or deficiencies did you identify? More detail would be helpful.

<comment><USER19> Isn't Tomato way out of date? Wikipedia shows the last stable release was almost 5 years ago, and the website shows no dates on its releases (not a good sign). I ran Tomato for a long time and loved it, but I just got too nervous running such old software as the gateway to my network. Ended up upgrading to a cheap TP-Link router, switching to the latest and greatest OpenWRT release, and haven't had any complaints at all.

<comment><USER20> There are forks of Tomato that have been updated much more recently. I'm running the "Toastman" build of Tomato.

<comment><USER19> Ah, I wonder why doesn't the original project just fold up and point people at the currently maintained version. I'd still be very nervous about trusting my network to a random fork of mostly unmaintained software. At least with OpenWRT there's a very clear view into the (quite active) development, roadmaps to next releases, etc: [https://dev.openwrt.org/roadmap](https://dev.openwrt.org/roadmap)

</comment></comment></comment></comment></comment><comment><USER21> Mirror for Database Error'd: [https://archive.today/D33zV](https://archive.today/D33zV)

</comment><comment><USER22> I guess this is a reminder that writing secure C is actually really, really hard.

<comment><USER23> Writing completely secure C _is_ hard, but this code is littered with extremely basic bugs like unchecked sprintf and not sanitizing arguments to system. Like, it's a basic rule that you should use snprintf instead of sprintf, _possibly_ with exceptions for cases where you're absolutely sure the result fits in the provided buffer, and in this case there is sprintf everywhere and no checks on the input size whatsoever.

<comment><USER24> I wonder where this "length blindness" comes from, since it certainly leads to a lot of vulnerabilities. Are these programmers who started with a higher- level language than C, one with dynamically sized strings that automatically expand? Do they even know how big the buffer is, or how long the input string could conceivably be? Did they ever consider the case where the input is very, _very_ long?

A funny analogy I've heard is "programmers who don't know the size of their buffers are like drivers who don't know the size of their cars."

<comment><USER25> Just to hazard a guess, there's probably little organizational incentive to prevent security issues in the first place.

</comment></comment></comment></comment><comment><USER26> I can't believe how laughably bad router security still is. It's fascinating how these exploits came to light. Where do you even start to map to the related system calls?

</comment><comment><USER9> pfsense on a thin client = 40$ OpenWRT on a home router as AP = 30$ Not getting pwned = priceless

<comment><USER27> What are you running pfSense on for $40?

<comment><USER28> I think that he means per month in electricity costs. ;)

<comment><USER27> Seems a little high to me, but it does make more sense.

</comment></comment></comment></comment><comment><USER29> Interesting. The D-Link security advisory ([http://securityadvisories.dlink.com/security/publication.asp...](http://securityadvisories.dlink.com/security/publication.aspx?name=SAP10054)) states that the issue was only partially resolved. What was changed (aside from adding an additional buffer overflow) in the patch that attempted to alleviate these issues?

<comment><USER30> Like the article says, they make sure the command to system is one of their php files before running the system command.

</comment></comment><comment><USER13> Factory firmware on SOHO routers is notoriously terrible. You'd think that this would be a good place for a startup to disrupt. The hardware is basically off-the-shelf components. It would be an easy sell to experts, but maybe harder to get traction with most people.

</comment><comment><USER31> I wonder which vendors have the best firmware.

<comment><USER32> Are there any left that are owned by semi-reputable big companies? Back when Cisco had Linksys there was some hope that they'd at least look after the vulnerability handling and patching process in a grown up way.

<comment><USER33> The Apple Airport Express is reasonably cheap, has a great range, is easy to configure, and doesn't have a reputation for being insecure.

</comment></comment></comment><comment><USER34> Cheap SOHO routers: Sadly, you get what you pay for.

<comment><USER14> Paying more gets you better radios and more GigE ports. It doesn't get you less-stupid software. "Friends don't let friends run factory firmware" applies regardless of the price.</comment></comment>


Why Writing Software Is So Hard - <AUTHOR> http://artisansystem.com/blog/entry/19

<comment><USER2> The main piece of advice of the article is _finish it_ , it being whatever piece of software you're working on.

I think "finishing" is generally bad advice, because the problem for many developers is that "finishing" implies perfection and makes completion seem insurmountable. The author discusses various possibilities for what "finishing" may mean to you, but I would simply tweak the wording a bit to be _release it_. Get it out to the people who you think will use it and see if (and how) they do. Then release again.

<comment><USER3> Agreed, this goes hand in hand with the whole "artists ship" thing pg wrote about. If you're _too_ caught up in the perfection of something start slicing of limbs of it until it's releasable and go from there.

<comment><USER4> i like your "limbs" idea. of course programmers get frightened by 'finishing' in ryanwaggoner's context. we know what it's like to want perfect.

i'm only just learning how to slice and chop my projects into pieces... find what i hav to do as bare minimum to make the software 'useful' and put the big black period there.

work in very small iterations - 2 week-mini projects. set good but minimum goals. have a "later list" so you can stop coding that next great idea u think of.

..and after you 'finish' each mini project. hav a beer.

i loved this article.

</comment></comment></comment><comment><USER5> This article is a bit... crap.

 _Writing software, no matter what level, or how much, is very difficult._

...

 _but there are document after document written on how to write good software, so implementation details can eventually be solved._

???

Then, when I saw he spelled "alma mater" "alma mata", I skimmed through the rest of the article and closed the window. Sounds like he has a very newbieish perspective on writing software.

<comment><USER6> A "newbieish" perspective can sometimes help even the best professionals in whatever industry to become more aware of flaws or improvements that they may have become to accustomed with to notice.

</comment></comment><comment><USER7> It's hard because he is writing a framework. Since he's not solving a real problem, he doesn't know when it's done or not.

</comment><comment><USER8> So true. I cant even count the number of projects that I've started, only to have them fall into the background and die, never reaching completion.</comment>


Functional programming design patterns (2015) [video] - <AUTHOR> https://www.youtube.com/watch?v=E8I19uA-wGY <comment><USER2> Same speaker, newer presentations:

Functional Design Patterns - Scott Wlaschin (2017) from NDC Conferences

[https://www.youtube.com/watch?v=srQt1NAHYC0](https://www.youtube.com/watch?v=srQt1NAHYC0)

The Functional Programmer's Toolkit - Scott Wlaschin (2019)

[https://www.youtube.com/watch?v=Nrp_LZ- XGsY](https://www.youtube.com/watch?v=Nrp_LZ-XGsY)

<comment><USER3> This is exactly the resources I've been looking for to advance my understanding of how to accomplish certain things in FP before trying to learn it wholesale.

I have his book Domain Modelling Made Functional as it comes very highly recommended. I haven't gotten to it yet, but I'm even more excited for it now after watching this.

</comment></comment><comment><USER4> Scott Wlaschin is one of my favourite tech speakers of all time. Every single talk I've seen by him has been excellent in explaining rather confusing topics in a really simple and innovative manner. His material was my goto source when I was learing functional programming and I'm not sure if I would have ever gotten even excited about it if it wasn't for one of his talks.

Follow him on Twitter: [https://twitter.com/ScottWlaschin](https://twitter.com/ScottWlaschin)

Check out his website F# for fun and profit: [https://fsharpforfunandprofit.com/](https://fsharpforfunandprofit.com/)

</comment><comment><USER5> I wish I could find videos of people actually writing complex functional programming code. These talks seem to just reiterate the same things and all example code is too simple for me to be able to visualize using it in our code base to the extreme that they are talking about

<comment><USER6> Many videos exist on writing servers using FP libraries. A few search keywords for Scala: ZIO, Cats, fs2.

A beginner tutorial using a command-line application as case study:

[https://scalac.io/write-command-line-application-with- zio/](https://scalac.io/write-command-line-application-with-zio/)

</comment></comment><comment><USER7> Is there a non video version of this please? Would be quicker to read an article than a 1 hour talk.

<comment><USER8> I hear you. But don't forget about the ability to 2x videos. It's almost exclusively how I watch educational content (but you have to intensely focus)

<comment><USER9> Even 1.25,or 1.5 helps, with less cognitive squeeze

</comment></comment></comment><comment><USER10> Be-careful when learning "FP" that you're not just learning your chosen language's idea of FP

It can often be a large investment to learn these concepts only to find it's only scala or Haskell or w/e does FP "that way" is frustrating

When starting out I recommend checking if the pattern exists in many different FP language types first

</comment><comment><USER6> All in one place: A Glossary of Functional Programming

[http://degoes.net/articles/fp-glossary](http://degoes.net/articles/fp- glossary)

by John A De Goes, keynote speaker at Scala conferences. Discussions on FP using Scala at

[https://www.reddit.com/r/hascalator](https://www.reddit.com/r/hascalator)

</comment><comment><USER11> Thank you for this, very lovely and straight forward</comment>


Joltem – Openly collaborate to build and launch a startup - <AUTHOR> http://joltem.tumblr.com/post/76435540928/the-broken-startup-process

<comment><USER2> > "I was at a major disadvantage, I was in Dallas, Texas. The concentration of > technical talent was small, and it could take months to find and convince > just one other person to partner with. For a second I entertained the > thought of moving to San Francisco, joining a startup, going to conferences, > building up network, and then working on what I wanted. But I quickly > realized how absurd the whole process was."

Isn't it ironic where in a world where these guys would fund the next big idea to "connect the world", you cannot actually connect to them without doing it the old-school way.

I suppose "eating your own dog food" isn't a possibility for the people that fund and over-value world-connecting services: " because it is apparently only meant to connect the "other people" while we can only fund you if we meet you over a cup of coffee and you're wearing a HOODIE with sandals and its 32 degrees celcius".</comment>


Django 1.3 vs Rails 3: A not so final showdown - <AUTHOR> http://batsov.com/Ruby/Rails/Python/Django/2011/06/19/django-vs-rails.html

<comment><USER3> "Some of you probably know that Python is currently at a bit of a crossroads. Python 2.x was the stable Python version for many years, but recently it was replaced by Python 3.x."

Python 3 has not "replaced" Python 2. The reality is quite a bit more nuanced than this, and it is hardly a bad thing that Django does not support Python 3 right now. To give this section the heading of "The great divide" is just a tiny bit hyperbolic.

From the top of the python.org page dedicated to the subject[1]:

 _Python 2.x is the status quo, Python 3.x is the shiny new thing_

Also from that same page, here are some of the key things in Python 3 that are not in Python 2 yet:

* function annotations

* syntax for keyword-only arguments

* extended tuple unpacking

* non-local variable declarations

There is nothing in this list that a developer _must have_ in order to develop their app, and there are no Python 3 exclusive projects that do not work with Python 2.

The fact that few major Python projects are currently ported to Python 3 is not evidence of some tremendous looming problem in the Python language. It is evidence that Python 3 is only, really, an evolutionary transition from Python 2 and that this transition has a long time horizon.

The move from Python 2 to Python 3 is nothing like the move from Ruby 1.8 to Ruby 1.9. There are no dramatic speed or stability improvements that make Python 3 something that is terrible to miss out on, and there is no rush to get projects ported to Python 3. It will happen when it happens.

[1] <http://wiki.python.org/moin/Python2orPython3>

<comment><USER4> I agree with you. Before there's a need for Django to be on Python 3, there must be a major need that Python 3 serves which Python 2 does not.

<comment><USER5> Like P3 being the only actively developed branch. The P2 line will only get bug fixes. Anyway, the Django core is looking at the effort for moving to P3 so it will happen. The move was slated to take at least 5 years and we are only at the half-way point.

</comment></comment></comment><comment><USER6> I cringed when I saw him installing Django with yum. That's the surest way to end up with an ancient version.

You let the package manager manage whatever you are not very interested in (something you don't care with recent version you are running). I'd never let it manage something I can manage better.

<comment><USER7> If you're starting with Django, use pip + virtualenv, it seems to be pretty standard within the community

<comment><USER6> Which are more or less analogous to what he used for Rails.

</comment></comment></comment><comment><USER8> Rails and Django are two web frameworks standing at the same place greeting people coming from opposite directions. They are vaguely familiar with what each other are doing, but for the most part are just trying to do what's best for their own users. They have way more in common than they have differences and I think each community could benefit from learning the other's workflow.

I think Rails is slightly more beginner friendly because of the conventions and magic but that becomes frustrating for more advanced developers. Rails is working on making themselves more customizable and Django is working on codifying standards. I'm pretty sure it's a meet-in-the-middle kind of thing.

</comment><comment><USER4> _Official Docs - best official project documentation I've read. It's actually so good, that I never (well - almost never) bothered to look for anything else. All my questions were answered by the official documentation._

I have a different opinion. The Django docs are good, but not great. Here's how I see them right now:

        - Combination of overview, how-to, and API reference.

Instead, I'd like to see it split up like so:

        - Overview section.
        - How-To section.
        - API reference.

The overview section should cover general concepts. "This is what a View is, how it relates to URLConf, etc...".

The how-to section should show you how to do certain things. "Here's example code of how you can configure settings.py, how to handle an HTTPRequest in a view function, etc...".

The API reference, just a list of Django objects (showing inheritance), their attributes, functions, and parameters. Excellent example: <http://api.rubyonrails.org/> . Currently some of this is documented, but some of it is only visible in source code.

Right now, everything in the Django docs is semi-bunched together. This made it really hard for me to initially learn the API; I'd imagine others' have similar issues. Since then I've gotten use to the docs, but it's still frustrating at times.

I do like Django very very much, but this is one of its pain points for me. It goes away with experience, but for new users it likely poses a bit of a challenge.

<comment><USER9> I completely agree -- as the docs have grown in size [ _] the organization has gotten worse. Originally I designed the structure to be similar to what you laid out, but things have gotten a bit out of control lately.

We're workin' on it, though, so if you'd like to help out I'd really appreciate it!

[_] The length has nearly doubled in the last two years.

<comment><USER4> Thanks for clarifying things jacobian. :) I'd love to help out in a limited capacity (time constrained currently, unfortunately).

In the past I've submitted tickets via the Django ticketing system indicating errors/clarification/what-not for the docs, but almost every ticket got flagged as spam and didn't get submitted. I kinda gave up after that point. Any suggestions on how to get tickets submitted?

Oh, and one tiny feature request to the ticketing system: password reset. :)

<comment><USER9> Sorry about the spam filter. We get a shitton of spam (I think we're the largest Trac instance anywhere) and it makes the spam filter rather paranoid. If you're signed in it shouldn't get triggered.

Password reset is here: <https://www.djangoproject.com/accounts/password/reset/>

<comment><USER4> Ah cool, thanks so much!

I'm not sure how customizable Trac is, but one idea would be to implement reCAPTCHA for anything marked as spam (assuming robots are causing spam issues and not users). If it gets solved, it's probably a human entering something on the other end.

This is a Python 2 reCAPTCHA module I forked/updated: <https://github.com/dave-gallagher/recaptcha-client-1.0.6-ssl>

<comment><USER9> We've had that implemented since... I dunno, about six months ago maybe? (screenshot: <https://skitch.com/jacobian/fgjmc/django>). Not sure why you didn't see it. I wouldn't be surprised if Trac somehow didn't show it to you; it's a bit of a mystery to me some times.

</comment></comment></comment></comment></comment></comment><comment><USER10> One major area that the author did not cover: Modules.

The idea of 'Gems' in Rails(ruby) are exceptionally well engineered. Many powerful tools can be added by simply including a Gem.

On the Django side I have found the situation to be much worse. Many 'Apps' are hard to integrate and often it is easier to rewrite simple things than trying to customize them.

 _This is what caused me to switch to Rails after a year with Django_

<comment><USER11> I think there are advantages to each.

Rubygems combined with bundler is an excellent way to package up functionality, specifiy dependencies and have things play together nicely.

pip + virutalenv is similar, but not quite as good at this part - but python having module namespaces makes it far easier to write packages which you can be sure wont stomp all over each other.

<comment><USER12> I'm dipping into both Rails and a Python project right now (non-Django), both for the first time, and had difficulty "listing required packages to go along the source" in Python.

In Rails/Ruby I can use Bundler:

      git clone
      bundle install
      [do development]

I'd like to do the same for a python project:

      git clone
      _something_ install_my_dependencies
      [do development]

I looked into pip, but it seems I have to package my src into a Python module and install that. setup.py doesn't make sense for my project since it's not a module meant for redistribution. I intend to use py2exe. Basically I just need a way to install dependencies for development.

      foreach thing in file
        pip install thing

is the best that I can come up with. This is admittedly not terrible, but I feel like there is a better way and I just don't know about it.

<comment><USER13> There is a better way! A virtualenv combined with pip and a project requirements[1] file is the best way to handle this.

It even supports SVN/SSH checkouts and .egg distributed packages.

[1] [http://www.pip-installer.org/en/latest/requirement- format.ht...](http://www.pip-installer.org/en/latest/requirement-format.html)

<comment><USER12> Can I use pip to just install the dependencies without packaging my project as a module? I understand that pip installs "my module" to site packages or a directory under virtualenv. This is not what I need. I don't have a "my module" to install. I just need to make sure that the dependencies are installed on the machine/virtualenv that I'm using for development.

I studied the requirement file documentation and I couldn't find a solution. It seems that to take advantage of this feature in pip I have to write a setup.py, and as I've mentioned that really doesn't make sense for my type of project. Or am I misunderstanding something?

<comment> X-Istence

      pip freeze > requirements.txt
      pip install -f requirements.txt

Now whenever you go to develop, pip install -f requirements.txt, when you update dependent packages, pip freeze.

You are by no means required to make your source code a module or anything like that. If you use the above with a virtualenv you can isolate different models for different projects and have them frozen at different versions. You are also able to modify requirements.txt to include version specific information. packagename==3.4.0 now locks packagename to 3.4.0 when pip goes to install it.

I'm assuming your git directory looks like this:

      $DIR
      \
      | - requirements.txt
      | - fileone.py
      | - filetwo.py
      | - <USER2>
         \
          | - __init__.py
          | - filethree.py

I have several projects set up exactly like that, especially since they will never have to be distributed using a .egg or anything else.

<comment><USER12> Minor correction, it's dash r:

      pip install -r requirements.txt

<comment> X-Istence This is indeed correct, I must have fat fingered that. Sorry.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Unfortunately, this article sounds very much like he was just introduced to Django. Great write-up overall, but it felt like lip service to Django with the real meat of the article is the RoR stuff.

</comment><comment><USER15> Does anyone know what the "<(" syntax does:

      bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

I couldn't find documentation (hard to search for as you might imagine). Testing it out, basically that line downloads and executes the bash script stored at <https://rvm.beginrescueend.com/install/rvm> . Would like to understand how it works; is it related to the $(command) expansion construct? Why not use "curl -s <http://files.redsymbol.net/foo/foo.sh> | bash"?

<comment><USER16> <() is a new way to do I/O redirection, by which I mean it was introduced by I think the Korn shell in the early 1990s, which explains why you haven't heard of it. Also it isn't implementable on all Unixes.

The way it works is that if you say

        foo <(bar) -o >(baz) <(quuz)

foo sees them as command-line arguments, which might look like

        foo /dev/fd/3 -o /dev/fd/4 /dev/fd/5

and if it is clever enough to treat them as filenames and open them, then it will get the stdout of bar, the stdin of baz, and the stdout of quux, respectively.

The way this works is that the shell opens pipes to the other command lines first, then generates filenames for them.

I did not know that you could use it with other I/O redirections such as <!

As a bonus, the <() syntax means you can pipe even to and from commands that don't read from stdin or stdout. They must not, however, depend on the ability to seek.

My most common use for this is nonlinear pipe flow, e.g.

        diff -u <(sort -u file1) <(sort -u file2)

Hope this helps!

<comment><USER15> You bet it helps. Thanks for the great explanation!

</comment></comment></comment><comment><USER17> He's not harsh on either, but I found it strange that having a pluggable admin is ok for Rails, but pluggable migrations like South was a big gripe.

</comment><comment><USER7> Nice writeup. Thankfully doesn't have a clear bias like most of these type of comparisons! A powerful Django feature (the admin) is rebutted by citing plugins in Ruby; I think that the fact that it's part of Django really makes a difference, with the smallest Django test project you can enable the '/admin/' and use the models. Either way I agree with the conclusion: for webapps you really can't go wrong with either

<comment><USER18> The difference is philosophy. The RoR guys think of things like built-in admin interfaces as appropriate for plugins because not every app needs such a thing.

As a guy who happens to have a security background, I'd discourage admin interfaces built into the same app as the user app, especially when it's named /admin. Keep your admin functions in a separate and locked-down app if at all possible.

<comment><USER19> At least for Django, there's no reason your built-in admin has to be on the same site (or /admin). You can just create a new project, add the same apps of your main in addition to the admin app and hook it up to the URL of your choice along with whatever authentication you want (even limit to internal IPs).

</comment></comment></comment><comment><USER20> Rails's community advantage over Django looks like something that is not likely to go away in any foreseeable future. Although Sinatra is getting popular, Pythonistas are split between Django (or the AppEngine variant), (Jinja), Tornado, Flask, Jekyll, Pylons, and so on.

With Ruby, Rails oftentimes seems like the obvious framework, whereas the same can't be said for Python and Django.

Getting into Django has been a bit of a pain in the ass for me - at least for being unable to work on it organically with some fellow students or co-workers - but is there any reason to believe that getting a big Python framework community similar to Rails's is a plausible prospect?

<comment><USER21> I don't know where you are getting the idea that Django's community is more than marginally smaller than Rails'. Google Trends, StackOverflow questions, number of GitHub projects, average followers/forks for popular Django/Rails extensions, number/popularity of significant sites built with each, and the number of stories I see pop-up on sites like HN for each framework are all relatively equivalent.

Django for AppEngine is barely a variant, it's just a different handler for the ORM to interact with the non-relational backend. Jinja's a template engine that you can plug-in on top of Django if you want (like if you wanted to use HAML instead of ERB). Plenty of Django devs choose Tornado for their COMET needs (I know of almost no one that uses it as their entire web stack). Flask and Bottle are nice micro-frameworks, but aren't well-suited at all for large sites unless you feel like doing a lot of extra work yourself. Jekyll isn't a Python project, it's Ruby's static site generator (but does have a Python port called Hyde). Pylons (now Pyramid) is the only significant contender to Django. Think of it as Sinatra's market-share compared to Rails.

So when you actually compare the two, Python has no more "framework fragmentation" than Ruby. To someone outside of the community just listing off frameworks that they found on Google, sure it might seem that way.

<comment><USER20> What does it take to be "outside the community" in your opinion?

<comment> X-Istence I would say his comment stems from the apparent lack of knowledge regarding the different frameworks that are available Python and the lumping in of a Ruby project with Python projects.

From an outside perspective it looks like you are skimming the service and do not yet have a firm grasp as to the two communities and what they have provided. This is okay, it is something you can alleviate by simply learning more about the two communities, and hopefully in the future you will be able to provide your opinion on the state of frameworks based on correct information/facts.

</comment></comment></comment></comment><comment><USER22> As far as documentation, I've found Django's approach to work better for me. It seems to be the norm in the Python community to document well and comprehensively. Python is the only computer language I've seen where, according to the creators, "Strunk and White apply" (<http://www.python.org/dev/peps/pep-0008/>) . With Rails, the community approach toward documentation too often seems geared toward beginners. Many gems provide a "copy this, generate these files, and type that" tutorial or a screencast. I'm reminded of the code-generating wizards you'd see in Microsoft Visual Studio back in the day. Often there's no documentation beyond an initial tutorial. When I tried Rails last year I found myself spending the majority of my time Googling and sifting through blog posts of varying age and quality in an often futile attempt to find what I needed, whereas with Django the majority of my time is spent actually coding, and if I really can't find something in the documentation, Django's code is so readable it's often easy to open up the source and discover what it's doing.

</comment><comment><USER23> I recently came across the Play Framework for Java. Though I haven't started using it in a real project yet, it does seem very interesting and rails/django-like with very similar tools and workflow, though for Java.

So for folks who are trying to decide between Rails and Django, Or come from Java background, that is another framework to look at.

<comment><USER24> Throw Grails in there too, except with more Groovy if you don't want just plain old Java.

</comment></comment><comment><USER25> To me, this choice comes down to what type of site I am building.

For an API: Sinatra. A CMS: Django. A sprawling web app: Rails.

Each frameworks was built to address a very specific set of problems.

<comment><USER26> I've built many a "sprawling web app" quite successfully with Django.

Django and Rails have long since outgrown their original, in-house roots.

<comment><USER25> Me too. But I find Rails a lot more helpful, especially when your site turns into a mashup of web with forms, Ajax and a bit of REST. Django doesn't have opinions of much outside a standard HTTP request/response.

<comment><USER26> Which is actually a good thing, provided you know what you are doing.

</comment></comment></comment></comment><comment><USER27> I could have bet 100$ that RoR would have been chosen simply by reading the first paragraph: "I've already used Ruby a few years ago but I'm new to Python". What else do you want?

On a side note, Django is far from being "minimalist"; <http://flask.pocoo.org/> is minimalist, not django. I'll agree that Django is also less "Convention over Configuration" than Ruby.. for instance, it's a bit hard to chose where to put helper functinos in Django, whereas Rails put a helper file for you, etc.

<comment><USER28> Flask looks exactly like JAX-RS that ships with Java EE 6:

<http://download.oracle.com/javaee/6/tutorial/doc/gilik.html>

Unfortunately JAX-RS has not been integrated with JSP or any templating languages yet.

</comment></comment><comment><USER29> I can't speak for Django but I've just begun learning Rails as my first web framework and its been a pleasure to use. It's DSL is incredibly expressive and offers great power with little effort. Aside from the expressiveness the TDD integration and conventional project structure are big wins too.

</comment><comment><USER30> I've picked Django because it can be run with pypy (jit python) and makes it very fast. I prefer minimizing server costs.

<comment><USER31> This is interesting. Do you have profiling information about Rails vs. Django in general and Django on PyPy in particular? It would be very curious to look at it from a performance point of view.

<comment><USER30> My opinion is base on the following benchmarks : <http://attractivechaos.github.com/plb/>. This is obviously not a typical web application, but it gives a good hint on the performance issue.

Those interested in a C++ web app framework might consider wt (webtoolkit). It has a built in http/https web server and is thus plug&play for average applications. It is worth a look at.

</comment></comment></comment><comment><USER32> I've been working on a new site in Pyramid (the successor to Pylons), and I have to say so far it's been an impressive experience. They took a bit of a different philosophy than Django and Rails. In those 2, you can customize some things, but there are also default options, and particularly things like the ORM are built into the framework. Pyramid behaves more like an application widget where the pieces of a modern web app (ORM, security, templating, URL routing) can be fit into its slots.

I did enjoy the article's touching on Django. It looks like it has gotten less monolithic than in prior versions. As I recall several years ago, Django really was like the Rails of Python, with tons of default options but some difficulties in customization. It looks like they have moved away from that somewhat.

<comment><USER33> That's not true about rails. Neither the ORM, templating or URL routing are built in. People use Datamapper or ActiveRecord, ERB or HAML and routing is handled as rack endpoints.

Rails 3 is much easier to pull apart and put in pieces that you want. I believe this will be even easier with rails 3.1 introducing engines as a first class citizen.

</comment></comment><comment><USER34> I'm looking forward to learning RoR, even more thanks to this article. But please don't get the impression that only Rails works well with jQuery and SASS. I've been using them with django as well. They're not baked into django, but nothing prevents you from using them effectively.

</comment><comment><USER35> What about optimizing your app later? I've rolled out a number of rails apps, and I now feel that the rapid prototyping it provides is actually a form of technical debt. The execution speed and memory footprint mean you will have to scale harder, faster. I would like to remove framework components and middleware that I am not actually using, and transition cleanly from a rapid rollout to an optimized final product. But even in rails 3 I haven't seen good evidence that it's possible to do this, without being hackish. How do Django and other frameworks handle this?

Another way of saying it is I would like a framework that is "additive," where you start with a very lightweight core and then add components as you need them.

</comment><comment><USER36> A word of caution... Django should always be installed from Pip. Avoid easy_install, apt and yum.

</comment><comment><USER37> I think seeing the huge project structure after initializing a Rails app vs. a Django app is what keeps me away from Rails. I prefer a minimal starting base that lets me immediately make decisions about my app. I do need to give rails another chance though.

<comment><USER38> If anything you should prefer Rails in this case. Django generates fewer files, but what if you want to customize the automatic stuff? I'm talking about the admin templates, etc. You end up needing to copy the files over anyway.

I'd say the two give you the same amount of framework code to start with. Rails just happens to let you see and fiddle with it right off the bat.

In any case, when I start a new project I don't want to worry about creating a bunch of files and remembering where to put them and doing all this setup. I just need some sane defaults, so that I can start making actual project- related decisions instead of fooling around with "how do I want to arrange my files this time?"

<comment><USER39> It is possible to override admin templates while maintaining inheritance from the baked-in templates. You can check here: [https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#ove...](https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#overriding- admin-templates). Anyway it is better to look at the admin not as part of the framework, but a bonus app you get to get started with modifying data.

</comment></comment></comment><comment><USER40> I think he got it totally wrong with his unscientific estimation of rails and django with google trends. What has google trends to say here? Dislike.

</comment><comment><USER41> I switched to django from rails 2 years ago because I grew tired of getting burned by black magic. Back then, rails had the reputation of being amazing at building specific types of web applications but going outside that box only resulted in pain. I haven't heard that recently. Has rails gotten better in that regard? I know they've gone through at least 2 major revisions since I knew how to use it.</comment>


New Technology Should Be Presumed Illegal Until Congress Says Otherwise - <AUTHOR> http://www.techdirt.com/blog/innovation/articles/20120927/00320920527/former-copyright-boss-new-technology-should-be-presumed-illegal-until-congress-says-otherwise.shtml

<comment><USER2> "There has grown in the minds of certain groups in this country the idea that just because a man or corporation has made a profit out of the public for a number of years, the government and the courts are charged with guaranteeing such a profit in the future, even in the face of changing circumstances and contrary to public interest. This strange doctrine is supported by neither statute or common law. Neither corporations or individuals have the right to come into court and ask that the clock of history be stopped, or turned back."

Robert A. Heinlein, "Life-Line", 1939

</comment><comment><USER3> I wonder if the maker of that statement, former Register of Copyrights, Ralph Oman, realizes how patronizing and, well, royalist, that seems.

"These peasants and commoners don't know what's good for them. Before they get uppity, we need to have Lords and Ladies oversee anything new to ensure that God's Own Order Here on Earth does not get upset." Sheesh. How un-American can you get?

</comment><comment><AUTHOR> Full title is "Former Copyright Boss: New Technology Should Be Presumed Illegal Until Congress Says Otherwise" but HN does not allow more than 80 chars in title.</comment>


A Performance Cheat Sheet for PostgreSQL - <AUTHOR> https://severalnines.com/blog/performance-cheat-sheet-postgresql <comment><USER2> > It is not recommended to use RAID5 since the performance of this type of > RAID for databases is not good.

This strikes me as a generalization that is, at best, questionable. (Also, these days, with spinning disks, I'd more likely do RAID6, but I expect it's comparable enough).

I'd tend to agree that, historically, it's been true, and is demonstrably true for certain situations, such as a read-heavy load or recovering from a failed disk.

However, is it really still true for modern RAID cards?

What about with SSDs? I'd expect that cost is still a significant consideration for anyone specifying hardware, making the difference between RAID5 and RAID10 important.

<comment><USER3> If you have 4 disks in RAID10 you have 4x read iops of a single disk and 2x write iops. RAID5 has at most 1x write iops (still needs a read) and 4x read iops. RAID6 is even worse. Details here: [https://blog.storagecraft.com/raid- performance/](https://blog.storagecraft.com/raid-performance/)

While the CPU is not a bottleneck anymore the amount of possible read/write iops still matter.

Same for SSDs but here you could probably argue that the single SSD write iops for RAID5 are good enough for most usecases.

It really depends on your workload and datasize and usage patterns...

But you can scale RAID 10 linear with more disks and you'll get more write iops - this does not work with RAID5 / RAIDZ.

For ZFS you can find some benchmark data here: [https://calomel.org/zfs_raid_speed_capacity.html](https://calomel.org/zfs_raid_speed_capacity.html)

The general direction should be similiar to RAID cards.

<comment><USER2> > If you have 4 disks in RAID10 you have 4x read iops of a single disk and 2x > write iops. RAID5 has at most 1x write iops (still needs a read) and 4x read > iops. RAID6 is even worse. Details here: > [https://blog.storagecraft.com/raid- > performance/](https://blog.storagecraft.com/raid-performance/)

It's articles like that linked one which make me ask, because they make assumptions that are, themselves, questionable. Specifically, RAID5 requiring a read to do a write is only true in the case of non-full-stripe writes. Is that really likely with a sanely configured stripe width combined with a modern RAID card's cache (4GB)?

There's also an implicit assumption that the channel bandwidths (disk to expander, expander to raid card, raid card's PCIe) don't matter, but they do, especially when SSDs can saturate them.

Even exclusively using the notion of "iops" is (and always has been) suspect to me, especially lacking an expected data transfer size and some notion of randomness/locality.

> The general direction should be similiar to RAID cards.

I'd only be convinced of that if I were to see a few comparitive benchmarks of a variety of workloads. Otherwise, ZFS does too much of its work actually on the CPU and in main memory, whereas the RAID cards moves it down the PCIe bus. At least for RAID10, that would eliminate all the write-amplification over PCIe.

<comment><USER3> Sure, I don't have much data for either problem - how NVMe works out in practice is also interesting - I've found some benchmarks for SATA-SSDs - [https://www.thomas-krenn.com/de/wiki/SSD_RAID_Performance- Te...](https://www.thomas-krenn.com/de/wiki/SSD_RAID_Performance-Tests) but I guess if you want or need to squeeze out the max performance on RAID5 you need to test your own system and run different benchmarks with different RAID configurations...

<comment><USER2> > how NVMe works out in practice is also interesting

Indeed, though I suspect, in the context of a storage fabric "behind" a RAID card, it will just be a costly bandwidth increase.

>I've found some benchmarks for SATA-SSDs

Unfortunately, that's not a very useful one, as it uses a small number of low- performance (by today's standards) SSDs.

Also, if Google Translate correctly translate the below text to English, the author turned _off_ caching:

>der Controller Cache auf Write-Through gestellt.

Oddly, the author references [https://www.intel.com/content/dam/www/public/us/en/documents...](https://www.intel.com/content/dam/www/public/us/en/documents/white- papers/ssd-server-storage-applications-paper.pdf) as a reason for doing so, except that document supports using caching:

> Write-back caching at the controller level can reduce write latencies. This > is especially true with RAID 5/50/6/60 as RAID parity calculations introduce > additional latency. >Also, write-back caching helps with merging smaller > sequential write transfers into larger write transfers. Size of the > resulting larger transfers equals the write-back cache element size, which > typically equals stripe unit size. Merging write transfers is important when > there are concurrent sequential write threads with small transfer sizes (for > example, database transaction logs).

That is, it cites what appear to be exactly my earlier points regarding full stripe writes.

> I guess if you want or need to squeeze out the max performance on RAID5

Since the whole premise of the article is performance, max performance is the goal.

> test your own system

That still, however, does not address my original question, which is about the _general_ advice that RAID5 performs poorly for databases.

My suspicion remains that this accepted wisdom is outdated (i.e. rendered irrelevant my modern technology).

</comment></comment></comment></comment></comment><comment><USER4> quick & dirty - PG tunning: [https://pgtune.leopard.in.ua](https://pgtune.leopard.in.ua)

<comment><USER5> Is there something like this for MySQL?

</comment></comment><comment><USER6> For visualizing EXPLAIN there is a cool tool: [http://tatiyants.com/pev/](http://tatiyants.com/pev/)

</comment><comment><USER7> Nice reference!

Does anyone have similar references for doing 0-downtime migrations? For example, building your indexes with CONCURRENTLY to prevent table locking.

<comment><USER8> Not exhaustive but this has come in handy: [https://www.braintreepayments.com/blog/safe-operations- for-h...](https://www.braintreepayments.com/blog/safe-operations-for-high- volume-postgresql/)

</comment></comment><comment><USER9> Hard to take perf advice from a website that never stops loading.

</comment><comment><USER10> Does anyone have a direct link without signing up? Just put your logo in the pdf, brand it, but I'm not gonna sign up just to get spammed with advertising.

<comment><USER11> There's nothing to download. Everything is right there on the page.</comment></comment>


In-page search comes to mobile Safari - <AUTHOR> http://findinpage.blogspot.com/2010/01/video-finding-needle-in-haystack-with.html

<comment><AUTHOR> Shameless bit of self-promotion in the hope that it brings value to iPhone- wielding Hacker News readers like me.

Every Web browser has a find in page feature, both desktop and mobile, except for Safari on the iPhone. Not any more.</comment>


Ask HN: Why aren't there partial static generators? - <AUTHOR> I stumbled upon these old comments: https://news.ycombinator.com/item?id=896744
I was wondering why there aren't partial static generators where everything from blog names, subtitles, author, articles, about page, contact page, and anything else that is not changed often can be made static, but sections such as comments, and possibly often updated galleries remain dynamic.
I personally haven't seen anything like this(or at least I don't think I have). Does anything like this exist? If not, is there a reason why it doesn't? <comment><AUTHOR> Clickable: [https://news.ycombinator.com/item?id=896744](https://news.ycombinator.com/item?id=896744)</comment>