Classless OOP [pdf] - <AUTHOR> http://homes.cs.washington.edu/~djg/teachingMaterials/gpl/lectures/lec26.pdf

<comment><USER2> Go is an example of a classless OOP language. Here's a good example [http://www.goinggo.net/2015/03/object-oriented- programming-m...](http://www.goinggo.net/2015/03/object-oriented-programming- mechanics.html)

<comment><USER3> Yeah, it's surprising too. I was programming for a good week in Go before I discovered anonymous fields and how they worked. They really need to do a better job of explaining that they have a form of inheritance in the language that allows structs to exhibit polymorphism beyond being an interface as it isn't really explicitly stated anywhere in the docs. The section in the FAQ that answers if Go is an OO language never makes explicit reference to them, and in the language spec they don't get their own section.

</comment></comment><comment><USER4> An interesting idea, though I actually feel like Lua implements much of this concept already. Admittedly, there are plenty of differences, but Lua has no `class` or `new` keywords, but you can implement Object Orientation very simply with Tables.

Actually, that's one of many reasons I find Lua to be so elegant; but perhaps that's just me :P

<comment><USER5> While the slideshow seems aimed at creating something new, I think (hope?) that's more of a rhetorical device, because prototype-based OO goes back to Self, and even the language that introduced classes (Smalltalk) resembles this more strongly than the more common class-based OO languages (C++ and Java).

Lua is not really unique in following the same concept. Javascript and Python are also both based on the hash-with-blessed-class-member prototype-driven approach, even though they also both build class systems on top of it (JS more recently than Python).

<comment><USER6> These are course notes for a grad-level PL class. I've seen something like this before...maybe 10 years ago. I don't think the encoding is particularly novel, just part of the material being taught.

</comment></comment></comment><comment><USER7> Prototypes are only one approach to inheritance, of course! A fun other one (which Crockford quite likes) is Parasitic Inheritance, where Bar() is a function that takes the object Foo() returns and augments it.

</comment><comment><USER8> JavaScript is an example of "class"-less OOP

(at least before they actually added classes.)

<comment><USER9> ES6 added the class keyword, but that doesn't mean that there are actual classes in JavaScript. I can highly recommend this book if you'd like to dive deeper, I just finished reading it: [https://github.com/getify/You-Dont-Know- JS/tree/master/this%...](https://github.com/getify/You-Dont-Know- JS/tree/master/this%20%26%20object%20prototypes)

</comment></comment><comment><USER10> Isn't this exactly what the Self language is?

[http://en.wikipedia.org/wiki/Self_%28programming_language%29](http://en.wikipedia.org/wiki/Self_%28programming_language%29)

<comment><USER11> or IO [http://iolanguage.org/](http://iolanguage.org/)

[http://iolanguage.org/scm/io/docs/IoGuide.html#Objects- Overv...](http://iolanguage.org/scm/io/docs/IoGuide.html#Objects-Overview)

</comment></comment><comment><USER12> Does he define what an 'object' is? This is anything but trivial.</comment>


Cloud computing may draw government action - <AUTHOR> http://www.infoworld.com/article/08/09/12/Cloud_computing_may_draw_government_action_1.html

<comment><USER2> Speaking for the US here: I have no idea what it's like elsewhere.

If the first bits of legislation targeting "cloud computing" look more like CALEA than the fourth amendment, Sealand's business will explode, and it may well drive other nations to take a leadership role in this industry.

A small but key piece of the future of US prosperity hangs in the balance here but we're totally going to blow it because of "terr" and fear of kiddie fiddlers.</comment>


Understanding the Ruby object model - <AUTHOR> http://skilldrick.co.uk/2011/08/understanding-the-ruby-object-model/ <comment><USER2> I'm sorry to be critical but this article is a dangerously incomplete treatment.

For instance, methods only exist on classes. And there's no mention of the singleton class whatsoever.

For a more accurate lesson, watch Dave Thomas, author of the "Pickaxe" Programming Ruby book, present on the Ruby Object Model: [http://scotland-on- rails.s3.amazonaws.com/2A04_DaveThomas-SO...](http://scotland-on- rails.s3.amazonaws.com/2A04_DaveThomas-SOR.mp4)

<comment><AUTHOR> > Note that this is a basic explanation, and glosses over higher-level > concepts like the eigenclass/metaclass (I'll leave that for a later post).

<comment><USER3> Glossing over those things misses the entire point. Not worth posting without it. The videos mentioned in the parent comment get it so right. Highly recommended.

</comment></comment></comment><comment><USER4> I've just started with Ruby and Rails using a book called Ruby on Rails tutorial 3.. this article didn't provide anything that I found useful. It reminded me of a lecture on Java I heard about in Computer Science 101 day 2.

<comment><USER5> Utility is relative to curiosity. A butcher _might_ be interested in animal husbandry, but maybe they just want to cut steak. To a Rails dev, this is all "what happens to the cow before it's steak" stuff.

</comment></comment><comment><USER6> Sounds like a database admin learning ruby. No idea why anyone wants to think of classes as anything more than fancy structs with allocation.

<comment><USER7> It's this kind of thinking that leads to "Ruby is all magic!". You have to understand the object model to get maximum benefit from Ruby. To be fair you need to understand the object model of any OO language to get a deeper understanding of the language.

</comment></comment><comment><USER8> Is Ruby still considered a "fad" or is it actually gaining weight as a serious development platform? I'm seeing more and more articles about it on HN these days.

<comment><USER8> I guess the fact that people have just downvoted rather than explaining confirms it's still a fad.

<comment><AUTHOR> It's a bit like saying "I see a lot of women have jobs these days - does that mean that feminism is more than just a fad?" You're not going to get any helpful responses if you ask something inflammatory (and I think it shows maturity that no-one's flamed you).

Anyway, what would you gain from asking a bunch of Ruby developers whether Ruby is "just a fad"? This is hardly the best venue for that question.

Incidentally, I didn't downvote you, just thought I'd try to explain why nobody responded to you.</comment></comment></comment>


There Are Giant Camera Resolution Test Charts Scattered Across the US - <AUTHOR> http://www.petapixel.com/2013/02/15/there-are-giant-camera-resolution-test-charts-scattered-across-the-us/ <comment><USER2> "Even satellites can utilize the charts. Here's a chart as seen by the satellite used for Google Maps"

It's not clear that that is a satellite photograph. Just because it was taken from above it doesn't mean a satellite did it. Mapping services (such as a Google's) do a disservice to call all this overhead photography 'satellite'. It's the sort of looseness that causes people to think cellular telephones also talk to satellites.

<comment><USER3> It's not that far off, there is a ton of satellite photography in Google Maps. It's the other way around, but satellites talk to cell phones and I don't fault people for not knowing it's one-way.

<comment><USER4> _but satellites talk to cell phones_

Wait wat? I honestly didn't know this (aside from a cell phone with extra capabilities, like gps).

I thought all phone communications took place with cell towers (except, of course, for satellite phones).

<comment><USER3> GPS is what I was referring to.

</comment></comment></comment></comment><comment><USER5> The source for this PetaPixel article is the Center for Land Use Interpretation, a really neat organization. [http://www.clui.org/newsletter/winter-2013/photo- calibration...](http://www.clui.org/newsletter/winter-2013/photo-calibration- targets)

</comment><comment><USER6> Here's a google maps link to one of the charts mentioned, on Edwards Airforce Base:

[https://maps.google.com/maps?q=Edwards+AFB,+East+Kern,+Kern,...](https://maps.google.com/maps?q=Edwards+AFB,+East+Kern,+Kern,+California+93523&hl=en&ll=34.834087,-117.759426&spn=0.004412,0.008256&geocode=FUXbFAIdoWP4-A&hnear=Edwards+AFB,+East+Kern,+Kern,+California+93523&t=h&z=18)

<comment><USER7> Fascinating that there are air craft relics near the charts. I can only imagine that is part of the calibrating: so they can tell how large an aircraft is and what resolution they get for the size.

<comment><USER8> Indeed, plus one of the aircraft is one of only two remaining examples of the X-21 [0]. I suspect the other is also derelict on the range somewhere.

<http://en.wikipedia.org/wiki/Northrop_X-21>

</comment></comment></comment><comment><USER9> Is this test pattern in use in other known research?

Most of the test patterns I've encountered in using 'OpenCV' [1], 'laser scanning'[2], and 'structured light scanning' [3] have used equal sized geometric shapes. Not increasing in scale, so maybe that's useful.

[1] [http://graphics.stanford.edu/~vaibhav/projects/calib- cs205/c...](http://graphics.stanford.edu/~vaibhav/projects/calib- cs205/calibimg.png)

[2] [http://www.david- laserscanner.com/wiki/_media/user_manual/sc...](http://www.david- laserscanner.com/wiki/_media/user_manual/screenshot_calib_pattern1_small.jpg)

[http://www.sciencedirect.com/science/article/pii/S0143816607...](http://www.sciencedirect.com/science/article/pii/S0143816607000991)

[3] [http://opticalengineering.spiedigitallibrary.org/data/Journa...](http://opticalengineering.spiedigitallibrary.org/data/Journals/OPTICE/22111/053604_1_5.png)

<comment><USER10> It is known as the 1951 USAF Test Chart, and it is and was a standard:

<http://en.wikipedia.org/wiki/1951_USAF_resolution_test_chart>

<comment><USER9> Exactly what I was looking for, thanks.

It seems the 'Milspec' status is:

      MIL-STD-150A, dated 06 January 1998, is hereby cancelled without replacement.

With as many multi-spectral instruments we have floating about, I wonder what other shapes, compositions, or controlled temperature gradients might be in use under our noses.

</comment></comment></comment><comment><USER11> Throw away business idea: QR codes for large tract real estate listings.

<comment><USER9> The prerequisite being a 'Maps' site with <weekly aerial updates. While relatively plausible today (a few styrofoam drones, camera arrays, pay fer acre for 'crowdsourcing', ...)[1], the legal woes are frightening.

[1] 'relatively plausible' in relation to 'cubesats' and other aerospace driven monitoring.

<comment><USER11> A lot of real-estate sits for years. Weekly photos aren't really necessary.

</comment></comment></comment><comment><USER12> Also, large compasses about 1km in diameter: <http://goo.gl/maps/6wTtb>

<comment><USER8> Those aren't for the same purpose, they're for test pilots to use when landing on the lakebed runways that you can see next to the compass.

Both the X-1 and X-15, amongst many other experimental planes, landed on the lakebed rather than on conventional runways at Edwards AFB.

<comment><USER13> Why did they land on the lake bed as opposed to runways?

<comment><USER14> Because in experimental craft, one doesn't want to have to line up with a runway when the controls have stopped functioning or a wing has partly fallen off.

Once, when a test pilot landed the X-15 on a lakebed, the fuselage broke in two:

[http://www.air-and- space.com/x-15%20forty%20years%20later%20...](http://www.air-and- space.com/x-15%20forty%20years%20later%20200001.htm)

Quote: "The X-15-2 on Rosamond Dry Lake following mission 2-3-9*. The fuselage failed when the nose gear impacted the ground. The shock absorbing ability of the front landing gear strut was impaired by foaming of the oil in the strut when it was extended. The back of the X-15 broke at a structural join behind the cockpit."

</comment></comment></comment></comment><comment><USER15> Idea: remember the EURion constellation? <http://en.wikipedia.org/wiki/EURion_constellation>

It's a pattern of circles that's printed on money, and when printers detect it in a file they will refuse to print that file. I wonder what would happen if we similarly embedded this pattern in landscapes. Would it prevent printing aereal photo's?

</comment><comment><USER16> fiducials, not so much for a 2-D 'where', but to help deal with the blurring (<http://what-if.xkcd.com/32/>)

</comment><comment><USER17> Any idea why some of them, especially the images from EAB, appear to cast shadows? That is, the white blocks appear to be bordered by black.

<comment><USER18> Sometimes these pictures are taken with 3 separate lenses and filters -- one for each color. Then they are merged. Sometimes that could get out of alignment.

</comment></comment><comment><USER19> Does anyone know of any of these charts at locations accessible to the public? They appear interesting to look at.

</comment><comment><USER20> They could have made it a bit more interesting, by coding a secret short message into them (yawn).

But nonetheless, a interesting article.

<comment><USER21> > by coding a secret short message into them

Maybe there is a _secret_ message in them...

<comment><USER22> DUN-DUN-DUUUUN!!!

<comment><USER23> "Be sure to drink your Ovaltine."</comment></comment></comment></comment>


Show HN: Cmods – a header-only C modules library - <AUTHOR> https://github.com/haneefmubarak/cmods

<comment><AUTHOR> Recently, after seeing a post here ([https://news.ycombinator.com/item?id=8401633](https://news.ycombinator.com/item?id=8401633)) about how to create a sort of modules in C, I thought it would be pretty cool to wrap popular C libraries in this way with a header-only library.

This is what I made so far. So far, I have only wrapped _libc_ and _libm_ , but I'd love suggestions for other libraries to wrap too.

Other than that, what do you guys think?

<comment><USER2> This will likely prevent optimizations of intrinsic functions.

What is the benefit over simply including the necessary headers?

Other than the example you mentioned, I don't see much use for it.

<comment><AUTHOR> Mainly, it keeps things slightly more organized and looks a bit nicer. However, it also allows you to replace functions at runtime (although this is generally dangerous).

All of this is done with essentially identical performance, at least on x86 and x64. (see the readme for details)

As for optimizations of inline functions, I don't include any functions marked static inline, so those will automatically be inlined as before. Meanwhile, link time optimization (LTO) can help with that too.

<comment><USER2> I don't see how can you have functions inlined while being able to replace them at runtime.

Also, intrinsic functions might or might not get replaced with inline code, depending on the compiler, thus losing performance.

<comment><AUTHOR> That's a good point. I guess for those sensitive areas, you would just have to use the functions as they are. However, as I mentioned, I don't include `static inline` functions, so you will have to call those the normal way and therefore will get all of the normal benefits such as inlining.

As for intrinsic functions, I'm familiar with compiler intrinsics, so if you mean those, I don't include those either (well, I can't to be honest, since they don't have symbols in a library). So those will still act as they always have.

Meanwhile, for functions like memset() and such, my experimentation shows (at least on GCC) that it only replaces the call with assembly for smaller values, which I'm guessing are meant for use in tight loops. In places like that, it may be valuable to just use the bare function name.</comment></comment></comment></comment></comment>


You're a little company, now act like one - <AUTHOR> http://blog.asmartbear.com/blog/youre-a-little-company-now-act-like-one.html

<comment><USER2> A bit of meta-commenting but the "Welcome HN" banner which encourages us to upvote the story put me right off. I'll vote it up if I like it, not because you customized your site to "Welcome" me because I read HN.

<comment><USER3> For every 100 people who read HN, my guess is that 10 upvote stories and 1 comments. I bet that more than half of regular HN readers don't even know that the site is powered by voting despite the little arrows next to each story.

If people knew to upvote stories they liked on their own then the average story would have something like 800 upvotes. I agree with what you're saying because if everyone did this it would be really annoying, but certainly most people don't upvote the stories they like.

<comment><USER4> I might vote on 1 out of every 100 things I read, and usually it's not because I like the story, but because I want it to get more comments.

</comment></comment></comment><comment><USER5> That is, of course, until the present batch of small companies grow big (or die) and all the big companies are putting words like "suck" and "cool" on their corporate blurbs. Then the next batch of small companies will ape them because people never change, and then early adopters will start looking out for companies with "people who care enough to sound professional" (excerpted from the future version of OP).

And when that happens, I'll be ready...

<comment><USER6> It is possible to sound professional without sounding boring, and I'd also argue that being honest about the scale and capabilities of your company is a big part of professionalism.

"UberSoft is a leading provider in synergistic data-driven technologies focused on improving ROI through market-driven analytics. The UberSoft Team has over twenty years of experience in delivering proven solutions to our corporate partners." is fluff.

"Spend less time marketing, and more time watching hockey. UberSoft makes marketing easy, because we've got a really great way to link statistics from news feeds into your existing analytics." is honest, and a lot more memorable.

<comment><USER7> Dead on. As tired as I am of all the friendless as well, there are shades of gray in the between. Take even the balsamiq example the article uses -- the website doesn't jump in your face; it simply tries to be more honest and not present itself as a Fortune 501 company.

</comment></comment></comment><comment><USER8> My favourite "pretending to be big" line I see little guys using is: "With more than 20 years experience" based on 4 guys in the firm, each 5 years out of university.

<comment><USER9> 20 years of 'collective' experience is the key word that needs to be there to make it (slightly) less of a complete bullshit line.

But that's the least of the problem with false claims ...I recently met the owner of another local web firm who was telling people they've been 'in the business' for 30 years. I don't think I need to point out the error in math there.

<comment><USER10> Right, distinction is important. We use "combined experience" to call out the width of our expertise, not depth, on our publishing _services_ page for mobile development. I think it helps reassure some prospectives that while young, we have a broad range of experience in multiple industries.

Getting sign off on a ~5-6+ digit _services_ project takes a fair amount of work, and more so without a thick portfolio. Vertical software sales benefit from tech diligence and product demo as part of the buying decision.

<comment><USER11> _helps reassure some prospectives_

In reality I don't think it works as you expect. Most people have come to see these "collective experience" lines as excuses for not having anyone on the team with more than a few years of experience.

Would YOU want to get a heart transplant from 5 medical students with "10 years of collective experience"? The reality is that this collective experience is not really additive. If you have 1 person with 20 years of experience in some area, they've seen a couple of cycles and progressions of technology. No amount of people with 3 years of recent experience can ever really match this.

<comment><USER10> The mobile software market is young (relative to it's tragic past) and we're a small shop of mashups => advertising/web/software engineering. I have roughly 10 years of experience but it's not about me, it's about us and when combined — we have a lot to offer as a young company that's trying to get off the ground.

I'm very transparent when communicating our strengths and weaknesses to make sure the project+expertise = good fit on both ends of the deal. I agree with your point about wisdom, but heart surgery is rather linear and you better be highly specialized in your trade for that line of work. :)

ps. It's not that I disagree with ASmartBear, I just feel the post is a bit generalized in its advice. Selling client services does not benefit from a prebuilt software product that can sell itself.

</comment></comment></comment></comment></comment><comment><USER12> Putting aside the corpspeak fluff, I wonder if this advice is valid for SaaS as well. I understand managers won't feel nervous after buying a mockup or code review tool from a small supplier, but would they be as willing to put business-critical data into a small company's servers? Would you let a one-man shop run your CRM?

<comment><USER2> I think that depends how transparent you are on your business practices. Running anything on a single server is dumb, but if you are one man shop running on EC2 and you are clear about that I don't think it's a big deal.

Explain what you do, and why it's good. Explain how you've thought about BCP and making sure everything will stay up (essential for a service).

Companies routinely hire individual consultants at $2k/day and follow their advice. I don't think that trusting a well respected individual in the industry is so much the problem, as trusting someone who's capability is unknown.

If you show the capabilities of you and your systems up front, without BS, then people will take you on for projects that are appropriate to that level of risk. Which may be quite as much as you can handle.

</comment></comment><comment><USER13> I love the advice given in this article. In working on putting together a little company of my own, I often find myself looking at what seems to be "accepted" and trying to steer in that direction. This creates a lot of fluff in my language and, honestly, I end up with something that I don't think I'd even be interested in trying.

Keeping it simple and honest always sounded like a good idea, but the fact that people have shown that it can work is a big confidence booster.

<comment><USER14> You want a simple recipe for eliminating fluff and connecting with your customers? Talk less about we/us/I and talk more about you/your.

When you're talking about "we", you're almost certainly talking to hear yourself talk -- "We have an industry-leading solution with years of YOU DON'T CARE ABOUT THIS."

When you're talking about "you", you're probably addressing the customers needs and ways to get those needs satisfied. (" _You_ can use Widget to flangle a foobar in less than 30 seconds, saving _you_ time and getting _you_ home to _your_ kids faster.")

<comment><USER6> Good advice when Dale Carnegie put it in his book, still good advice today.

</comment></comment></comment><comment><USER15> As a developer, I have no problem buying development tools from one-man-shop / small company.

When it comes to software for my other business needs however, I wouldn't use a hosted SaaS service if I didn't think it was backed by a lot of people, has a lot of customers, and isn't going anywhere.

As a provider of hosted business tools, similar to the ones I wouldn't buy myself, I find that showing the small size of my company is a huge problem.

I'm actually finding that the customers that won't host their data with a small company would be more than happy to buy a version they could install on- site.

</comment><comment><USER16> Excellent advice. In a related note, why do all those Enterprise Software Startups appear to have the same website? The one that has different links about how FooSoft can help for each different industry, and you have to go to wikipedia to find out what the product _really_ does?

The only thing I can come up with is _someone_ must like those websites that contain zero information, but who is it, and why?

<comment><USER17> "...someone must like those websites that contain zero information..."

My guess is that the less you say about yourself, the less corporate drones have to eliminate you in their RFP process.

<comment><USER4> Going cold through an RFP process is playing to lose anyways, edw519.

<comment><USER17> Right. Just like posting a website with zero information.

I don't know why anyone would do either.

</comment></comment></comment></comment><comment><USER18> i think it's certainly possible to make your company's image look professional without all the corporate speak, buzzwords, and stock images.

my company is mostly just me (unless i sub out parts of a project) and i usually use "we" when talking to customers. many of them know the company is just me but they are already my customers. a potential customer might not even consider calling me in the first place if my website said i'm one guy. if they have a big project planned and _they_ think it needs a whole team, would they even consider asking a one-person shop for an estimate? maybe not.

<comment><USER14> I think the choice of "we" versus "I" is bicycle shedding for copywriting. I've seen software developers paralyzed by this decision. (No, really. It used to come up with some regularity at the Business of Software boards.) They've both got merits -- pick whichever sounds good to you and get back to stuff which matters.

<comment><USER19> Perhaps We shall settle upon the Imperial We in the future.

</comment></comment></comment><comment><USER4> Love this post. This has been our standard marketing tack for years, and was a real conflict early in the company.

How are we doing? Check out:

<http://runplaybook.com>

Do we sound like VC-funded 6-person-marcom team boring jerks, or just the real jerks we actually are?

<comment><USER20> FWIW, Your site didnt seem very professional until I got to the pricing page. Both the content of this page and the pricing level of the product sent a clear signal that this was a "serious", enterprise-aimed product.

The rest of the site made me confident in your technical abilities but not the longevity of the company. The pricing made me feel more comfortable that you would be around for a while yet.

</comment></comment><comment><USER21> It's always odd to me when a company spends more time trying to market the people behind the product rather than the product itself. The marketing of the product should be in the forefront across all pages and any mention of yourselves should be short and to the point. You don't even need to mention the people behind it (although, we do, but only our names and links to our websites/blogs).

</comment><comment><USER22> I entirely agree with this. I wrote Serendeputy's about page in my own voice. I did it partly to separate myself from the my more corporatey competitors, but mostly because I despise the way I sound when I try to speak corporate droid. It makes me want to cry.

That might be my number one reason for doing a startup: the ability to avoid doing things that make me want to cry.

</comment><comment><USER23> On a slightly related linguistic note, I find the following sentence annoying: "Put yourself in the shoes of that Early Adopter. Does _she_ want to see useless garbage phrases or does _she_ want to hear about how you totally understand _her_ pain?"

It's safe to bet that among the early adopters of a version control data mining tool there are overwhelmingly more males than females. Probably the poster feels that using _she_ will somehow compensate this inbalance. I see the he/she problem as a bug of English, but using _she_ in all technical text where a _he_ would be more probable is just fake.

</comment><comment><USER24> This is one of my biggest pet peeves. I've worked with 3-person operations that claimed to have "teams" and double-digit employee counts to clients. Why not just be honest? It's like black-hat SEO for your HR.

</comment><comment><USER25> Why does hitting <ESC> take me to a login page? That was odd.

<comment><USER26> I guess the Squarespace blogging platform just does that automatically. Agreed it's odd.

</comment></comment><comment><USER17> _...is the leading provider of..._

Unless you're McDonalds, Microsoft, or Walmart, this is guaranteed bullshit that just makes you look stupid.

For many cases, OP provides great advice. While some customers feel more comfortable with the stableness of a large institution, just as many feel more comfortable with the attention they'll get from someone small and hungry. For many of us here, we should use that to our advantage.

<comment><USER27> not necessarily, there are a lot of niche products where there is a small company that _is_ the leading provider. Leica, for example, the leading provider of rangefinder cameras since the 20's. A perfectly true statement, but you won't find them in the fortune 50. There are many many more examples.

</comment></comment><comment><USER6> I agree wholeheartedly. Writing corpspeak on your website may be 'safe', but it's not only boring -- it's totally unmemorable. Even if people hate your corporate image, if they remember you, you've already made a significant step in the right direction.

</comment><comment><USER28> Yeah, but a lot of companies seem like they're overcompensating to me. I mean, even if I met these people in person, I know they wouldn't sound as "forced- casual" as they do on their website.

</comment><comment><USER29> Very enjoyable read. I twitterfollow a number of local startup cultists, errr, "enthusiasts" that I think would be wise to consider some of this.

</comment><comment><USER30> It has always been known that:

Lying may(!) bring you some advantage, _short-term_ only; but you _always_ have an alternative way: you can tell something great, without lying, but you need your phantasy for doing that.

So, my dear friend, do you simply lack phantasy?

;)</comment>


Good UI Begets Great UI - <AUTHOR> http://allenc.com/2011/12/good-ui-begets-great-ui/ <comment><USER2> The website breaks the back button, flashes a few times before rendering and doesn't always actually render (blank screen every few refreshes).

It's yet to be shown that Flipboard and Path are actually a good idea. Android users seem to much more commonly prefer native UIs, perhaps for good reason.</comment>


Ted Williams - is change a fact or fantasy? - <AUTHOR> http://stopsayingyouarefine.com/ted-williams/

<comment><USER2> I love it. I don't listen to the criticism. For this particular story, I choose to be blind sighted and look at the glass half full. This guy is an icon of what the internet is all about. This magical place that everyone, including all of us on Hacker News, dwells in. Miracle stories like this is what keeps me motivated when I wake up in the morning while drinking the coffee. If a homeless can become the announcer for the Cleveland Cavaliers and get 10 million uniques within 48 hours, anything is possible. And I love waking up every morning smelling the air of a million possibilities.</comment>


Combining Tele-Medicine and Homeopathy to Work Miracles - <AUTHOR> http://mindtechlive.wordpress.com/2011/12/14/combining-tele-medicine-and-homeopathy-to-work-miracles/

<comment></comment>


A Statement from Shanley of Model View Culture - <AUTHOR> http://pastebin.com/3jAQARCy

<comment><USER2> Whatever your opinion on Shanley Kane, nobody deserves this kind of treatment. It amazes me, continually, that the same sort of people who are quick to defend the "meritocracy" of technology are also the sort who are equally quick to violently silence anyone who disagrees.

</comment><comment><USER3> I think you can probably co-opt the "the comments on every article about feminism justify feminism" quote into "the reaction to criticising (an|a toxic) online community justifies the criticism". And this is why we don't have nice things.

</comment><comment><USER4> Considering the source is a sociopath engaging in equal opportunity hatred towards whatever is weakest in front of her for her own advancement through social manipulation rather than merit, I'm going to need some police reports rather than her words to believe this.

</comment><comment><USER5> This is the same person who just doxxed a journalist who dared write about her negatively [1], and made up a story (quite similar to the current one) about another journalist who wrote about her positively [2].

This person is being assessed for their actions: changing from a far-right racist to a far-left racist/sexist. Their pretending to be a victim was fairly predictable.

1\. [https://twitter.com/shanley/status/556221414408069123/](https://twitter.com/shanley/status/556221414408069123/)

2\. [https://medium.com/matter/speaking-up-every-fucking- time-a61...](https://medium.com/matter/speaking-up-every-fucking- time-a61a24aa7629)

More on this person: [http://www.breitbart.com/london/2014/12/10/the-madness- of-qu...](http://www.breitbart.com/london/2014/12/10/the-madness-of-queen- shanley/)

Edit: from the actual article being posted: "misandry forever". For real.

Elisabeth Spiers (the sympathetic journalist attacked by this person last time) also has a fairly insightful article on the recent revelations: [http://www.elizabethspiers.com/on-the-matter-of-weev-vs- kane...](http://www.elizabethspiers.com/on-the-matter-of-weev-vs-kane/)

<comment><USER6> Did you seriously just waltz in here and drop a link to brietbart.com.

<comment><USER5> You're free to read the Elizabeth Spiers article or the person's own tweets, but generally on HN we respond to the point rather than the source. You can find plenty of linked evidence on this person's own twitter account, including such gems as [https://twitter.com/shanley/status/487669792862511104](https://twitter.com/shanley/status/487669792862511104). This person is a well known online troll and their work 'towards' diversity in technology is a mechanism for gaining attention and counterproductive to their stated cause.

<comment><USER3> I don't quite get the "gemness" of that one - Tinder demonstrated that theory quite effectively not that long ago, did it not?

<comment><USER5> Making broad statements about others based on race and gender is ignorant.

<comment><USER3> I don't think -many- people (outside of the obvious communities) would take umbrage with "white males are often dicks to women in business situations" given the preponderance of evidence.

<comment><USER5> Sure if that's what was said, but in this case, it wasn't.

<comment><USER3> In that case I've entirely missed what was said because the words I read just seem to be about male cofounders potentially being dicks. I definitely cannot see Milo's "he'll rape you one day" interpretation but I suspect that's largely because he's made that up.

<comment><USER5> It's in the context of sexual assault. If you don't think "beware of (skin color) (gender)" is bad, change it to another ethnicity or gender.

<comment><USER3> There is no context in a single tweet - and there's no mention of sexual assault in the replies I can see. Where does the "he will rape you" come from? Is there another tweet I can look at? Or a Storify collection of them?</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Twitters new and blazingly fast interface - <AUTHOR> http://www.jacquesmattheij.com/Twitters+new+and+blazingly+fast+interface <comment><USER3> I hate #newtwitter more than anyone, but I disagree with the logic that just because people don't like it, it's neccesarily a bad move - lot's of people don't like change.

I've seen it a couple of times on big community websites when people complained about a new design, and then a week later realised that just because it started off not feeling like the site they grew to love, it didn't mean it wasn't a huge improvement.

They key is that, after you force users to switch, it has to be good enough that they realise you were acting in their best interests - if you force them to switch to something that really is much worse, that's when it becomes a problem.

I was wondering: if someone used the Twitter API to create basically a clone of the original site, would that be against the Ts & Cs, and if not could this be got around somehow. For example if someone made it and open sourced it, I could host it myself with my own API key, and without marketing it anyone other than myself and my friends Twitter wouldn't know or care?

<comment><USER4> > _...just because people don't like it, it's neccesarily a bad move..._

In business, it almost always is.

If your user base is uncomfortable with significant changes to your design or interface, you should take that into account. Why are you changing the design or interface? Is it really improving their experience, or is it just because you like the new one better? Why not roll out a new design in lots of small changes over the course of a year or more, so that people don't tend to feel as disoriented?

You should keep in mind that _a lot_ of people out there don't have the learned ability to glance at a screen and immediately pick out the relevant bits. Many of them deal with lots of different interfaces every day. When you radically change your design, for these people it's like having to learn a whole new site all over again.

<comment><USER3> In my personal experience people very quickly realised the new interface was fine - but when you've been using a site for years you get used to it, and like how it looks. As others replied, Facebook is another great example - people complaining doesn't mean they won't end up prefering the new version.

<comment><USER4> Sure, and if that's the case, then I don't see any downsides to rolling out a new design in small pieces over the course of a yearabouts, so that it doesn't annoy your users at all.

</comment></comment></comment></comment><comment><USER5> "Hint: if people stick to your old interface rather than to migrate to the new and shiny one then they probably have their reasons. Forcing them is not going to make them happy."

This leads to a dangerous line of thinking. There will always be a group of users who are resistant to change, and during a time of change they will be most vocal. If you listen to them you'll stagnate -- which is almost always the kiss-of-death for a company like Twitter. To be innovative you have to take risks and that includes the risk of angering certain people.

<comment><USER6> Slower+buggy is not an improvement.

I can't count the number of times that the new interface has reported 'twitter is over capacity', 'you have already tweeted that' (when it wasn't true) and a whole pile of other errors, if it worked at all. Page load times of several minutes on a 10 Mbit connection on a very fast machine are ridiculous.

Of course you have to 'take risks to innovate'. But rolling out buggy and slow software is not innovation, especially not when it breaks web conventions (take a look at the new urls).

<comment><USER7> Those two things sound like backend capacity issues, rather than frontend. The frontend as I understand it is almost all static HTML/JS. So they may be having capacity issues, but that would be true whether they stayed on the old twitter or moved to the new twitter.

<comment><USER3> I'm not sure what the cause is exactly, but back when they let you chose between new and old, I found that it was always slower and less reliable on the new version of the site. And it hasn't got any better since they killed off the old version.

</comment></comment></comment></comment><comment><USER8> I really am curious as to why the new interface works so absurdly badly.

It's not even a question of being a bit slow, the thing uses constantly 90% of my cpu (I'm using a low end netbook), which makes it technically unusable, and it's not like it does that much work. Hell, it just print a timeline.

The only thing missing from the mobile interface is a basic auto-refresh function.

<comment> brown9-2 90% of your CPU?

I am the only one who has never seen problems like this with it?

<comment><USER9> I have the same problem. Sure, my computer is five years and my browser three years old, but still, no website should be so unusable that you can't use it on older hardware.

Especially if you consider what Twitter is. It is not a 1080p streaming site like Youtube (which works fine btw), it is not some complicated Office suite like Google Docs (which works fine btw), it is just a site that displays short messages on my computer screen. I don't see a reason why Twitter even needs Javascript at all.

</comment></comment></comment><comment><USER10> I don't get the bitching about the new UI. What is he talking about when he says "pages that take several minutes to load"? Is he talking about the regular twitter.com UI? It loads in less than a second and is otherwise completely responsive.

<comment><USER11> Except when the API is overloaded, which is often. Then Twitter.com just spins for a long while and gives a message about trying again while failing to load your tweets at all.

<comment><USER12> I have twitter's new UI open in a tab all day long. I click the "X new tweets" button abou 20 times a day. I read tweets, checkout other twitterer's feeds, and it never ever slows down for me.

When I read about this guy seeing over a minute page loads, all I could think was, something is wrong with your computer or network dude.

<comment><USER11> Maybe your day does not line up with times Twitter has had capacity issues. Maybe it's maintenance during non-peak hours. I don't know, except that I've definitely seen Twitter's new UI time out as often as I saw the fail whale in the old UI.

</comment></comment></comment></comment><comment><USER13> The old UI had its issues, but it was much faster than the new one. Issues I see on a daily with new Twitter:

\- There're a lot of little weird inefficiencies if you use the keyboard - <USER2> instance, if you expand a tweet, space bar no longer works to continue scrolling down the page unless you tap over.

\- Scrolling can be slowwww. Can't scroll back more than 3 hours or so in my timeline, without getting an infinite loading animation or no option to continue viewing at all. This was especially a pain for me when I was on PDT, it meant I basically couldn't catch up with the early EDT news unless I switched to my mobile client.

\- "You've already tweeted that." "Sorry, we couldn't X, please try again later." and so on...

Then there's the search overhaul, which actually bummed me out a lot more:

\- Now, search results continually default to "Top" instead of "All," requiring a manual change.

\- Tweet translation's been removed. :(

\- Interface suffers the same issues (infinite loading spinner) that plague the new Twitter interface. The old search interface was really stripped down and fast.

I love Twitter, it's been super-important to me both personally and for my business; but I really would pay a subscription fee to get some efficiency back into my daily morning Twitter routine (i.e., ++scroll-speed, at least 48 hours of search history, bring automated tweet translation back, multiple account support). $5/month would be a serious bargain, especially considering these features would give me an extra hour or more back every day.

</comment><comment><AUTHOR> It's not that new - I've been using this ever since twitter said they would close down the old interface and force the new one upon me. It's fast, nearly complete, and convenient.

It also doesn't have the incredibly annoying "endless page" scroll.

Much to be preferred.

<comment><USER14> Certainly the "new" part of the title is full of irony, emphasizing the desire of people to get something else than the bloated, crawling, min_width=1024px, url-raping atrocity that is the new_twitter.

</comment></comment><comment><USER15> >> "if people stick to your old interface rather than to migrate to the new and shiny one then they probably have their reason"

Sounds like one of those "Get 1 Million and facebook will revert back XYZ" Groups. Everyone has one. It's a good thing they are experimenting.

<comment><USER16> I was going to say this Twitter interface rant reminds me of all the people complaining every time Facebook changes their layout. I suspect Facebook now makes changes in smaller increments, since these complaints have gone down.

</comment></comment><comment><USER17> Sometimes I feel like the only one who likes new twitter.

<comment><USER18> I don't actually dislike it overall in concept, but it feels very buggy to me in implementation. Sometimes it will just stop working entirely until I reload: clicking on a tweet to have a detail view slide out in the right panel will work for a while, then at some point I click a few times on a tweet and nothing happens. Not sure if some script is hanging or it's due to timeouts or what, but I notice this throughout the interface, which makes it feel very unpredictable.

I would like middle-click-to-open-in-new-tab to work more consistently as well.

</comment></comment><comment><USER19> I either use Twitter on OS X or Tweetbot on the iPhone - I can't remember the last time I saw the twitter.com site at all...

<comment><USER20> I mostly use the same apps you do on a day-to-day basis -- but honestly you should try the site sometime. It's pretty sweet.

It's especially useful when you want to find new people to follow. You can poke around really easily, read conversations and see photos they've posted and who they follow, etc etc. It feels optimized for discovering new stuff.

<comment><USER19> I'll give it a whirl - although, using the apps keeps me nicely shielded from "Promoted Tweets" and the Trending topics, neither of which I have any interest in.

<comment><USER20> Agreed, but I don't find that stuff especially in-my-face on the site -- although I have adblock installed, not really sure what effect it has on the site. I generally visit twitter.com once or twice a week just to poke around and see what I can find and then go back to the native apps.

</comment></comment></comment></comment><comment><USER21> I'd be interested to hear the decision making process that twitter used to implement the new interface. Were the changes driven by the users? What metric did they use to determine if the change was a success or not? Was it successful?

</comment><comment><USER22> Agreed. I have been using this for the last couple months since I uninstalled my client on Windows (MetroTwit) at work and won't check my phone all the time, the manual refresh is very "on demand" and I love it.

</comment><comment><USER23> But there is no automatic update on my home TL in the mobile version

</comment><comment><USER24> Wow, this is great.

This would be good pinned to the status bar (OS X) with Fluid (<http://fluidapp.com>).

<comment><USER25> Yeah, but the twitter app is even better for me on OS X.

<comment><USER24> Hah, I've never actually looked at the Twitter app for OS X. I'll check it out.

</comment></comment></comment><comment><USER26> The mobile site took 15 seconds to load for me.

Blazingly fast, Twitter? In another reality, maybe

</comment><comment><USER27> +1 to the "WTF" comments. I don't seem to have these issues with new twitter being slow, or using 90% CPU, or failing, or any of these other complaints.

</comment><comment><USER28> No keyboard shortcuts is a dealbreaker.

</comment><comment><USER29> Simplicity and MVP wins. This is a heck of a lot better than the overloaded design twitter has adopted.

</comment><comment><USER30> I dont even bother opening twitter on ipad anymore. Will try out this mobile interface.

<comment><USER31> Is there an "iPad native" (built for the larger screen) app for Twitter? I'm using the iPhone version and it's very responsive.

</comment></comment><comment><USER32> The mobile site is slower than newtwitter for me.

And way worse.

</comment><comment><USER33> I think the mobile search is more reliable/goes back further also.

</comment><comment><USER34> It is slow. Why does twitter need so much JS and poor CSS to accomplish so little? They should take a cue from their mobile site.

</comment><comment><USER35> Just copy Google groups interface (old one!) already! I can shift+a 1000 messages in a second!

</comment><comment><USER36> No, I miss my lists.

</comment><comment><USER37> does twitter still use mostly ruby? i remember hearing something about scaling problems that were supposedly caused by ruby.

<comment><USER38> The "new" interface is actually entirely JavaScript and just exchanges JSON with an HTTP endpoint. This removes a big chunk of "slow" in Rails, which is view rendering. Of course, the actual services behind this endpoint could be based on Scala or Rails or any other language and are probably heavily cached.

</comment></comment><comment><USER39> This is the mobile site. It has always been here. There is even a link on the Home page(though not directly)</comment>


SpaceX software engineers hosting a Reddit AMA starting at 10AM PT - <AUTHOR> http://www.reddit.com/r/IAmA/comments/1853ap/we_are_spacex_software_engineers_we_launch/

<comment><AUTHOR> I wonder why this was sent to the third page...

<comment><USER2> Good question. I wonder if reddit links are handicapped. I can imagine they may be for good reason.

<comment><AUTHOR> Yep, probably they are.</comment></comment></comment>


Study Says World's Stocks Controlled by Select Few - <AUTHOR> http://www.insidescience.org/research/study_says_world_s_stocks_controlled_by_select_few

<comment><USER2> This rather misses the point that what looks like a single mutual fund from the outside, from the inside it's the pension funds and other savings of tens of millions of ordinary people. Take Vanguard or Fidelity for example, they "control" a vast amount of money, but all they do with it is track indices on behalf of their retail customers.

<comment><USER3> The fact that a single entity acts on behalf of tens of millions of ordinary people does not detract from the fact that it is a single entity that can exert that kind of influence. If that single entity abuses that power, then smaller entities loose money and the (extra) earnings largely end up in the pockets of the entity itself.

<comment><USER4> Interesting how so much money/power/responsibility is diluted and reconcentrated over and over in mutual funds, pensions, insurance companies, governments, etc. -- much like those subprime mortgage tranches. And we call this capitalism?!

<comment><USER5> How is voluntarily paying people to manage your money for you anti-capitalist?

<comment><USER4> Everyone is passing the buck... what's the connection between your investment and a productive enterprise somewhere? A long chain of financial games. Decisions are based on statistics and third-hand information, not on the merits of the end investment. Result: a crapload of bad investments and an unstable economy.

[Edit:] "Capitalism" gets blamed for this mess caused by the dilution of responsibility, which sounds pretty socialistic to me. You might call it "emergent socialism".

<comment><USER5> The connection between my investment and productive enterprise is very simple. Vanguard (the people who manage my money) transfer my investment to an enterprise they believe is productive but undervalued.

</comment></comment></comment></comment></comment></comment><comment><USER6> As an academic field, economics is completely underperforming. It's no suprise interesting research comes from other areas, such as physics in this case.

<comment><USER7> In fairness to economics, it's one of the most politicized fields. Back when hard sciences were a threat to some religious dogma, there was lots of trouble even doing astronomy. Economics is up against something a little similar to that right now.

<comment><USER8> Economics is inherently political. Please drop the pretense that there can ever be economic study not deeply interwoven with politics.

<comment><USER9> There can be. There is such thing as integrity and objectivity, particularly with the hindsight of centuries.

</comment></comment></comment></comment><comment><USER10> If the list is so small then list them all instead of pointing to the 'big fish.'

This gives rise to the very real concern that the automated 'systems' that inform and execute on behalf of the 'few' may in fact wield too much control over the decision making process.

</comment><comment><USER11> Interestingly enough, this is true of basically every industry: our food production is controlled by a select few (who own farms), our car production is controlled by a select few (the car companies), our computers are controlled by a select few, etc.

</comment><comment> onreact-com No surprise here. Good to have scientific proof nonetheless. The so called free market is a travesty in the current form of oligopoly capitalism.</comment>


Can Amazon Run The Table On Cloud Services? - <AUTHOR> http://www.avc.com/a_vc/2009/03/can-amazon-run-the-table-on-cloud-services.html

<comment><USER2> It depends. Amazon started out really cheap with 1.7GB servers in 2006. However, it's now 2009 and the prices are the same. At that point in time, Linode had their 400MB instances for $80 (which became 512 which became 1024 which became 1200 which became 1440 over the years). Slicehost had just been founded at the same time EC2 came around and I remember the big waiting list as they became popular.

So, I don't think that Amazon can become dominant unless it offers more for less. Their EBS (elastic block storage) is a good offering that's really attractive, but they're starting to look expensive. Slicehost will give me an 8GB box with 2TB of transfer for $450. Amazon would cost $628 for that (40% more). Even if you commit to a 3-year term and pay $2,000 up-front, you still only bring the cost down to $500.

It will really depend on whether Amazon keeps prices down. Their competitors will have the ability to lower prices as hardware improves. If Amazon doesn't follow suit, they won't last. Right now, there aren't too many providers, but Xen knowledge is getting out there and more companies will start offering the same thing.

Amazon is doing well now. They need to keep driving costs down to remain competitive in an industry where many providers will start being interchangeable.

<comment><USER3> I think the big deal about amazon is dependability, elasticity and the addon services for now.

They are the 400 pound gorilla. I can order ten 1TB EBS volumes right now and they will deliver in a blink. I'm not sure if slicehost can do that, yet.

They have CloudFront which lets me stop worrying about latency, even for overseas customers, at the flick of a button.

They have DevPay, SimpleDB, SQS and such which I don't use but it's there should I need it.

In terms of elasticity they truly let me pay for what I use. At slice I have to commit upfront to traffic and diskspace. Yes, up- and downgrading slices is possible but it's not nearly as seamless as with amazon - where you just do nothing.

For now I think the amazon markup is still justified. But you are right, if the gap widens too much then they'll start losing customers.</comment></comment>


The Pmarca Guide to Startups, Part 5: The Moby Dick theory of big companies - <AUTHOR> http://blog.pmarca.com/2007/06/the-pmarca-gu-3.html <comment><USER2> Also, I would add that, in a big company, you should try to work with people as high up as you can, even if you're intimidated.

People high up either say "yes" or hand you down to someone who can definitively say "no." If they say yes, the people below them are directed to make it happen.

People not high up enough either say "no" or hand you up to someone who can definitively say "yes." If they say no, the people above them never hear about it.

So clearly, dealing with people higher up improves your chances dramatically.

Brad Bird was the one who I first heard point this out: "Oftentimes the people at the top are really fun and the people on your way up are really fun, but there's something about a lot of middle managers -- people that don't have the power to say yes but do have the power to say no."

</comment><comment><USER3> Marc, you're definitely on a roll with these essays. One typo: quit pro quos should be quid pro quos.

<comment><USER4> Marc has replaced Paul and Joel as my favourite blogger. I still love P&J;, but Marc's quality and almost daily output is tremendous.

To be fair Marc probably has years of ideas already built up, whereas P&J; need to think of new material for each essay.</comment></comment>


Declining Electrical engineering employment - <AUTHOR> http://www.computerworld.com/s/article/9240709/Electrical_engineering_employment_trending_down

<comment><USER2> EE grads occupy an interesting identity crisis. While on one hand they want to pass off as ECE (computer-engineering) candidates with decent programming skills, they also want to identify with being an "applied math" or "Alogirthm" engineer.

Unfortunately in today's world nimbleness in learning new s/w skills is valued more than having specific expertise is "speech coding" or "image segmentation", etc. Further more, it is easier to be a generalist as a pure CS person, than being a hard-core EE person. Bottom line the "tool" has become more important than the "solution".

Inevitably, being a specialist means the labor force is fragmented, and purely from a relative comparison to the CS "supply-demand" situation, its a relatively "low-supply [specialized] - low-demand" situation.

It not that you are undervalued or underemployed as the article might suggest (btw I wouldn't read too much into the first quarter results on unemployment figures/ considerations on how many to include in labor force, etc.), but its more like being a "lightly traded stock, with not much liquidity, high big-ask spreads".

</comment><comment><USER3> "The employers are very fussy. They are really only interested in a perfect match to their needs. They don't want the cost to develop talent internally."

Exactly this. I ran into the exact same problem when I graduated from EE, where employers wanted 20 years experience, familiarity with every piece of software out there, and to pay just minimum wage. When I did finally land a job, I sat around for weeks reading every manual and piece of documentation I could find - it was the only way I could do my job. I never did receive any training, and quit after 4 months.

I ended up picking up work as a Web Developer, and here we are. Even though people are people, I've found myself much happer in the "developer" atmosphere. As much as I would like to get back into EE, the bureaucracy of most of the "good" companies will keep me away.

</comment><comment><USER4> The article is all over the place. Is it talking about EE grads in the s/w engineering space? Because I don't see any decent coder-engineer having trouble finding a job in todays environment. And what's with the disjoint paragraph on immigration?</comment>


How does one learn about the latest advances in Computer Science (not fads) to apply and improve your work?  - <AUTHOR>

Note: core stuff like algorithms, new patterns etc. not fads like RoR, Ajax...
Stuff that usually sits in abtruse papers, out of mind for the average developer.
Accessible to the average developer, and in a form more easily digestible
(studying research papers is not practical for all).
When I picked up the Cormen book recently, I saw lots of new stuff I didnt learn in College. <comment><USER2> I'm going to say something heretical here: I don't think entrepreneurs should base their companies off the latest advances in computer science. Problem is, many of them are really "bleeding edge", and even the researchers themselves don't know all the implications for them. _Nobody_ has a clue where they might lead, or if anyone will ever find them useful.

Instead, you should look for the stuff that came out of academia 20 years ago but was rejected as unfeasible, useless, or just plain idiotic. Then keep an eye on economic trends that change the assumptions that made those discoveries useless. If you keep in mind a large enough set of rejected technologies and a large enough set of economic changes, eventually you'll find a match between them.

Some examples:

The architecture, performance, and programming techniques for early microcomputers mimicked 1950s mainframe technology. Many of the features of PC OSes were considered incredibly backwards at the time - no multitasking, segmented memory, assembly language coding. Yet this primitive hardware cost perhaps 1/10,000th of a 1950s mainframe and fit on a desk. This opened up a whole new market, one that was willing to put up with buggy software, single- tasking, and limited functionality.

Java consists mostly of poor implementations of ideas from the 1960s and 1970s. Garbarge collection was invented in 1960; object orientation in 1968; monitors in 1978; virtual machines in the early 1970s. Yet Java targetted the PC, Internet, and embedded device market that had previously been limping along with C/C++ and assembly. To them, these innovations were new, and performance of devices was just barely improving to the point where they were becoming feasible.

HyperText was invented in 1960- actually, you could argue that Vannevar Bush came out with the concept in 1945. But there was no easy physical way to put together large amounts of information, so Ted Nelson's Xanadu project went nowhere. Fast forward to 1991: the Internet had linked together most research institutions, and PCs were becoming powerful enough to support graphical browsing. When Tim Berners-Lee put the WWW up, there was a ready infrastructure just waiting to be expanded. And the rest is history.

PC video has been around since the mid-1990s: I remember recording onto a Mac Centris 660AV in 1993. Flash has also been around since then, as has the Internet. Previous attempts to combine them failed miserably. Yet YouTube succeeded in 2005, because a bunch of factors in the environments had changed. People were now comfortable sharing things online, and many people now have broadband access. Cell-phone video makes it really easy to record, without expensive equipment. And the rise of MySpace and blogs made it really easy for people to share videos they'd created with their friends.

<comment><USER3> Was there image support in HTML in 1991? I thought NCSA Mosaic introduced the IMG tag later, apart from any standards process. I think the only thing graphical about browsing in 1991 was that the NeXT browser could do header, bold and italic.

<comment><USER2> No, there was no image support in the original HTML. TBL wanted image tags that opened the image as a new document; Marc Andreesen and Mosaic pushed it through as an inline element.

The reason that GUIs helped so much is that you could _click_ on a hyperlink and it'd take you directly to the page. There are often lots of hyperlinks on a page: it's very cumbersome to navigate between them with the keyboard. (Trust me, I spent a year using Lynx over a 2400 baud modem before we got a real Internet connection. ;-)). And any interface like that locks out the vast majority of potential users, who don't want to remember that 'g' lets you go to a url or arrows select or that you hit space (or was it enter?) to follow a URL.

<comment><USER3> Except Gopher and TechInfo already had graphical interfaces in 1991, on more platforms than the WWW, where you could click to get the information you wanted. I think it was the IMG tag that initiated a lot of the excitement about TBL's project. You could already browse words and images separately through existing information systems. It was putting them together that gave the WWW lots of momentum.

</comment></comment></comment></comment><comment><USER4> If you are interested in learning more about core technologies in an area valuable (in terms of future technology trends), I would advise learning more about networking.

Having strong networking knowledge is very useful and can be applied to cool areas of growth such as the Internet and mobile devices. I took a graduate level course in networking as an undergrad and it was one of the best decisions I've made.

If you want to teach yourself, I recommend the following books:

Computer Networks by Andrew Tanenbaum - This book is from 2002, but is still considered the Bible of Networking. It covers all of the advanced topics and is great as a reference. You can pick it up used for cheap.

TCP/IP Socket in ____ by Michael J Donahoo - This is a series of books that cover network programming in different languages. There is a C/C++, Java, and C# version of the book that I know of, but there might be more now too. These books are very concise and to the point and teach you everything you need to know to write advanced network programs.

</comment><comment><USER5> I'm currently a CS double-major in an American university. We learnt algorithms with Sedgewick's books (available for C and Java) and patterns with the Gang of Four book. I find that I rarely use the algorithms for web programming, but do use some patterns (MVC, Observer).

As for latest advances, there are many languages on the cutting edge, such as Haskell, OCaml and Erlang that would be worthy to study just to expand your horizons. These languages ARE many of the latest advances in CS. I'm currently diving into Lisp, and have found that some concepts are timeless (code as data, macros).

</comment><comment><USER6> Go to CS talks at nearby universities. Most have talks that are open to the public. These usually include "job talks" in which people applying for teaching jobs present their recent work.

<comment><USER7> Also see:

<http://video.google.com/videosearch?q=google+techtalks>

<comment><USER8> Yeah the tech talks are awesome. The Museum of Computer History has some great lectures on tech talks. One that I particularly like is titled "Great Principles of Computing". It's a nice summary of the past few decades of computing principles. Here's the link: <http://video.google.ca/videoplay?docid=5494452304620274339>

</comment></comment></comment><comment><USER9> This can be a full time job in itself, but here are some quickies I like:

If you want to be practical, Hack The Planet is worth a glance every now and then: <http://wmf.editthispage.com>

Lambda the Ultimate is good too, especially if you think languages are where the real CS action is: <http://lambda-the-ultimate.org/>

</comment><comment><USER10> There are no significant advances in algorithms worth looking at, in my opinion. Current hardware only supports bruteforcing things by optimizing cycles or throwing more cycles at things. You can do that by improving hardware, and that will come in any case.

Real advances only come when new _ways_ of doing things appear. And for that, just reading tech news is enough. For example, the Table Top PC.

The only really two significant areas where algorithms can still make a difference are in video manipulation / object recognition, audio manipulation and artificial intelligence.

But you'll find that in those areas, advances are usually very complex and difficult to monetize.

It's much more effective to just look at advances in hardware, and figure out what you can do on a software level to take advantage of this hardware.

But even better, look at the internet, and watch as data opens up. Use that data to create new things.

</comment><comment><USER11> Go to an academic conference. I went to this one: <http://www.icfpconference.org/> last year and it was well worth it.

Hunt around for a great class at the local CS department and either figure out a way to enroll or just 'drop in' on the class. I did this too and loved it.

</comment><comment><USER12> IEEE Magazines:

<http://www.ieee.org/web/publications/journmag/index.html>

"Software" and "Computer" are more in-depth and oriented towards latest advancements and practices. "Internet Computing" and "IT Professional" are more practical.

</comment><comment><USER3> Crash a social event at a school with a strong CS department and talk about your work. I bet people will be more than happy to give you pointers. The academic world is overflowing with ideas that ought to be more widely used but aren't. Academic people like it when you take their ideas and run with them.

</comment><comment><USER13> Computer Science, as a field is very mature, and as a result, very specialized in its research (though I disagree with the idea that core algorithm research is more relevant for the average developer than what you call fads).

The best thing to do is to first get more specific: what kind of algorithm? Is it database implementations? Virtualization techniques? Filesystem optimization? Graphics hardware? Programming languages?

Then, find the appropriate journals. Get an ACM membership so you can search and get full text of the library.

<comment><USER14> > Computer Science, as a field is very mature,

CS is less than 100 years old. How do you see it as "mature"?

<comment><USER13> Mature in that there are many sub-disciplines and an extremely large academic community that studies and researches very specific aspects.

</comment></comment></comment><comment><USER7> For routine programming, the GoF Design Patterns book will be more helpful to you than algorithms books.

But if you really want to learn more about algorithms, check out this book:

[http://www.amazon.com/Algorithm-Design-Jon- Kleinberg/dp/0321...](http://www.amazon.com/Algorithm-Design-Jon- Kleinberg/dp/0321295358)

As for programming languages, the java + eclipse combination is excellent.

<comment><USER7> Also, check out this refactoring book:

[http://www.amazon.com/Refactoring-Improving-Design- Existing-...](http://www.amazon.com/Refactoring-Improving-Design-Existing- Code/dp/0201485672)

<comment><AUTHOR> thanks. I notice though it may be a bit dated - 1999.

</comment></comment></comment><comment><AUTHOR> Clarification: I was roughly talking of techniques or improvements to apply to our software design and code. Not about adopting new technology as a business strategy.

</comment><comment><USER15> ocw.mit.edu is where MIT keeps alot of their material for their CS classes, also Berkeley's webcast has video of their classes for each semester.

</comment><comment><USER16> How can you tell the differnce between a fad and an advancement?

<comment><USER17> Fads usually come with a fair bit of unsubstantiated hype (like RoR and Ajax) whereas algorithms (and such) are not usually hyped at all in the media (sometimes due to copyrights on their publications [journals] and sometimes due to academic obscurity, abstraction, or even complexity).

<comment><USER16> That's an interesting take. I'd argue that Ajax for example _is_ an advancement, regardless of the hype -- because it increases usability of many real-world web applications, today.

On the other hand, most algorithms are not widely applicable, so might only be counted as an advancement when they're used 30 years from now in a single specialized case.

-Matt (of donna & Matt)

<comment><USER17> I'd count them as an advancement as soon as they are added to the body of knowledge. XMLHttpRequest has been around for nearly a decade. A decade ago the "advancement" was there. It took almost 10 years for the fad to build up. If someone wants to know the fads (AJAX) just read prog.reddit.com and you're all set. If you want to know REAL C.S. advancements you'll have to dig a bit deeper into the literature.

<comment><USER18> Silicon has been around for billions of years. Forming it into microprocessors is just a fad.

<comment><AUTHOR> If microprocessors lasted only 5-6 years before they were replaced by a newer type of technology - then, yes, they would be just a fad. :)

<comment><USER18> So mosaic, for example, was just a fad?

<comment><AUTHOR> The _concept_ was not a fad. The _concept_ was an advance which has lived on in other browsers.

With imagination perhaps, one could even apply the paradigm of a browser to mechanical and biological domains ("non-computing" in a software sense).

concepts vs. tools for strategic business and market advantage

<comment><AUTHOR> IMHO

1) interpreting of tags

2) sending the tagged content at a site, to an enquiring browser so that in a virtual sense, one is visiting the location.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Why the iOS notifications are ruining my marriage - <AUTHOR> http://hackingui.com/design/why-ios-notifications-are-ruining-my-marriage/

<comment><USER2> How about iOS just not showing banner / alert notifications if the user is actively interacting with the UI? If the screen's been touched in the last 30 or 60 seconds, wait until they're idle before popping up unrelated toast like that. Same with waking up the phone.

<comment><USER3> It should certainly be a feature :)

</comment></comment><comment><USER4> Showing notification just in the top bar, and not sliding them over the screen, is much better. Open the notifications only when you're ready for them.

That's not perfect either, though. All sorts of apps vomit their crap into that notification bar, cluttering it so I can't see the more interesting stuff anymore. Worse, on my HTC One at least, I can't manage my open notifications. I can't manually remove the crap without also removing the stuff I still need to respond to. Whoever thought that was a good idea needs to be fired from a cannon.

</comment><comment><USER5> Interesting concept aside, if your wife gets that angry because you forget to respond to a non-critical text message, she really needs to relax.

<comment><USER3> lol, my wife is amazing. I was just really exaggerating to make the point :)

<comment><USER5> Haha, ok good. Because I've been in relationships like that, and they never end well. I just didn't want to be the bearer of bad news :)

</comment></comment></comment><comment><USER6> If a tap on a notification dismissed it, and a long hold on the notification launched the app, none of this would be a problem.

<comment><USER3> I agree. It should have been something thought out from the get go of this feature on iOS. Now its too late because people are used to the behaviour of the banner notification as is.

</comment></comment><comment><USER7> I am designing an app that would potentially annoy the users from time to time(, the background Core Bluetooth). I am trying my best to fight against the desire of scheduling frequent local notifications. To tell the truth I was annoyed by my own app during the testing.

</comment><comment><USER8> I don't like the idea of having the notifications be parented under the current app's toolbar (also what if it doesn't have a toolbar), but I do like the little bubble appearing and needing a slide to action, that looks cute.

<comment><USER3> Thanks! Yeah, the bubble is the new concept, but of course the only thing that we can do now as UI/UX designers is make sure we have actionable buttons at the bottom of the screens wherever possible and needed :)</comment></comment>


Ask HN: Do you do code review? - <AUTHOR> Do you do Code Review? Any good tool or suggestion? <comment><USER2> 100% would recommend doing code reviews.

The most effective way I've found to do code reviews is to create a pull request for the code you would like to have reviewed. Send it out to someone or a few people that you would like to take a look, get them to approve or reject it, and then take a look at their comments and see what you can do to address them.

Some guidelines for code reviews:

1\. Build each other up. The purpose of a code review is to make sure the code is good, but also to help the team grow together. If growing isn't the focus, then code reviews can quickly become harmful.

2\. Get code reviewed early, often, and in small chunks. No one wants to review a 1,000 line change spanning several sub-systems, and this is the quickest way to get people to just blindly approve or to discourage them from taking the time to review. Smaller changes make it easier to justify taking 10 minutes to look over the code and make some good, constructive suggestions. It also makes it easier for the person writing the code to implement the suggestions.

3\. Don't take it personally. It can be easy to let our ego get in the way when reading someone's comment about our code - after all, we might be proud of it after having spent 45 minutes on the 10 lines that someone just said "could be cleaned up"! Keep in mind that code reviews are about growing and learning, building better systems, etc.

4\. The review is about the code, not the coder.

5\. Honesty is key. Don't be a jerk, but don't avoid making suggestions just because you're worried it might offend someone. That just makes the review pointless!

6\. Be willing spend time with the reviewer if you wrote the code, and vice- versa if you reviewed the code, to go over the suggestions made. Sometimes a comment isn't enough to adequately explain something.

I could probably write more suggestions, but I think these cover the basics.

As for tools, I just use PRs. Create one, either add certain people as reviewers or put a link to the PR somewhere that you can ask for reviewers, and then await their approval/rejection/comments. Once you have approval from the reviewers, merge it. From there you can start to build out different processes/rules around it as you see fit, but it doesn't have to be complicated and doesn't require anything fancy.

I would recommend doing them more async as opposed to scheduling "code review meetings" however. These tend to be more wasteful and can introduce a lot more stress.

<comment> http-teapot This is a great list!

I'd like to suggest one if you don't mind

7\. Review your own code before handing it over. Time is wasted when the submitter left out obvious issues such as typos, missing comments, unnecessary complexity, debug code, etc.

Consider the reviewer's time precious because context switching is expensive and she/he might not get back to it as quick as you'd like to.

Implementing clear guidelines and linting would help.

<comment><USER3> Using a linter goes a long way for this. Maybe make linking part of the check in process.

</comment></comment></comment><comment><USER4> Of course we do. Code reviews help us in multiple ways:

\- You have 2 sets of eyes on every piece of code committed to master (You may argue pair programming does the same, but in our experience, pair programming requires a very different mindset, esp. hands-off pair programming)

\- Multiple people know what changes have gone into master recently. We have an alias (code-review@) which gets org wide code reviews and is added by default and every eng has an option of tracking/commenting on code reviews.

\- For cross team efforts, it's helpful since a team which might have context on a change can see the change before the actual commit. "Coding to interfaces" is great, but seeing under the hood offers a different view as well

For the actual process, we use ReviewBoard ([https://www.reviewboard.org/](https://www.reviewboard.org/)). It has decent integration with command line so you can post reviews from the command line itself. We also have a git hook set up which looks for "R=<someuser>" in each code commit, and rejects the commit otherwise. The hook is (intentionally) super simplistic so you can get past it using something like "R=Self", but with a strong engineering culture, we see this happening less and less with non-minor code commits.

<comment><USER5> Could you elaborate on your experience with pair programming?

</comment></comment><comment><USER6> In every professional team that I've been on, nearly every change has gone through code review. Skipping code review is only done with a very good reason, like if there's a time-sensitive change that you need to make and nobody is around to review it. Another reason to maybe skip code review is for prototype projects or internal tools where low-quality code is ok.

Code review is not only a good way to spot bugs, it spreads knowledge and context throughout the team and makes sure everyone is consistent about both high-level and low-level coding practices. This is especially important when two people are writing code that will integrate with each other; normally each will look over the other's code. It also ensures that if something breaks, there are at least two people who might know how to fix it. Every software engineering context is different, but it seems like in most cases, it's irresponsible to ship code to users that has only been seen by one person.

GitHub, Phabricator, and Gerrit are all good code review tools. I would recommend _both_ using a tool like this and having a habit of talking through code changes in person.

</comment><comment><USER7> I work for a tiny 2-man project and we need to save all the time we can, so we don't code review. We actually have an unofficial policy: all code that is directly user-facing (web design for example) is handled by me and all backend stuff is handled by the other guy.

My previous company worked the same way though, and it was a real company with funding and customers. It was another tiny startup (essentially 4 person engineering team) and the work was cleanly divided: one person did the entire iphone/android app (react native), one person did the website, one person did the backend and one person did the analytics. For an established company this would be a nightmare -- we had tons of bugs in production, usually reported by our users. However, having a really clean separation of duties made it extremely efficient in terms of management, because everyone knew that if they wanted something done on the mobile app they just asked the guy who did the whole thing, he knew the codebase thoroughly and could fix or add the change almost immediately, then would work on the next task on his trello board (which almost nobody else even looked at). We essentially had no management (CEO was constantly gone looking for more funding) so this organizational structure was a huge boon, and allowed us to push out huge features in 1-2 weeks. I think that if we had a full time QA person this really could have worked well, and by "well" i mean "we could have done the job of a ~15 person engineering and QA team with only five people."

<comment><USER3> With all due respect, your process is likely short sighted. In the long term, you would probably benefit from code reviews. I find code review very effective even in very small teams.

<comment><USER8> short sighted, but that's sometimes the right way to prioritize. sounds like kenning is in prototyping mode, and could be intentionally prioritizing time to first test, acknowledging that s/he might have to rebuild things later. in the early stages of a startup, speed to insight can easily be more important than long term coding efficiency. so short sighted thinking can make sense.

<comment><USER3> I agree with "sometimes". However from Kennings post it sounded like "always" and that code review is of no value.

<comment><USER7> > and that code review is of no value.

I don't agree with this at all. Code review is obviously a huge benefit once you have enough money to pay more than one engineer per gigantic slice of the codebase.

I'd say code review is also great if everyone is working on the same thing, such as a library. In that case I'd do code review if there were only two people working on the project. But when one guy is basically just doing react boilerplate and implementing designs, it's not worth the time to check every commit they make.

<comment><USER3> Thanks for your clarification.

</comment></comment></comment></comment></comment></comment><comment><USER9> Yes i do whenever possible - that is, if the team i work with as a freelancer already does or is willing to follow my advice to do it. That is - disturbingly - not always the case.

I only worked with gitlab abd github pull/merge request code review tooling and found it ok. There's Gerrit, but i had no chance to work with it yet. Obviously always depends on how they need to be done. When in doubt, just sit next to each other and look at the part of code and changes for the current task your working on that is about to be merged. Not always a special tool necessary and if you don't know which one to use better just start than let the tool choice get in the way. That being said I'm not against tools!

Suggestions? As with any process or meeting, define what the scope is! Is it about coding style? Which are your guidelines for that one then? Is it about getting a second look if the story is implemented in a good, efficient way? Is it to verify definition of done rules are met? About having (good) tests? It's probably not (counterexample i just had) to discuss the actual requirements defined by the story the code should fulfill... that should have happened at another time, probably with other persons, like the Product Owner. How often? I think it's best to do it with each merge request for the code it contains, and maybe in defined tinespans for the whole project.

</comment><comment> Spartan-S63 We don't do code reviews because we pair program 100% of the time. Our belief is that pairing is like embedding a code review in the process.

<comment><USER10> I would literally rather be unemployed than have to interact with someone for the full 8 hours every day.

</comment></comment><comment><USER11> Yes, fairly regularly. We do "agile" at my 9-5, and we have at least one code review per user story that we complete, usually when the story is about 2/3 of the way done.

How big is your team? Do you all work in the same physical location, or are you remote?

We don't use any fancy tools. We just go back through the commit logs for the branch and diff from before we started to present. For any major refactoring, the lead on that user story will walk the rest of the team through the architectural changes.

We recently moved to Visual Studio Team Services, which has a few more niceties as far as code review goes. I'm looking forward to digging in, but in no way do I think that tools like that are _necessary_ to perform and derive value from code reviews.

</comment><comment><USER12> We use Crucible [1] for reviews and Jira [2] for task management. Each review links to a Jira task (or handful of related Jira tasks). On each review, we ideally:

\- Add 3-4 people as reviewers

\- Reviewers ask questions, make suggestions

\- Author follows up to these questions (online or offline), and if they make code changes they link to the diff in a comment

\- Close reviews only if 2+ people have finished reviewing

\- It's okay to close reviews that not everyone has finished reviewing

[1] [https://www.atlassian.com/software/crucible](https://www.atlassian.com/software/crucible)

[2] [https://www.atlassian.com/software/jira](https://www.atlassian.com/software/jira)

</comment><comment><USER13> I'm at one of the big 5, so everything goes through code review now, but since we're a small team, we do monitoring ourselves, and as a result we have a lot of ways to bypass the process in case we need to get a high priority hot fix out.

When I was doing a small startup, we had a small phabricator installation which I loved using. It's very engineer-focused in a lot of its tooling and features, but has an integrated task management systems and wikis, and tools for pre-commit reviews, or post commit reviews/audits, and I found it much easier to run and maintain than github enterprise or the Atlassian suite (and it's free).

<comment><USER14> Why bypass the code review for high priority fixes? That's when you need it the most.

<comment><USER15> The big example is config changes during ongoing incidents. You may need to flip a flag or update a config right now, but waiting for review, even if it takes just a few minutes, can blow slas.

There's ways to handle that somewhat though.

<comment><USER16> Also at a big 5. We've found that skipping reviews causes more problems than it solves in emergency situations. It's really tempting to bypass the process because you're sure you can fix it fast, but this mindset results in more missteps in aggregate.

If a couple minutes really makes that much of a difference you should probably page multiple people in from the start of an issue.

<comment><USER15> Generally speaking, your un-reviewed change isn't a "fix", but something to stop the bleeding. It might move traffic out of a problematic area, or disable an experiment that's leading to unusual metrics.

In other words, its a rollback, not a fix-forward. (and I'll note that where I work, these changes still need to be reviewed soon after they're submitted). I agree that all fixes should be reviewed before submission.

</comment></comment></comment></comment></comment><comment><USER17> At a medium sized company. Everything gets code reviewed by one or two teams. Only one or two approvals are required. Stash/bitbucket is used and we leverage the Default Reviewers feature. The process works very well, is integrated with our ticketing system (Jira) and build system (Bamboo). We are nice in the code reviews but thorough and a little pedantic about style.

The only reason I can picture not doing code review is if there is only one developer. It is an excellent way for everyone to learn, reduce bugs, reduce spaghetti code, force you to write tests, etc.

</comment><comment><USER18> I suspect this may not be too well received, but I've thus far managed to avoid regular formal reviews, and I'd advise others to think twice before imposing them. They seem like a big step towards treating programmers like cogs in a machine rather than competent individuals, and for me that's a direction I don't want to be headed.

<comment><USER19> I find that good programmers will voluntarily request reviews whether or not they are required by process, and bad programmers will attempt to minimize them even when required by process. Having a policy is a good way to weed out the bad people, and won't affect the good people.

<comment><USER20> And moreover, I send my gnarliest PRs to the most vicious reviewer on the team, just because 3 months from now finding out what's wrong is exponentially more difficult. I want to get it right the first time around, and I want other folks to be able to make changes anywhere in the codebase, even in the gnarly parts.

<comment><USER21> We have mandatory code reviews for everything, which encourages small, bite- size commits and frequent merges. Majority of the changes goes through with just one other person taking a look.

But we also specify (and highly encourage) that anyone trying to land a more invasive or complex change should require multiple review approvals. The most demanding "please pile on, we want eyes on this" request I remember was set to require 4 separate approvals.

<comment><USER20> TBH I favor atomicity over small size. So we get a few gnarly PRs a week. That's also why we use Reviewable instead of GitHub reviews

</comment></comment></comment></comment></comment><comment><USER22> A workflow using feature branches off of master that show changes visually using github, bitbucket, and similar tools works well.

</comment><comment><USER23> Yes. No code gets into the master branch without a code review unless it's a well defined critical fix during an outage.

</comment><comment><USER24> Code reviews keep me honest. I know I'm often sloppy and I wan't to rush things. Code reviews keep me in check. It's when team work in software development manifests at its best. You need good trust among peers though or it can be destructive. Code reviews are not about looking the smartest or putting others down.

</comment><comment><USER25> How do you motivate people to actually review the code? Not just accept it.

<comment><USER20> By requiring reviews for merging into master in GitHub and postulating that unless something is in master it does not exist in the product.

<comment><USER26> What you propose is perfectly compatible with people merely blindly clicking 'Accept" instead of actually reviewing it, which is the problem of the parent poster.

<comment><USER20> Explain the value. Then spot check and separately talk to those who blindly click accept, and if they continue to do so, get new engineers.

</comment></comment></comment></comment><comment><USER27> I would 100% recommend pair programming. Its baked right in!</comment>