Want to be a programmer in an investment bank? - <AUTHOR> http://sapessi.com/2009/11/want-to-be-a-programmer-in-an-investment-bank/

<comment><USER2> So I have a really interesting job in the front office at a real investment bank. I have worked here for several years and have used (among others) perl, python and C++. I have touched precisely 3 lines of java in all my time here.

Our development cycle is super fast, yet I work on very sensitive applications and infrastructure (real time trading, pricing, risk etc).

Bottom line: Jobs vary significantly in any industry and within any firm.

<comment><USER3> Is your bank one of the larger ones, or smaller? I am wondering if that has an influence.

<comment><USER4> Not really. A bank is more like Ancient Greece, squabbling, semi-independent fiefdoms that only look united from the outside. Two groups in the same bank can be like night and day culturally. The biggest factor is the personality of whoever's the head trader (that week).

</comment></comment></comment><comment><USER5> In my one job working for a bank, I was hired directly by the head of market risk management. He hired me because he wanted a programmer who would just do what he asked instead of having to negotiate the internal IT bureaucracy.

I threw together a system with Apache and Perl (it was the late 90s) for traders to monitor their positions and that we used to run risk analysis on a daily basis. The traders preferred my hacked together system to the official one from the IT department, because it was easier to use.

We wrote a lot of VB apps, because that was what my boss was comfortable with. Not the greatest development environment, but at least I could just write code that my boss and the traders actually needed to do their jobs, without worrying about internal politics and bureaucracy. I would say that's a lot more important than choice of technology stack.

<comment><USER6> I once worked for a bank will now tell this story from the IT department's point of view.

A manager did not want to give the IT department the resources they needed to develop this new app, so he got a coder to hack together a solution which is probably unmaintainable and which they will eventually inherit anyway. The fact that you mentioned VB makes the story even funnier to me, because my department was frequently the victim of a code-and-run accountant who wrote awful Access apps (it's the worst code and data modeling I ever saw). Inevitably, the day comes when these apps have to be integrated with the rest of the infrastructure or the original coder doesn't want to deal with his mess.

<comment><USER7> You missed the part where the users preferred the OP's apps.

An IT department exists to satisfy the company's needs, not vice versa. If you can't do the job with the 'resources' given to you, resignation is always an option. But don't fail to do your job and then whine about 'resources'.

<comment><USER4> In my experience the users prefer the apps right up until they stop working. Maybe the developer leaves, maybe the mainstream development organization changes some other system it relies on, maybe the auditors show up and the security guys lock down the firewalls and stuff running on a PC under someone's desk no longer has access. Hell, maybe that PC's hardware fails for some reason, maybe someone makes a mistake and said developer didn't use the central, backed-up version control.

Then the users come to IS and piss and whine but get nothing but blank stares in return. And you know, stuff IS does takes time, because we build it to be supportable for the next decade or two (yes really). We write a runbook so someone who's never seen it before can recover it if it fails at 3am, and we make sure it's monitored. We get it signed off by compliance for regulatory oversight. We penetration test it. We back it up offsite and replicate it to the DR site. We stick a generator behind it and we know how many Watts of power it needs (we even know what it weighs so we don't overload the floor in the datacentre). We take its dependencies into account when doing any other work.

Basically, we act like grown-ups with _other people's money_ , something they've largely forgotten in the front office.

</comment></comment></comment></comment><comment><USER8> I was once offered a tidy sum to work in New York, cranking out desktop C# applications for large banks. My interviewer was a nice guy, and told me straight up that I should expect very little real code, and more taking a beating from traders on why their green button isn't green enough, and how it's a little too far to the left.

Needless to say I didn't take the job - and I still know some of my peers who went that route. Thankfully none of them really liked programming anyways, and the paycheque sort of numbs the skullcrushing tedium of it all.

I think the lesson here is less "don't work for banks", and more "don't work for a company that doesn't value technology". You will get this same crap at, say, a factory (been there done that)... a lot of really bad code written by really incompetent people, mostly because skilled programmers would never voluntarily subject themselves to that sort of environment.

</comment><comment><USER9> Curious then, I was certain I spent the last 2 years building a grid computing system for an investment bank using modern C++... Must be me.

Seriously, what's the point of such posts? You take from two and three experiences and extrapolate to a whole industry?

<comment><USER10> Never worked in banking, but I'm having trouble imagining that. Are the bankers aware how often the phrase "undefined behavior" appears in the C++ standard? Do they have formal verification tools, like I used to hear rumblings about Ada? Or just a crazy high qa/dev ratio?

<comment><USER11> C++ isn't an easy language, but it's not _that_ hard. Using a reasonable coding style it's possible to make very solid applications.

</comment></comment></comment><comment><USER12> For a good counter counter example to this guy's rant: Functional Payout Framework used for exotic options pricing at Barclays Capital, developed entirely in Haskell: <http://www.lexifi.com/downloads/frankau.pdf>

<comment><USER13> Good read, thanks for sharing!

</comment></comment><comment><USER14> What a ranting post! Especially when attacking such an easy target, where there are so many good points to be made, it's sad to see this poorly structured, badly phrased "let's just get it off my chest" rant in place of a good, solid post.

Shame.

<comment><USER15> I agree with your take on the nature of the post, its points could easily have been presented more elegantly!

I do feel that a lot of the points are somewhat valid, though, and because it might act as a catalyst for some interesting discussion on HN, I upvoted it anyway.

</comment></comment><comment><USER16> That's a lot of oversimplification. Yes, there are niches in banks that would probably fit that profile but then do so many other companies.

Another point to note is that Investment banks are very heavy users of technology and have varied needs , a FX trading platform has different requirements versus an online sales portal. You will invariably find all kinds of technologies being used.

</comment><comment><USER17> I spent four years writing Smalltalk (VisualWorks and GemStone) at an investment bank, and didn't look at a line of Java the whole time I was there. We were a wart on the architecture board's bum, not fitting into their Grand Unified Vision of Approved Java Technologies, but the system was--and still is --the only platform capable of pricing and risk managing some very oddly shaped (and therefore very high-margin) trades. It was also good fun to work on.

</comment><comment><USER18> I work in finance as a developer, and I have found there is also a demand for high performance C++/C software people - our development team is composed mostly of ex-telecom engineers from Cisco et al. The performance is a priority when trading latencies are involved.

Large investment banks (like any large company) have many different needs for software, and each of those have their own priorities.

That being said, we have a sizable J2EE team as well.

</comment><comment><USER19> It's very simple:

Good engineers & Good management => Good results

Bad engineers | Bad management => Bad results

Language X | Framework Y => See above

Anyone who believes anything else should either come out of college or go back to it.

<comment><USER20> Substitute "engineer" with "computer programmer" or "software developer" and you may have a point. Also, you can use the words "and" and "or". V and ^ if you prefer mathematical symbols

</comment></comment><comment><USER21> Hooray for stereotypes!

</comment><comment><USER22> Developing bank software is just different. There can be no rapid iteration, because every bug is disastrous. As a result, software evolves at a glacial pace. I'd think that the answer to the question about what technologies you need to know to work on financial systems would include COBOL, possibly before Java.

<comment><USER23> Plenty of banks use agile development methodology.

<comment><USER4> Plenty of banks also haven't touched code that's been running _just fine_ for the last 30 years. You just upgrade the mainframe under it...

<comment><USER24> Plenty of banks have both.

That's the advantage of n-tier systems. You keep your ancient databases, stick some business rules on top in Java and then talk to them from a bunch of clients that you can tweak as much as you like without worrying that you're going to break the important stuff.

</comment></comment></comment></comment><comment><USER25> A lot of younger people fancy Java, too. Not saying that is a good thing.

I think Google uses a lot of Java, too.

</comment><comment><USER26> Yes. J2EE is the de-facto standard for in-house development and there is some reasons behind.

They think their code is a safe investment. Why? Because they are still believed in that slogan - "code once run everywhere" which was actively used by IBM and Sun to sell their hi-end hardware. Second they think their code is cheap to maintain and extend because there are a vast crowd of J2EE developers, especially in developing countries. And, yes, off-shoring. It is so good to "save" budgets. Together that is why. Java is backed by so many big companies because it is the cheapest way of off-shore development (coding fabs).

And of course, project managers and IT executives in an investment banks does not want to create another facebook. They want their paychecks and bonuses and paybacks from their offshore partners.</comment>


LiDAR Scans Reveal Maya Civilization's Sophisticated Network of Roads - <AUTHOR> http://www.smithsonianmag.com/smart-news/lidar-scans-maya-network-roads-180961995/?no-ist <comment><USER2> Only the referenced article[0] has images (and a LOUD video - turn down your volume before playing).

[http://www.seeker.com/ancient-mayan-superhighways-found- in-t...](http://www.seeker.com/ancient-mayan-superhighways-found-in-the- guatemala-jungle-2219303581.html)</comment>


Sea salt from around the world showing contamination by particlulate plastics - <AUTHOR> https://www.theguardian.com/environment/2017/sep/08/sea-salt-around-world-contaminated-by-plastic-studies <comment><USER2> Salt should come from mines.

The sea salt craze has always seemed odd to me. Have most people in the USA never been to a beach? Do people really think that the sea is a good source of salt?

What I associate with the sea: seagull droppings, rotten seaweed, spilled oil, dumped WWII chemical weapons, raw sewage...

Then I go to the store and see a box of Triscuit crackers featuring sea salt. Yum??????

<comment><USER3> I'd rather consume some plastic or birdshit than continue destroying mountains for a substance we literally have oceans of. I think many people feel the same way</comment></comment>


Vinod Dham interview, father of the Pentium, on a life in technology & venture investing - <AUTHOR> http://venturebeat.com/2008/07/03/interview-with-vinod-dham-father-of-the-pentium-on-a-life-in-technology-and-venture-investing/ <comment><USER2> I like this guy. Successful and humble.

"The three of us invented Intel's flash memory business...We had to make projections of the revenue we would generate. We were so wrong it's embarrassing to talk about it. We never envisioned this whole market that has come about with memory in cell phones. We were only looking to replace an existing chip. That's the way we thought. It was a linear extension. You don't think about the things that can be created with it."

"I don't want to come across as some smart ass guy who knew how to do a $1.2 billion start-up. Sometimes you get lucky. Sometimes you are unlucky, like with the Pentium bug."</comment>


Inside Medium's Meltdown - <AUTHOR> http://www.businessinsider.com/inside-the-meltdown-of-evan-williams-startup-medium-2017-2 <comment><USER3> I'm guessing I read several Medium articles a month. Some of them are really well produced - Transit's engineering post on beautifying their maps, Remix's post about public transportation planning and ILP, and Karpathy's post on backprop come to mind. So I hope Medium sticks around because I get a lot of value out of them. Would I pay for this value? I think I actually would, but maybe only for stories I finish and think are good. For example I would pay a lot for the stories above but I would almost rather Medium pay me for posts which turn out to be thinly veiled marketing that I stop reading halfway through (I realize Transit's and Remix's posts could be construed as such but hey, the technical content was deep). I suppose a flat fee is better for the business but I could be more convinced to plunk down the credit card at the beginning if I was charged based on usage, like time spent reading on the site.

Also, let me just take a moment to once again rage against Business Insider for writing a pretty bad article. The whole thing seemed purposefully antagonistic and full of sarcastic language. Maybe it's because BI is the exact type of operation Medium is trying to kill, but I think those MAU numbers actually warrant some optimism! To be fair, Medium probably should have provided some people to counterbalance all those angry publishers...

<comment><USER4> Have you heard of [https://blendle.com/](https://blendle.com/) ? They brand themselves as 'Spotify for journalism', with a pay-per-article approach, with an instant refund if you don't like the article. I only started using them a couple of days ago, so I don't have any further useful comment, but it seems like a promising approach.

<comment><USER5> I just don't think there are enough people in America right now with any extra money to spend on articles. The middle class has to worry about paying for food and necessities. Millennials can't afford cable, and people think they will pay for internet articles they are used to getting for free? That business model is doomed from day one.

<comment><USER6> I'm surrounded by millennials, and most of the pay for Spotify and Netflix, or share an account with family members.

Furthermore, while I'm not 'poor', I'm quite frugal, and yet I've spent quite a bit of money already on Blendle articles.

The biggest hurdle in my case was signing up and connecting my account to a payment system. But once that barrier was crossed, paying somewhere between 10 cents and 1 euro on a article became a (concerning) easy thing to do. I suspect I'm not alone in this.

</comment></comment></comment></comment><comment><USER7> I wanted to create a Medium account but decided otherwise, because of Medium's terrible UX:

\- Images sometimes don't load, showing a swathe of a single color. In India, latency is much higher than the US, so I open multiple tabs, and start reading only when it finishes loading. Anyone who's trying to optimise should first make sure they don't mess up what has been working for two decades.

\- I read an interesting blog post, so I clicked the author's name to go to his "profile page". I expected to see a list of his posts, but I found them interspersed with his comments on other posts, posts he recommended, random snippets of text in other posts he highlighted. Again, every other blog gets this right — go to the top-level page of the blog, and you get a list of posts in that blog.

\- Commenting is bad. To sign in to Medium with a Medium account, it emails me a link to sign in. For every single comment I post. I don't want so many emails. Ideally, they should just use Disqus, so I don't have yet another account.

\- In any case, after logging in, the box where I should type a comment wasn't clickable.

\- When I opened a second Medium post just a few minutes later, I was again signed out, so couldn't comment.

\- There's a persistent footer when I scroll, which reduces the visible screen area. Scrolling in a smaller screen area is irritating.

\- Comments and posts are mixed up. I'm reading the comment on a post, and it says there are two responses, so I click that, and I'm suddenly taken away from the comments I'm reading. I never know on Medium whether a click will yank me away from what I was reading.

As you can see, Medium breaks a lot of things that were working with every other blog for many years. Please, if you want to innovate, make sure you don't already break what is the norm. That would be like making an "innovative" car that doesn't have seatbelts.

If this is considered "idealistic", I don't mind them failing.

<comment><USER8> > There's a persistent footer when I scroll, which reduces the visible screen > area.

That fad is spreading on the web like wildfire. Looks like we (mostly) survived the low contrast epidemy only to get afflicted with the reduced reading space one. Some sites even stick in a huge (as in 1/4 of the screen) persistent header...

<comment><USER9> It's even worse when it's a sticky header. In those cases when you hit the "Page Down" key the content is covered by the header and you have to press "Up" a few times to read it.

</comment></comment></comment><comment><USER10> Personally, I respect Ev more for his decision to put on the brakes, even when Medium seemed to be a financial success. We already have enough blogging platforms. We really don't need yet another one.

Ev Williams' mission to change the way journalism is funded and operated though, that's a truly noble ideal. Yes, it's likely too ambitious to succeed. Yes, it's a moonshot. But it's exactly the kind of moonshot that Silicon Valley needs to be taking. It's exactly the kind of moonshot that the world could really benefit from. I applaud him for his decision to put his unicorn at risk, in order to build something that could truly change the world.

<comment><USER11> He could have done that with a lot more tact - informing publishers and employees. He's non-confrontational - ok. Hire someone that isn't. Moonshots carry a risk and it's not all his risk. It's the investors, the users, the employees as well.

<comment><USER12> Well said. Hindsight is 20-20 though. I imagine it's not easy to make the right calls when one is in the driver's seat.

My takeaway: It's freaking hard to be CEO.

<comment><USER13> Letting employees know they're getting laid off before they read about it somewhere else isn't really one of the great mysteries of life, and doesn't take decades of CEO/executive experience to figure out. It's sort of a basic human decency thing. It shouldn't be that hard to be a decent human being.

</comment></comment></comment></comment><comment><USER14> This doesn't surprise me, based mostly on the occasional conversations I've had with Medium employees (all of whom raved about their jobs, by the way).

Medium seems to fall into a growing group of companies that are more interested in innovating on their management/internal politics than actually creating innovative products. (Buffer, which also had layoffs and management departures, is another example.) They're very invested in trying new management frameworks like holacracy and signaling a commitment to things like transparency or diversity. This is all well and good (plenty of very successful companies have innovated on internal structures as well).

The problem is when it becomes the entire emphasis of the company. If you look at what people's priorities are, it seems like they're more interested in the company than the product. You can't have two P0s and until you have a successful and profitable product, that _needs_ to be your P0. [0]

[0] Unless you can fund things indefinitely off your personal brand and net worth.

</comment><comment><USER15> I think the problem with journalism is that it was never the actual business. What it was, were supporting and adding sophistication to the news industry, but it was never actually central to the business. But the value of news was that it didnt used to be widely available. That was actually what people paid for. The news, not the journalism. And so what we see are all these people in the news industry trying to improve their business by improving journalism.

<comment><USER16> Don't forget classified ads either. Historically the rule of thumb is that subscriptions and newsstand sales would more-or-less cover the cost of ink and paper. Ads (and especially classified ads, which were an enormous money spinner) paid for the actual journalism.

The moment the internet gutted ad revenue, this stopped being viable.

As you say, journalism made the news prestigious, but the news didn't actually make money either; it was just there to get eyeballs onto the ads.

<comment><USER15> I would disagree somehow. You are right that classified makes money. However; news was not freely available as it is today and thus I would say that news was actually something people used to pay for. It was not as lucrative as the classified but it was a major contributor to people actually buying newspapers. They simple did not have another choice if they wanted to know what was going on.

<comment><USER16> > It was not as lucrative as the classified but it was a major contributor to > people actually buying newspapers. They simple did not have another choice > if they wanted to know what was going on.

Yes, absolutely. But the point is that while maybe people wouldn't have bought a newspaper that didn't have news, _they still weren 't willing to pay for the news component_. When offered a choice between not having news and paying the actual cost if providing it, people have always opted against paying for it.

An obvious analogy is search engines. It's a useful and valuable service, but so far, users have not been willing to pay for the cost of providing one. Every search engine exists either as a loss making venture _or_ is used as traffic/data generation for something profitable which cross-subsidises it. (Even DDG is profitable only due to their ads.)

</comment></comment></comment></comment><comment><USER17> If they are going to a subscription or patronage model, they will need to cut way more jobs and costs. That type of model can work but you have to run very lean, and you might end up replacing those ad banners with ones begging for money. Organizations like NPR and Wikipedia are some of the largest to use such a model, they have the benefit of goodwill and tax breaks due to their non-profit status, and their cost structure and business model looks very different from most valley startups. You can kiss that valuation goodbye.

<comment><USER18> The model here isn't NPR or Wikipedia, it's Patreon and Twitch.

The former is traditional philanthropy, but the latter is an interactive way to support content creation. I'm not saying that those models will necessarily translate to Medium, but that certainly seems to be the idea.

I urge anyone that's curious to go give Twitch a quick look. Spend a good half hour in a few different channels. It's really interesting. Some of the streams are what you would expect: skilled gamers playing at a high level. But many of them are very creative in how the develop a community, how they interact with viewers and chat, and what sort of entertainment experience they provide. I think that most people will 'get it' if they watch for a bit. It's compelling entertainment, and lots of people are willing to throw a lot of money at it.

The point is that it's just an entirely different phenomenon from philanthropy. NPR and Wikipedia really have no place in this discussion because they are so different.

</comment></comment><comment><USER19> The usual sensationalistic headline, but the gist of the story is crystal clear: ads and writing is an inherent and probably impossible-to-solve conflict of interest.

The media that won't change their business model during the next couple of years will probably be extremely diminished in quality, and thus influence. Can't wait.

(And no, the latest fad of "native advertising", with ads disguising as articles, is not the answer. Hopefully this will fall to the wayside as more people learn critical thinking and sourcing [I don't see much evidence for this yet but I'm very hopeful ;) ])

But, the risk of losing the cadre of serious journalists at the large outlets that today are struggling, and who rightfully demand a good salary for their critical work (as members of the fourth estate), is a real one which needs to be solved. If Medium can be a part of forging a new way ahead, then more power to Ev. Haters always gonna hate, often without much thought, self-reflection, or humility.

<comment><USER20> Ads + Writing worked just fine for most of the last century when print was the only option.

The dead elephant in the room is the fact that the online ad experience is the most irritating and least useful ad experience in all of history.

I use Google to search for A Certain Thing to buy, I buy it, and BAM - I spend the next month getting ads for the same Certain Thing.

The ads are completely useless to me, because I'm no longer interested in buying A Certain Thing. The ads are useless for the advertiser, because they're paying for nothing. And the ads themselves are usually animated and irritating anyway.

Print ads, especially in the glossy predecessors of what Medium would like to be, were often professional, creative, and at least potentially interesting.

The online ad industry has _never_ understood the difference between adding value to readers and repeatedly smacking them around the head in a misguided attempt to force them to click the BUY NOW button.

Medium missed the point of all this. The content varies from outstanding to not so good, the design is great. But it's a bit late to be thinking about monetisation, because now it's just replaying the mistakes made by every other media platform over the last decade and a half.

<comment><USER21> > I use Google to search for A Certain Thing to buy, I buy it, and BAM - <USER2> > spend the next month getting ads for the same Certain Thing.

Yeah Google ads are awful now. The best bang for your bank, ads wise? Facebook and Super Bowl commercials.

> Print ads, especially in the glossy predecessors of what Medium would like > to be, were often professional, creative, and at least potentially > interesting.

When was the last time you purchased a product with print ads? I used to subscribe to a ton of magazines a little over a decade ago but cancelled them all because for every 1-2 articles of content there were 3-4 ads. It got to the point where I could finish a magazine, cover to cover, in minutes because of how many ads were in there.

<comment><USER22> Amazon ads are no better, and for the exact same reason. I'm old enough to remember when Amazon first appeared, everyone was talking about how they were going to be able to make magic suggestions. Turns out, all the magic is just telling you to buy again what you JUST BOUGHT.

Netflix recommendation engine isn't amazing either -- except that, in the case of Netflix, I often like to watch a show a second time.

</comment></comment></comment></comment><comment><USER23> What actually happened to the ideal of rewarding content based on 'attention minutes'?

My experience of Medium is that the content that gets surfaced is from people who are already 'notable' in some other way (think that Medium allowing you to import your Twitter followers and have then auto follow you on Medium doesn't help this), and low value Steve Jobs self-help bullshit.

I can buy into curating 'hidden gems' using data in the way Spotify does, I can get behind breaking unheard voices, but I can't see how the current model of giving famous people a megaphone was ever going to upend journalism.

<comment><USER24> I've really enjoyed some of the articles I've read on Medium and would love to support the authors. However, one of the hardest things is finding other similar or interesting articles. I'd pay a monthly fee for a list of daily/weekly articles that ML or user like me recommend. I love to learn but the hard thing is sometimes finding the new thing to learn about.

</comment></comment><comment><USER25> I mean what Medium is beside a glorified Wordpress? I still don't understand how very simple business like that can raise hundred of millions...

<comment><USER26> > I mean what Medium is beside a glorified Wordpress

Wordpress (well Automattic) is a >1 bil company, operates about 1/5th of the websites on the internet, spawned a massive industry (and depending on how you slice it, also a subindustry) that provides jobs for hundreds of thousands of web developers and designers, and greatly shifted the nature of blogging and websites on the internet. So yeah, I'd say if there's a company that claims to displace Wordpress it's not unthinkable for it to raise hundreds of millions.

<comment><USER27> You're conflating two very different things. WordPress.org is open source software that runs a substantial portion of the modern web and do all those things you say. WordPress.com is a hosted blogging SaaS like Blogger. Medium is a WordPress.com competitor, a very important distinction.

<comment><USER28> The point remains; given the size of Automattic/Wordpress.com, it is very understandable how a wordpress.com competitor founded by the creator of blogger could raise large sums of money.

</comment></comment></comment></comment><comment><USER29> I deliberately avoid using ambitious publishing platforms. I don't think this is an industry where you can grow your revenue without defeating the purpose of the product. This is an industry where you have to survive on tight margins, and figure out how to reliably provide the service longer than your users live without losing your wife. It's not glamorous, but there is no other way to offer a platform worth publishing on.

If your business is going to fail after less than a decade of hubris and greed, then why not use any other blog platform?

</comment><comment><USER30> >Medium was a "dream job."

well they were half right

</comment><comment><USER31> From the article, "industry insiders have growing doubts about Williams' business judgment and are starting to say the company is his vanity project"

This is the co-founder of Twitter which is still losing money despite being post-IPO and having a huge user base. As far as I'm concerned Twitter is still a vanity project.

<comment><USER32> The difference with twitter is they could fire their way to profitability.

2016: revenue $2.25B; $.9B cost of revenue; R&D $.71B; sales & marketing $.957B; G&A $.29B -> loss from operations ($.367B).

Someone could take an axe to those costs and get the company comfortably profitable.

2016 numbers from page 2 of spreadsheet 2016 q4 selected company metrics and financials available: [https://investor.twitterinc.com/results.cfm](https://investor.twitterinc.com/results.cfm)

edit: thanks @mastazi

<comment><USER31> While the scale is different I don't see that the underlying issue is.

What you are suggesting about making Twitter profitable (which I happen to agree with) seems to be what they are attempting to do at Medium with these layoffs.

An aside on the Twitter front though; at this point I'm not sure cost slashing is going to help their stock prices at this point even if they turn a profit as they are already showing declining revenues.

<comment><USER32> A prerequisite to the cut-your-way-to-profitability plan is income. There's no evidence Medium had much income.

<comment><USER31> Can you provide evidence there is no income? They aren't a publicly traded company so I haven't seen their earnings reports...

<comment><USER32> It's a personal guess, based on knowledge of the ad market, inferences from their firing decisions, and gossip from some friends who know people there.

</comment></comment></comment></comment></comment></comment><comment><USER33> As a blogging platform I'd be happy to pay a few dollars a month, but no more. I look at other platforms like Ghost, who want $20/mo, and I wonder who in their right mind signs up for it. You can host your own site for far less.

<comment><USER34> That rather depends how you value your time w.r.t the opportunity cost of doing other things. Valuing my marginal time with a purely internal cost metric of $500ph, that $20 equates to a tipping point of 2.5 minutes a month on the complete hosting setup & management. Since it will invariably take more than that even amortized over a year it's a no-brainer: I'm okay with paying for blog hosting, assuming it's a service offering the same capabilities and quality level I'd build for myself.

NB: I receive no additional value clawed back from DIY since I do not desire any additional experience with building, configuring, securing, managing, monitoring and maintaining web servers and/or content management systems.

</comment></comment><comment><USER35> I view Medium not like a news or blog, but at its best - like the OpEd page of a major newspaper. Medium destroys the average newspaper website experience - ad crazy garbage everywhere.

They should lock down public figures who are writing important articles.

For instance, why not put someone like a Colin Powell on a retainer, to write regular articles, and he writes exclusively for Medium. There are some powerful figures like that - retired, out of political offce. Meanwhile they should be also finding the young important voices of the future, who can be had cheap at this point.

<comment><USER36> "why not put someone like a Colin Powell on a retainer"

Colin Powell on retainer will make Medium money how?

<comment><USER37> As it is, I never go directly to Medium, I only read their articles when an aggregator like HN links to it. If Powell wrote for them, then some percentage of those random visits I'd go "huh. Colin Powell."

<comment><USER36> This is the classic "1% of Colin Powell" fallacy.

</comment></comment></comment></comment><comment><USER38> > "It comes down to how dysfunctional the place was,"

I'm not an insider by any means, but right from the early days of Twitter, I'd heard this word - dysfunctional - to describe Twitter a lot too. All those "fail whales" and strange and sometimes sheer dickish moves (like pulling API access to developers) were just inexplicable.

</comment><comment><USER39> I feel medium would have a chance if they allowed video and audio content to be published there. They already have the users that produce such content. Imagine it like a youtube/soundcloud for adults (I don't mean pornographic content). They could then sell many products and services around it.

<comment><USER18> First, I'd love for Youtube to see more competition.

But, honestly what Youtube are you using? Despite the glut of kid-oriented content on the site, I see almost none of it. The hobby scene alone is a huge segment of the site and caters more to the 30-60 bracket than any other.

<comment><USER40> Before you find "your corner" of YouTube it looks pretty bad. I get slightly annoyed/confused every time I see the front page without being logged in.

</comment></comment></comment><comment><USER41> This bit:

"And the move infuriated some of Medium's publishers, who were not warned and had bet their livelihoods on Medium and the business model Williams was ditching."

This reminds me very much of when Dave Winer very suddenly shut down weblogs.com. I remember everyone was furious with him then. The rage was personal back then, as the group of people who were weblogging was smaller, and the folks on weblogs.com tended to be the tech elite, many of whom knew Winer personally.

</comment><comment><USER42> First of all, thoughts go out to everyone laid off. If there are any SRE/SWE looking to work on ops problems in the Washington/New York areas hit me up.

I really really wanted medium to be successful. Over the past several years I have tried several different places to write/host my blog and medium by far was my favorite. I loved the design, editor and most of all draft/sharing for in-progress posts. I hope they can find a better business model that still keeps same spirit.

</comment><comment><USER43> TL;DR for people who simply _aren 't_ going to turn off their ad-blocker for businessinsider.com?

</comment><comment><USER44> That sad puppy face headline photo pretty much sums it up for me.

</comment><comment><USER45> > _They were shocked. Their adored boss, billionaire CEO Ev Williams, best > known as the cofounder of Twitter, seemed to care so deeply for each of > them._

LOL, as if CEOs (with the exception of some outliers in small businesses) ever care for their employees at the personal level. As soon as the company is in danger, it's off they go. And when the company does well, they aren't going to share the loot that much either.

<comment><USER46> Jim Barksdale : "I'm not your Daddy and this isn't a family"

<comment><USER47> Mind providing a source for that quote?

Both Google and Bing link to your comment as the canonical source for that quote from Barksdale.

<comment><USER46> Well, I was there so it came from my memory.

Some googling did drag up this interview, so presumably I did not dream it: [http://articles.latimes.com/1996-03-17/business/fi-47920_1_n...](http://articles.latimes.com/1996-03-17/business/fi-47920_1_netscape- navigator)

</comment></comment></comment></comment><comment><USER48> I like Medium for browsing front end dev articles in the morning.

But I think there is a big UX and design issue that should be questioned : the "feed".

This concept has been overused and it doesn't serve users. When I read on Medium, I'm in the mood for reading programming stuff, or design stuff, or other stories. But I'm rarely in the mood for reading a completely random feed of all those topics intermingled. That makes no sense to me.

And you can follow "Publications" but it doens't help very much, you still get a "feed" in the homepage. And the publications don't really work as a magazine rack.

That imho is the biggest weakness of their design.

How would I solve that? First off stop "feeding" people. I mean just the term is wrong. Why do we need to be "fed"? The assumption for this design I assume, is that a feed makes it easy to discover content and for the initial experience. But why should it remain the central piece of focus everytime you start the app?

I think it would make more sense to add the concept of magazines. That is why I think Flipboard works so well (at least for me). The problem with Flipboard is that it also treats every magazine as a feed, and is designed primarily as a RSS kind of consumption where old content is to be forgotten while only new content is relevant. Thus it also doesn't work as a repository of valuable articles. A lot of things are written that are timeless and both the Flipboard and Medium approach and insistence on "current day" writing/ stories reduces the value of these tools.

What I would suggest is to add the concept of magazines at the very least. Let people create "baskets" of interests, and let them drag and drop tags into these baskets. Then present those "smart magazines" with tags showing where there are updates?

\----

As an aside my experience with Medium last month could be summed up in two words: "feminist rants".

Ever since I started using Medium, I thought.. I already use Flipboard and Feedly. So let's focus. There are some pretty cool CSS/Javascript articles on here so I decided to follow exclusively programming and design topics. I would read Medium in the morning to catch up on front end dev lang.

But.. Medium had another idea. My feed kept getting ridiculous feminist rants and other political B.S. I don't want to read. No matter how many times I pick "Show fewer stories like this" I couldn't get rid of them. This happened for several weeks.

I contacted them because I thought my account was the perfect example of something wrong with their recommendation algorithm. Why on earth did Medium keep saying I am interested in feminism when I NEVER recommended any such articles (they tend to have obnoxious click bait titles and terrible writing)?

I looked through every person that I may have followed or recommended. I could'nt find anything. The closest to a meaningful connection I could see is one female journalist who "liked" on of my responsoes. Mind you Medium considers a simple comment to someone else's story as a "story". As if a comment had the same value as writing an articile in the first place. But I digress...

So I blocked a couple people. First off, they don't disappear from the notifications pane. This is WRONG imho.

Secondly, it didn't change squat.

Eventually I became sick and tired of seeing feminist rants in the middle of my programming / design feed; so I deleted my account and started anew. Hey at least Medium got this right : you can delete your account entirely and it was easy.

So here is my tips for people who still want to use Medium:

\- NEVER EVER follow anybody whom you aren't sure that they share your interests 100%. \- NEVER EVER recommend any articles unless you reviewed the tags and all the tags are specific enough to your interests. (Medium loves to make all kind of tangential connections and also recommend you stuff based on extremely lose tags like "Journalism" or "Essay"... follow these and soon enough raging feminists will entertain your feed every day).

Funny enough even with these rules in place. When I created my new account I still got an influx of feminist/political rants (bad writing) but they were gone after a few days.

And I realize that I use Medium in a way they probably didn't mean to: I really focus my feed on an area of interest. But then again they designed this completely wrong putting things backwards. When I go into a newspaper shop, I browse the rack for magazeines I'm interested in. I don't go to the owner and say, "hey you got something from me to read?" And even if I did, he'd probably look at me weird for a moment, then he'd be like "well, what do you like to read?"

Presumably this is what the tags system is supposed to do. Many online sites lets you pick your "interests" whne you creat a new account. But the analogy stops herE. Because in a newspaper shop, I'd tell the guy "well, videogames, and uh.. science". And he 'd point me to magazines. He wouldn't print a "feed" to me of random crap from different sources.

\---

PS: Also please stop writing "stories" in your iOS updates and tell your users what you changed or fixed, even if it's minor thing. Yeah, we get it you're all about "stories". Jesus. Stick to medium if you want to entertain people, and serve your users by describing what yo uactually changed or updated, even if it has to be the usual "misc performance fixes".

</comment><comment><USER49> I just use gitbook nowadays.</comment>


Want to Write a Compiler? Read These Two Papers (2008) - <AUTHOR> http://prog21.dadgum.com/30.html <comment><USER2> 'Compiler Construction' by Niklaus Wirth[1] is a pretty good book too. It's got the hands-on feel of Crenshaw's book with a quick but, not too superficial, introduction to theory. The book is little more than 100 pages long.

The compiler is written in Oberon however, which is also the source language (actually the source language is Oberon-0, a subset) but, Oberon is super simple and can be learned on the go.

[1] [https://www.inf.ethz.ch/personal/wirth/CompilerConstruction/...](https://www.inf.ethz.ch/personal/wirth/CompilerConstruction/index.html)

<comment><USER3> I wish someone would take that content and give it proper typesetting; the content is quite good and accessible, but the presentation makes reading quite unpleasant.

</comment></comment><comment><USER4> I agree. I remember my compiler class where we went through the whole Dragon book and we had a lot of theoretical knowledge, but we were disappointed because we practically couldn't build a compiler. We went in too much detail too fast without having a good understanding and practical examples with compilers.

<comment><USER5> > the whole Dragon book

I learned compilers from Al Aho, and believe me, the class was no better in person. Mostly in-person waxing poetic about his time at Bell Labs...

<comment><USER6> Dinner with Al Aho was one of the highlights of when I visited Columbia a while ago. He's simply an awesome person. And he's done some fantastic work - Aho-Corasick is a great algorithm. Alas, the Dragon Book was one of the low points of my undergraduate education, though I had a great teacher who pulled out a terrifically fun class despite the book. (Thanks, +Wilson Hsieh.)

In fairness, though -- or more an admission of how wrong we can be about things like this -- I subscribed to the "parsing is boring and solved" belief until Bryan Ford's Packrat Parsing work made me realize that it had just gotten stuck at a traffic light for a few decades.

<comment><USER7> Veering a bit offtopic, but does anyone have any pointers to important recent work on parsing? There are alot of papers out there and I guess I don't know how to sift through them. I've heard the "parsing is solved" line before, but so much of my time is spent doing some type of parsing that even incremental improvements are extremely interesting.

<comment><USER8> PEG (Packrat) is hot now.

<comment><USER9> Interesting paper on left-recursion in recursive descent parsers like PEGs and Packrats

[http://web.cs.ucla.edu/~todd/research/pub.php?id=pepm08](http://web.cs.ucla.edu/~todd/research/pub.php?id=pepm08)

<comment><USER10> If you're interested in left-recursion in PEGS then, at the risk of gross immodesty, you may be interested in [http://tratt.net/laurie/research/pubs/html/tratt__direct_lef...](http://tratt.net/laurie/research/pubs/html/tratt__direct_left_recursive_parsing_expression_grammars/)

With less risk of immodesty you may also find [http://arxiv.org/pdf/1207.0443.pdf?ref=driverlayer.com/web](http://arxiv.org/pdf/1207.0443.pdf?ref=driverlayer.com/web) interesting.

There's probably more recent work than these two papers, but I'm a little out of date when it comes to the PEG world.

<comment><USER9> Thanks, looks like you've put a lot of work in to it and I'll enjoy reading it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> I was amused by _" The authors promote using dozens or hundreds of compiler passes, each being as simple as possible."_

That's kind of a desperation move. There was a COBOL compiler for the IBM 1401 with about 79 passes.[1] They only had 4K or so of memory, but they had fast tape drives, so each pass read the previous intermediate form, did some processing on it, and wrote out the next intermediate form. Except for the passes which did sorts.

[1] [http://bitsavers.informatik.uni- stuttgart.de/pdf/ibm/140x/C2...](http://bitsavers.informatik.uni- stuttgart.de/pdf/ibm/140x/C24-3146-3_1401_cobolOper.pdf)

<comment><USER8> This is the only sane approach. Small passes are easy to write, easy to understand and easy to reason about.

And if yoy worry about performance, your compiler can fuse passes together in many cases.

<comment><USER12> Have you tried this approach? If so I'm curious to hear about experiences.

My own experience with far fewer stages is that while it becomes easy to understand what each stage does and how, it becomes hard to keep track of how each stage interact, as each intermediate output in effect becomes a language dialect of sorts.

I'm still not decided on whether it's a net win or loss.

<comment><USER13> Yes. I co-founded a startup building optimizing compilers for high-performance telecommunications processors in the early 2000s (acquired by Intel). In any complex software system, building powerful, composable and modular abstractions is critical for managing complexity. Having many composable passes is exactly that. We were a small team (6 people) and a modular architecture maximized our productivity and made it possible to complete with teams many times our size. We used a unified IR throughout the compiler so it had a consistent semantics, but the IR could support various canonical forms or constraints that were managed explicitly by the compiler. Instruction formation involved three steps: fragment selection by tree covering (think of load with post increment or a SIMD instruction as multiple fragments), grouping of fragments into instructions, and grouping of instructions into issue slots in the scheduler (several of our targets were VLIW). In addition to constraint, we had properties like SSA vs multiple assignment, structured control flow vs basic blocks, certain kinds of cleanup, etc. A pass could declare its requirements (SSA, structured control flow, pre-fragment) and the compiler would check the properties, possibly running passes to create them (e.g. put in SSA form). Having separate cleanup passes meant transformations didn't have to clean up after themselves, often making things vastly simpler. Analysis passes (dataflow, alias analysis, various abstraction interpretations) were independent of the properties because the IR had unified semantics. That said, it is true our compiler didn't have the fastest compile times (multiple times slower than gcc on targets we both supported), but we were a highly optimizing compiler and our generated code was significantly faster than the competing alternatives (if there were any).

<comment><USER12> > In any complex software system, building powerful, composable and modular > abstractions is critical for managing complexity.

Yes, but as Wirth showed already in the 70's, you don't even need an IR in order to do this, much less separate passes.

For a highly optimizing compiler like yours the complexity might have been unavoidable anyway, though (a lot of the simplicity of Wirth's compilers comes from a long held insistence that no optimization could be added to the compiler unless it sped up the compilation of the compiler itself - in other words, it needed to be simple enough and cheap enough to apply to the compiler source code to pay for itself... needless to say this implicitly means that most Wirth-compilers omit a lot of optimizations that are usually included elsewhere, though some of his students did implement some impressive "unofficial" optimizing variations of his compilers that were also blazing fast)

</comment></comment></comment></comment></comment><comment><USER14> If you're totally new to this, Peter Norvigs guide to a scheme interpreter in Python[1][2] is the best! Its short and sweet and gave me enough of an idea of the basic parts to start piecing stuff together.

[1] [http://norvig.com/lispy.html](http://norvig.com/lispy.html) [2] [http://norvig.com/lispy2.html](http://norvig.com/lispy2.html)

</comment><comment><USER15> Post-2008 I'd really push [http://www.hokstad.com/compiler](http://www.hokstad.com/compiler) . Writing a compiler in the same way you'd write an ordinary program, this was the first explanation where I actually understood the rationale for the choices being made.

<comment><USER12> Thanks for the recommendation, though I'd give the caveat that I've been rambling all over the place, especially in the later parts. I also have lots of changes after the latest part that I need to write about...

I'd really like to get a chance to take the time to retrospectively go over and tighten it up. The trouble with that is that it's easily 10 times+ as much effort to follow along with a project this way and write about each change as it is to cover the finished code (especially thorny issues such as how to avoid wasting too much time on bug fixes that may or may not have affected understanding of previous parts).

Personally, while I'm very happy that people find my series useful, I'd recommend perhaps supplementing or starting with Niklaus Wirth's books or Crenshaws "Let's write a compiler" (one of the ones recommended in the linked artile) for something much more focused. I feel the angles are sufficiently different that it's worth it. And Wirth is my big hero when it comes to language and compiler construction.

While the other suggestion in the article is well worth a read, I'd give one caveat: Lots of passes is _hard_ to keep mental track of. My compiler sort-of does something similar in applying multiple transformation stages to the AST, and I'm mulling collapsing it into fewer stages rather than more because I feel it's getting more complex than necessary. You can work around some of the debugging complexity by outputting each stage to a suitable format so you can test each transformation individually, but it's still hard to keep track of exactly what each stage expects and delivers.

<comment><USER15> > You can work around some of the debugging complexity by outputting each > stage to a suitable format so you can test each transformation individually, > but it's still hard to keep track of exactly what each stage expects and > delivers.

Honestly this sounds like a good case for a type system - which of course isn't available in ruby.

<comment><USER12> Of course it's available in Ruby. You just don't get _ahead-of-time_ verification without lots of extra trouble (implementing it yourself). The problem is not that you can't specify pre-conditions, and use the type system to do it.

The problem is that either you create specialized IR's for each stage, or a lot of this is expressed through tree shape, and it's just painful to mentally keep track of more than it is painful to test.

</comment></comment></comment></comment><comment><USER16> "Implementing functional languages: a tutorial" Simon Peyton Jones [http://research.microsoft.com/en- us/um/people/simonpj/Papers...](http://research.microsoft.com/en- us/um/people/simonpj/Papers/pj-lester-book/)

Is very good and shows different strategies for the runtime.

</comment><comment><USER17> On a related subject, two good resources to learn how to write interpreters are [1] and [2]. The nice thing about approaching programming language implementation with Scheme is that the whole parsing subject is unneeded (the interpreters work by manipulating S-expressions directly), or can at least be delayed until later.

1: [http://cs.brown.edu/courses/cs173/2012/](http://cs.brown.edu/courses/cs173/2012/) 2: [http://www.eopl3.com/](http://www.eopl3.com/)

</comment><comment><USER18> There's an x86 version of Crenshaw's excellent tutorial here: [http://www.pp4s.co.uk/main/tu-trans-comp-jc- intro.html](http://www.pp4s.co.uk/main/tu-trans-comp-jc-intro.html)

I'd definitely recommend it highly; the only way it could be better is if it arrived at a compiler that could compile itself.

Another article which I think everyone attempting to write a compiler should read is [https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm](https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm) \- how to simply and efficiently parse expressions.

</comment><comment><USER19> I haven't read the Nanopass Framework paper, but...

The idea of doing tons of compiler passes works well in a functional context, where functional separation i the preferred method of abstraction, and you can use composition to effectively transform all your passes into a single pass.

However, actually _doing_ that many passes seems like it is going to end badly. Even if you don't touch disk, you're doing mean things to the memory subsystem...

<comment><USER8> It is much more memory-efficient than thrashing a single graph over and over again. Rewriting and compacting trees is good for cache locality.

Also, for the trivial rewrites (e.g., variable renaming) your compiler can safely choose to replace a cooying rewrite with a destructive update.

<comment><USER19> > It is much more memory-efficient than thrashing a single graph over and over > again. Rewriting and compacting trees is good for cache locality.

To be clear: if you are thrashing a single graph over-and-over again, you are doing many passes. Rewriting and compacting trees is just a way to make the multiple passes a bit less painful.

<comment><USER8> > if you are thrashing a single graph over-and-over again, you are doing many > passes.

A single "pass" can be thrashing a graph many times too, think of the things like instcombine (in LLVM parlance) or ADCE.

Essentially, compilation is rewriting of a source AST into the target machine code. It is up to you how to structure this rewrite, but the amount of work to be done remains the same.

For a human it is much easier to structure such a rewrite as a sequence of very trivial changes. And a "sufficiently smart" compiler must realise that it can be done in less steps.

<comment><USER12> > Essentially, compilation is rewriting of a source AST into the target > machine code.

While that is true of most modern compilers, do consider that there's the whole Wirth school of compilers that don't use an AST at all but generate machine code directly during parsing.

> For a human it is much easier to structure such a rewrite as a sequence of > very trivial changes.

I'm not convinced, as I've written elsewhere, because while the changes may be trivial, you need to keep track of what a program is expected to look like in between each stage, and that becomes harder the more stages you introduce. E.g. my forever-in-progress Ruby compiler has a stage where it makes closures explicit: It allocates an environment to store variables in and rewrites variable accesses accordingly. For following stages the language I'm working on is different: I can no longer use closures.

The more stages you have, the more language dialects you need to manage to mentally separate when working on the stages. And if you decide you need to reorder stages, you often have painful work to adapt the rewrites to their new dialects.

The end result looks very simple. But try to make changes and it's not necessarily nearly as simple.

<comment><USER19> You can solve this by having one "language" that can represent all intermediate stages. This has a nice side effect of allowing you to easily change the ordering of passes if that turns out to produce better results.

<comment><USER8> In my experience such languages are very dangerous and it is better to have a chain of more restrictive languages instead. Most passes only make sense in a fixed sequence anyway. LLVM is infanously broken in this regard, btw., there are too many implicit pass dependencies.

E.g., there is no point in keeping a one-handed 'if' in a language after a pass which lowers it into a two-handed 'if'. There is no point in keeping a 'lambda' node in your AST after lambda lifting is done.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> I like the nanopass concept, particularly I am applying it to domain specific languages. It is not necessarily so inefficient if it is optimized. For instance, data indexing and methods such as RETE networks can make the cost of running an irrelevant pass close to nothing.

</comment><comment><USER21> You want to be paid to write a compiler? Want to learn some techniques not yet covered in the literature?

Take a look at [http://www.compilerworks.com/dev.html](http://www.compilerworks.com/dev.html)

</comment><comment><USER22> >Now imagine that it's more than just a poor choice, but that all the books on programming are at written at that level.

Hmm, I personally found the "Dragon Book" very accessible. And I'm someone without formal CS education.</comment>


The Real Monopolies Are Google and Facebook - <AUTHOR> http://www.nytimes.com/2016/12/13/opinion/forget-att-the-real-monopolies-are-google-and-facebook.html <comment><AUTHOR> I don't agree with the author's argument. It's an over-simplified view of the forces that have caused the Internet in general and Google/Facebook specifically to grow to wield such enormous influence.

That said, this perception - that Silicon Valley is no longer a force of good and must be regulated - will come to dominate technology policy discussion for years to come. If Silicon Valley "loses" this debate, and is seen not as an engine of growth and a force of positive change across myriad industries, the impact will materially change this industry and the lives of those who read HN.

Some of the forces in the other direction: Large-scale investment (and hopefully wins) in life sciences, agriculture, transportation, infrastructure. Businesses that share their financial success more broadly. Empathy. Increasingly global or at least non-SV concentrated businesses. More diverse leadership. Less of an ego-centric view of the technology universe.

</comment><comment><USER2> I am not disputing that those companies are monopolies by reasonable definitions. But they are not trying to merge with other companies right now to create new monopolies, so this is a false choice. We aren't ignoring them to do this, the senate is doing their job by reviewing this merger. Let someone sue those companies like they did to Microsoft in the 90s.</comment>


Gift HN: YouMightBe.org - <AUTHOR>

I registered the domain YouMightBe.org several months ago to use as a way of presenting information about distributism.
But I haven't had time to do much with it, so I'm offering the domain to whoever wants it.
Write a sentence or two to let me know what you'd do with the domain, and I'll choose the person whose idea sounds most interesting.  (Be sure that there's some way for me to contact you to follow up.) <comment><AUTHOR> Link to the domain: <http://www.youmightbe.org>

<comment><USER2> I was actually going through the slides to read about it but I got lost in the slides in the socialism section and couldn't find my way back.

I know from your submission text that you didn't have the time to work on this very much, so I'm not sure if you want feedback. But if you plan to create something in the future which uses this slide effect to communicate info to the reader, you should make it more guided. I just flicked my mouse a little by accident and the whole thing was over for me.</comment></comment>


The Swedish Model - <AUTHOR> http://online.wsj.com/article/SB10001424052748704698004576104023432243468.html <comment><USER2> What Johnny thinks fails to mentions is that since 2006(a major shift in the parlament from socialism(No, not soviet socialism, rather "I dont care how much money you have in your pocket, you are no difference from a poor man, NOW GET BACK IN LINE!") to right wing(Well hello there Mr. Blue Blood, you see that poor man in the line right at the front? Yeah him, well go take a piss on him and take his place. You deserve it, you are after all rich!)) more and more of the good things about Sweden have disappeared.

The leader of Alliansen, Moderaterna, have in the past voted against universal suffrage(1904-1918), 8 hour workdays(1919,1923), the right for women to vote(1919), two weeks paid vacation(1938), free lunches at schools(1946), three weeks paid vacation(1951), civil union(1994)<br /> Thats not even the tip of the iceberg, thats just a snowflake about to land on top of it.

Sweden used to be about social security, the need of the many outweigh the need of the few, arts and giving anybody a fighting chance. That was the Swedish model

Its getting colder, and its getting cold really fast. The Swedish model 2011: getting rid of the expensive social security and lowering the taxes for the wealthy.

<comment><AUTHOR> Actually, what brought prosperity to Sweden was capitalism, not socialism. Those good things you mention are good things in intention, not necessarily in results. [http://www.youtube.com/watch?v=ENDE8ve35f0&feature=autof...](http://www.youtube.com/watch?v=ENDE8ve35f0&feature=autofb)

<comment><USER2> Of course capitalism is a must for building up a welfare, it provides the technical and economical foundation for a working socialist state, I´m not going to argue about that.

How ever as a Swede I have seen the direct changes in the community due to the parliament shift, not all bad of course. But when a country that used to take care about its own, all of a sudden points the middle finger to those who is in need I feel angry and disappointed and somewhat alienated from my own country. I was brought up being told that tax money was going to hospitals, schools, Unemployment benefits etc etc. because everyone has the right to these things, and everyone has the duty to finance it. Now what is happening is that we have the same tax rate as before, except if you are wealthy, then the taxes have dropped or even disappeared, and more and more of the things that where a right in Sweden is becoming a privilege for the people who don´t need it and financed by the lower portion in the social ladder.

Oh, and now we have something called RUT-Avdrag. Its basically a thing where the state pays 50% if you employ a maid or call in someone to clean your house. It was to "create more work" and "to help ordinary stressed career people". As it turned out it haven't created so many new jobs. And the average middle class stressed career person would save more money by taking 4 hours of work to clean by him/her-self than to rent a cleaning person for 4 hours. This was one of the first things Alliansen did for Sweden after they took over the parliament. Oh yeah, and wealth tax was quickly gone too.

Sure, there are some things that should be privatizationed, the railroad to name one(it doesn't work, at all) but you don´t fuck with the health care and the school system and the unemployment benefits to name a few(That made Sweden the awesome country it was) to finance stuff such as RUT-Avdrag and getting rid of wealth tax, and then tell the world "Hey! Look at us and our marvelous economic model"

Also, the person who wrote the blogpost is a party member of Moderaterna witch is responsible for all these changes, so its his view.

</comment></comment></comment><comment><USER3> It annoys me that he keeps saying 'Stockholm' when he means parlement.

The general gist, whilst he makes his bias clear, is fairly well put and supported.

What worries me is the trajectory he wants to launch on:

"Stockholm has also introduced a law that empowers Swedes to chose their providers for health care and other public services. This has led to a robust surge in entrepreneurship within the health-care sector, where more competition is bound to improve services."

Hmm. Right. That works really well elsewhere in the world, right?

We need to get more for our money in healthcare, but I think that comes from effectivness at the regional level and not from inviting private companies to run healthcare for profit.

The school system with 'free schools' - schools run by companies and for a profit - has been, in my direct experience, despicable.

By all means privatise the various misc things that the country still has a stake in. But run healthcare and education on a non-profit basis.

I would go off on a thing about pensions but that's a big ponzi scheme whichever way you look at it. Its not like I or anyone else has an honest answer.

/Swede.</comment>


Relational shell programming - <AUTHOR> http://matt.might.net/articles/sql-in-the-shell/ <comment><USER3> There was an entire system called "rdb" written around this philosophy of flat-files-as-relations:

<http://en.scientificcommons.org/43495509>

I'd be curious if anyone actually used it -- is it obscure because it is a bad idea or because it didn't offer much more over the shell, etc.?

"There are many database systems available for UNIX. But almost all are software prisons that you must get into and leave the power of UNIX behind. Most were developed on operating systems other than UNIX. Consequently their developers had very few software features to build upon, and wrote the functionality they needed directly, without regard for the features provided by the operating system. The resulting database systems are large, complex programs which degrade total system performance, especially when they are run in a multi-user environment. UNIX provides hundreds of programs that can be piped together to easily perform almost any function imaginable. Nothing comes close to providing the functions that come standard with UNIX. Programs and philosophies carried over from other systems put walls between the user and UNIX, and the power of UNIX is thrown away. The shell, extended with a few relational operators, is the fourth generation language most appropriate to the UNIX environment. 1. Fourth Generation Systems In recent years, a variety of developments in programming language design have emerged. Object-oriented languages are becoming common, and languages explicitly supporting multiple tasks and inter-task communication are also gaining popularity. "

<comment><USER4> You beat me to posting this.

Also of interest: NoSQL - a non-SQL RDBMS, seems to have been inspired by rdb and implemented using awk ([http://www.strozzi.it/cgi- bin/CSA/tw7/I/en_US/nosql/Home%20P...](http://www.strozzi.it/cgi- bin/CSA/tw7/I/en_US/nosql/Home%20Page)):

 _NoSQL is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX1 Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March, 1991, page 24, entitled "A 4GL Language". There are a number of "operators" that each perform a unique function on the data. The "stream" is supplied by the UNIX Input/Output redirection mechanism. Therefore each operator processes some data and then passes it along to the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are implemented in memory. NoSQL is compliant with the "Relational Model"._

<comment><USER3> Interesting, didn't know about that one. It looks more modern and usable.

I'm trying to think if I would actually download it and try to use it. Or I could just keep on making use of that all the hard-earned sed/awk magic line noise. :)

</comment></comment></comment><comment><USER5> If you're a student in mattmight's class, you shouldn't read this.

N hfrshy gbby gung negvpyr zvffrf vf gung frg qvssrerapr pna or vzcyrzragrq (zhpu zber rssvpvragyl guna uvf dhnqengvp nytbevguz), hfvat naq .

Vs lbh unir gjb svyrf N naq O juvpu ner frgf (v.r., ab vagreany qhcyvpngrf), N - O pna or rkcerffrq ol "fbeg N O O | havd -h".

Bs pbhefr, vs lbh TAH pberhgvyf ba lbhe flfgrz (naq vs lbh'er ehaavat Yvahk, lbh nyzbfg pregnvayl qb), vg'f rira rnfvre naq zber rssvpvrag: "pbzz -23 N O".

<comment><USER6> That's the exercise at the bottom of the page. ;)

I hope my students don't see this comment.

Edit: Thanks for "encrypting" your post. Decrypting it in one tweet's worth of sed will be next Tuesday's homework.

<comment><USER7> Really? Sed? Me thinks they should TRy harder ;-)

</comment></comment></comment><comment><USER8> The author misses the key command for performing set operations:

        comm

This can perform set differences, unions, and even symmetric difference.

        comm -23 a b   # a minus b
        comm -12 a b   # a and b
        comm -3  a b   # a symmetric difference b (with some extra tabs)

<comment><USER9> Thank you! I couldn't remember what this command was called and I was scanning that post trying to see if he'd mention it.

</comment></comment><comment><USER10> A more idiomatic way to phrase the awk in the Selection example:

        awk -F ":" '{ if ( $3 != $4 ) print }' /etc/passwd

would be like this:

        awk -F ":" '$3 != $4 { print }' /etc/passwd

The first is obviously valid awk, but the second highlights awk's unique "pattern { action }" syntax.

<comment><USER11> I would argue the following below is a little nicer:

        awk -F':' '$3 != $4' /etc/passwd

</comment></comment><comment><USER12> _join_ is also worth mentioning: as expected, performs relational join of supplied input, equivalent to SQL's STRAIGHT / LEFT / RIGHT JOIN.

<http://man.cat-v.org/plan_9/1/join>

<comment><USER6> I just posted an update. Thanks for pointing this out!

<comment><USER13> It looks you changed the URL of your blog post too?

I got two different RSS items for the post and the update, and the original post's location (/articles/relationa-algebra-in-bash/) no longer resolves. Was that intended?

</comment></comment></comment><comment><USER14> some one-liners that are often useful:

        cat a b | sort | uniq > c      # c = a union b
        cat a b | sort | uniq -d > c   # c = a intersect b
        cat a b b | sort | uniq -u > c # c = set difference a - <USER2>

</comment><comment><USER15>
      Sed and awk have become a lost art. They're the only
      languages I know that frequently beat perl in semantic
      density. If you haven't learned them yet, you'll be
      impressed with what they can do for you.

I recently learned that sed had labels, and that you could repurpose its inner spaces as state. I sat down for a minute, while running a ~tetris written in sed.

</comment><comment><USER16> Nice article. I actually worked for a Japanese company that uses relational shell scripting for developing web systems. They use space separated tables and have developed a set of commands to process text files. Those commands are pretty useful and easy to use. Few examples would be:

\- self 1 2 fileName - selects first and second column from the file. There is corresponding tagself command which assumes the first row of the file is the column name. \- Join commands which are essentially implementations of sql joins. \- Sum commands. One that I remember is sm2.

       $ cat data
         a 15 asdf
         a 30 aaa
         b 13 bbb

       $ sm 1 2 data
         a 45
         b 13

So you would chain these with unix native commands such as awk, sed, grep and do some interesting stuff. Here is a very simple example shows how it would look like:

cat data | self 1 2 | sm 1 2 | grep some_expression > new-data

There is a lot other of these commands that do various sort of thing with text and html files. Anyone who understands japanese might wanna check this out <http://www.youtube.com/watch?v=1MYKp7dswQg>.

</comment><comment><USER17> These tools have been bacon saving on more than one occasion. When it's time to marry your shell hacking output to Oracle I recommend checking out external tables.

<comment><USER18> Did someone say "bacon"?

<http://basic-converter.org>

BaCon, by Peter van Eerten, provides a useful replacement for shell scripts when you need more power, but don't want to move up to the complexity of C.

</comment></comment><comment><USER19> Another relevant command originating (if I guess correctly) in AT&T UNIX and present in GNU coreutils: paste. There are also ways to put the whole SQL abstraction over text files, one of which is Perl DBD::CSV.</comment>


Ask HN: How to create a new unit of measurement? - <AUTHOR> Anyone here has experience in creating a new measuring system in any field. (E.g. size of clothing or any other physical product) <comment><USER2> Swatch Internet Time might be an interesting case study: [https://en.wikipedia.org/wiki/Swatch_Internet_Time](https://en.wikipedia.org/wiki/Swatch_Internet_Time)

</comment><comment><USER3> No direct experience myself, but MathJS has an API for creating new units of measurement that you might consider for prototyping/experimenting/initial development:

[http://mathjs.org/docs/datatypes/units.html](http://mathjs.org/docs/datatypes/units.html)</comment>


Russ Olsen: The Best Programming Advice I Ever Got - <AUTHOR> http://www.informit.com/articles/article.aspx?p=1926692 <comment><USER2> Engineers always present this as a false dichotomy. You can work with other people (and their code) without pissing them off. "Stay the hell out of other peoples code" is no better than "Act with impunity". Thankfully there is a middle ground. It's called talking to people.

People who are the most passionate about programming are the same people who tend to identify with the code _their code!_ If you say the code is wrong, you are also saying they are wrong. You can mitigate this type of territorial response by convincing them to disassociate their identity from a code block. We aren't a group of rockstars writing hit after hit, we are a team of engineers iterating through possibilities and routing around roadblocks.

For dealing with intergroup rivalry you're better off going to the group responsible for that area first to show your results. Get their support before going up the ladder. Let them be part of the success. Otherwise you paint them into a corner when the big boss comes down and says "Why are other teams fixing your problems!?" Now they must attack your solution to justify themselves.

edit: I'm seeing a lot of other threads say "Just don't work at places where this is an issue." When you find robot planet let me know, because this is an issue everywhere. With your customers if not with your co-workers.

<comment><USER3> "You can mitigate this type of territorial response by convincing them to disassociate their identity from a code block."

Absolutely. In some ways, this is my biggest job as "manager". I try and rotate the team so that no one has "ownership" of a particular feature (we're self organizing but I try and coach people appropriately ;)).

Sure, Bob may have been the person that originally penned a particular method, but refactoring is a fact of life, and it's likely that, if I've done my job right, over time any member of the team should be able to do a given refactor.

What helps is that you explicitly have someone who worked on a particular block of code _not_ fix any bugs related to it. Give it to someone else. They'll figure it out and make any changes.

Have people pair on initial design/architecture (or have specs authored/tweaked by the whole team) so it's never solely one person's vision of how feature X should work.

I've found the best programmers have a zen-like state of detachment with code they've written. Very good, but not great, programmers seem to tie up too much of their identity with their code; transitioning them from "good to great" almost always inevitably requires detachment.

<comment><USER4> > this is my biggest job as "manger"

I think you chose the wrong word there, but hay.

<comment><USER3> Whoops, fixed; thanks!

</comment></comment></comment></comment><comment><USER5> Like most engineers, he did the coding part right, the political part wrong. The right way to approach this would be to hack together a proof-of-concept, get buy-in (and/or participation) from the key engineers of the original system, and slowly build consensus. Yes, it's frustrating. Yes, it takes 10 times as long as just hacking it out. But, you end up not looking like an ass and also probably will end up with a better solution anyway because even you, Mr. Superstar programmer, might miss some details that the other people who have been working on the project longer will catch.

In the situation where you come in after a long weekend and show how you've managed to "fix" other engineers work you end up pissing people off because it makes them feel like you're making them look bad. Make them a part of the solution.

The advice of staying out of other people's code is either good or bad depending on what it means to "stay out". Avoid reading others people's code? Avoid trying to come up with alternative solutions to other people's code? Bad idea. Avoid going in and rewriting other people's code without syncing up with them before you demo your improvements to their boss? Yeah, that's probably good advice.

<comment><USER6> "Yes, it's frustrating. Yes, it takes 10 times as long as just hacking it out."

Yes, unless you are immortal, life is too short for this kind of crap.

Multiply the "takes 10 times as long" with an arbitrary n problems, and you soon end up wasting years on things that should take a few days.

One way to make "the best way to have a future is to be part of a team that values progress over politics, ideas over territory, and initiative over decorum." actionable is to change your job if you are working in a company where you have to jump through political hoops and "take 10 times as long" to get engineering improvements done.

Imo, being _able_ to play political games is a valuable skill, to be used on the very rare occasion such game playing is really necessary. But you shouldn't have to do it every other day, especially on engineering problems. In this case, it might be better to just change your job, unless you have very very strong reasons for staying on.

EDIT: Not taking a position on the OP's situation or actions, fwiw. Just saying if it takes 10x time to make changes because of politics, might be time to move on.

<comment><USER5> It depends on the organization how long it takes. In a more 'enlightened' organization it's common courtesy to ping an engineer whose code you are working on improving, and then you can hack away. In a more stodgy one, yes, it could take 10x longer to get everyone on the same page if there are some people whose egos are easily bruised.

Regardless, it's a dick move to rewrite someone's code over the weekend and then roll in on Monday and start demoing it to PHBs that the original authors report to.

It sounds like the author had little respect for the original authors and decided he would swoop in and 'save the day' and not even give them a heads up with what he was doing. Then, he had the nerve to demo it to their superiors, and it's probably not hard to imagine him taking this 'opportunity' to explain why the original authors suck.. I mean, failed to think of this solution. The "but, but, I'm just making the product _better_ " angle provides cover if he's called out on keeping the other authors in the dark.

Being a bit of a cowboy and having tact are not mutually exclusive things. This particular story reeks of someone looking to not just highlight their own skills but to do so at the expense of others.

<comment><USER7> Maybe it was a dick move for people to waste productivity over turf battles. Everyone's time was wasted.

A lot of these political fights sound a lot like working with unions. "Oh you can't do that, it'll save time and we won't get to work as many hours."..and then a few years later they're wondering why the plant declared bankruptcy.

</comment></comment></comment></comment><comment><USER8> Its an interesting anecdote.

There is a lot to be said for the advice "Don't work where egos are more important than the mission." But what Russ didn't learn was "How to get the mission done in the presence of egos." The thing is that there are lots of people with big egos, people who rightfully or wrongfully work against others who threaten their ego, even when doing so is counter productive to the company. What is worse is that as a manager you know these egocentric people are there but sometimes you really can't do a whole lot about that.

However, when you find someone who can get stuff done without rustling the feathers of the prima-donnas, that person should be pretty valuable. A good manager can really appreciate that skill, a poor manager cannot. Allow me to illustrate.

Lets use Russ' example because its out there and we won't get into trouble. Jump up to the corner office and look at what is seen:

1) Product is slow

2) Repeated meetings and updates where the slowness has been raised have been deflected with various plans, arguments about direction, finger pointing, and general lack of progress.

3) Junior programmer rewrites a chunk of the system and shows off an order of magnitude improvement.

4) Meetings where senior people are exploiting that demo to make others look foolish, advance agendas, and generally do damage to others.

Now consider a different scenario

1) Product is slow

2) Repeated meetings and updates where the slowness has been raised have been deflected with various plans, arguments about direction, finger pointing, and general lack of progress.

3) Engineer figures out the problems and, knowing the solution, starts talking to various other engineers about how they decide to build what they build. Asks questions that talk to the bottleneck (Like they might ask, "I'm thinking about using that kind of socket in my code, but I'm not sure about it, how much performance could I expect?" and "I wrote this bit of test code, it just copies stuff around, and it seems to be waiting on the socket a lot, could you take a look and tell me if I'm doing it right?")

Now by planting the questions/seeds around these engineers start to do things a bit differently, the come up with some alternate strategies. The socket gets eliminated and this speeds up the product tremendously. Everyone is excited about how much progress they are making and generally morale improves.

4) Meetings now how have big performance gains, and the product is going to be much better. Congratulations all around.

Now in the latter case the environment gets better, the same result is achieved, but most of the company doesn't know they were the one who 'fixed' the problem. That employee's manager should know, and they should be ready to reward that effort. People who can effect the change you want in an organization without disturbing the politics are really good to have around. Things just 'magically' get better. When they leave it is really obvious that things don't work as well.

<comment><USER9> One way is to improve the code and run it privately yourself. When other people see your system flying just shrug until they are begging to know the answer.

Ideally it would never come to that.

<comment><USER10> Best political advice I ever got was "Never volunteer. Make them ask you to do it."

Every time I've ever fixed something or made something awesome, I've been punished.

The times I've played it detached and cool, grudgingly do some seemingly impossible task (which is actually easy), I get rewarded.

I've said this here before: If you ever do something awesome, tell no one. If it's awesome enough and the stars line up, convert it into your next startup and eat your former benefactor's lunch.

<comment><USER11> _I've said this here before: If you ever do something awesome, tell no one. If it's awesome enough and the stars line up, convert it into your next startup and eat your former benefactor's lunch._

A little machiavellian, but not wrong.

Unless you're an owner or part-owner, the fruits of all your 'awesome' ideas are going to accrue to the owners. Is that what you want most? In many cases, genius coders, professors, and creative people are paid in prestige and exposure, while investors and founders are paid in $.

<comment><USER12> > A little machiavellian, but not wrong.

Because if you do Machiavelli correctly, _you_ get to tell the story of who was wrong.

</comment></comment></comment></comment></comment><comment><USER13> It's an anti-pattern.

If you're working in a team, on a project, or in an organization in which this is the operational mindset, your first goal should be to get the hell out. You're in a Bs hiring Cs situation. And eventually, if someone inside your organization doesn't solve the problem, someone outside (e.g.: your competition) _will_. That's a Christensenian disruptive innovation situation right there.

An alternative goal is to figure out how to do the right thing in such a way that you don't get fired / lose standing over it.

Figuring out how to change the culture might be a third alternative, though this calls for very skillful maneuvering to conduct successfully.

There are exceptions to the general rule. Sometimes checks or controls are in place to prevent thigns from going seriously haywire. But even here, simplicity and efficiency should prevail.

And of course, you should take care not to be guilty of this mindset yourself.

</comment><comment><USER14> This is the real advice at the very end: "But the best way to have a future is to be part of a team that values progress over politics, ideas over territory, and initiative over decorum."

The story is cut short though, and he doesn't really provide any evidence to back up that advice. Did the company that favored politics go out of business. Do company that favor ideas over territory consistently work out better? I think, as engineers, we'd like to believe so, but I'm not sure that's what I've seen from my own experience.

<comment><USER15> Network effects and name recognition can work against it for a time.

I'm thinking currently about the demise of Kodak, and similar situations where where a dominant player is displaced by new technology. Had Kodak pursued digital early and aggressively things would be different now. I bet politics didn't allow that outcome.

<comment><USER16> Are you kidding? _Kodak invented digital photography._ And you know what? They knew better than anyone else that digital photography absolutely sucked relative to film.

If you want to know why dominant players get displaced by new technology, I highly recommend reading _The Innovator's Dilemma_.

<comment><USER17> So what? Someone else invented lots of things, like smartphones and tablets. Has no bearing on whether they are aggressively pursued for profit. And sucked, past tense.

There are any number of better strategies Kodak could have taken besides "waiting to die," as you appear to recommend.

</comment></comment></comment></comment><comment><USER18> If somebody left a sticky saying "stay the hell out of my code" I'd reply "code it so nobody ever has the need to even think about it"; Which would be the polite reponse. You learn so much from others code, what to do and what not to do.

Remember once doing a lovely JSP COBOL program only to have it butched into something with goto all over the place. Turned out that was the standard, no matter how right or wrong, standards help for consitency. Now if you have wild cards who end up obviscating there code, just to stop people touching it then they need help or you will only end up needing alot more help later on when things go wrong and they will. So politicaly the best way and just winning move is to push the standards and if they don't have any then you instigate them. Always some higher up manager who will easily be be swayed, especialy if you can say it will help to eventualy get some standard like BS5750 or ISO9002 or whatever the flavour of the month is on that front. Remember code motivates the CPU, but what motivates your company managers to do the right things. office politics is alot easier when you get it fighting itself and you can just get on with what you like doing peacfuly.

</comment><comment><USER19> The problem is not the author, the code, or the original programmer, the problem is here:

"First to my boss and then to my boss's boss and then to his boss and then to a whole assortment of higher ups..."

"Many of those boss's boss's bosses were seriously pissed at me...That was when the Biggest Boss of All..."

Too many bosses with bosses

<comment><USER20> Interesting, what sort of structure should a 1000+ person company have? Would it really avoid any layers greater than 3 deep?

Valve is a notoriously (recently) flat company for being as large as it is: <300 people. But it is noteworthy because it is the exception.

<comment><USER19> I don't see where the article mentions a 1000+ person company.

There's lots of answers to the structure question, its a good question.

I was referring mostly to boss with a boss - and what the term boss implies vs leader, or enabler.

</comment></comment></comment><comment><USER21> I don't get it.

"Actually it was terrible advice, advice that I've gone out of my way to ignore it in the years since."

<comment><USER22> I don't get what you don't get. The content of the advise was bad, but the overall effect of it on the author was good. It made him conscious of certain tendencies in the companies and allowed him to not be a purveyor of those tendencies.

<comment><USER23> "The content of the advise was bad, but the overall effect of it on the author was good."

Now I get it. Thanks gambler.

</comment></comment></comment><comment><USER24> The best comment was "The counter-measure is to make sure that no code is 'other people's code', and thus there is no good reason to stay out of it"

<http://www.informit.com/articles/article.aspx?p=1926692>

</comment><comment><USER25> Reminds me of how the performance team at Yahoo! was asked to stop working on mobile performance research because the mobile team decided that they should own it.

</comment><comment><USER26> Misleading title IMHO. Because it wasn't best advise, it was opposite. The bottom line: stay out of the companies/jobs that give you that advise/attitude.

Guy did his job, he didn't dig in the code to look others stupid. He had a very crappy task to go into sewage, find problem and fix it. Yes, there were programmers that knew why it was slow and had other priorities. Well, his priority was to fix it. Not to mention he worked on weekend and evenings.

<comment><USER27> That's not misleading, that's sarcasm.

<comment><USER7> Some would even say irony.

</comment></comment></comment><comment><USER28> Then open source came along. Welcoming everybody to improve the code. But it seems like there some ego issues there too.

</comment><comment><USER29> To be frank, his advice can be generalized to "Don't step on other people's role", be it code or other tasks. Even though you may be more competent or capable in performing the said role, the resulting repercussion will usually be very ugly, and you won't enjoy going through it. Speaking from my 10 years+ experience from an innocent technical nerd to a multi-region Project Manager.

<comment><USER30> but that's not his advice?

That is the advice he was given (and then chose to ignore later and then to remind himself to listen to others when they spoke about his own code)</comment></comment>