Stratolaunch Systems: Paul Allen launches commercial space project - <AUTHOR> http://www.reuters.com/article/2011/12/13/us-allen-space-idUSTRE7BC1R320111213

<comment><USER2> "Allen's rocket will be launched from a massive carrier aircraft powered by six jumbo jet engines, to be constructed by Scaled Composites, a unit of defense contractor Northrop Grumman Corp. The rocket itself will be made by private space company SpaceX, founded by Elon Musk, the billionaire co-founder of PayPal."

<comment><USER3> Just pointing out that Musk is not necessarily a 'billionaire' in actual net worth.

<comment><USER4> yet his [successful] endeavours look like of a billionaire

</comment></comment></comment><comment><USER5> Do you really gain much from a carrier plane if you want to reach orbital velocity? LEO velocity being ~18,000mph, and any realistic carrier plane going much slower than that.

<comment><USER6> One thing you gain is less friction. Fifty percent of the atmosphere by mass is below 18,000 feet, per wikipedia: [http://en.wikipedia.org/wiki/Atmosphere_of_Earth#Pressure_an...](http://en.wikipedia.org/wiki/Atmosphere_of_Earth#Pressure_and_thickness)</comment></comment>


World's first Bitcoin ATM goes live in Vancouver next week. - <AUTHOR> http://www.cbc.ca/news/business/world-s-first-bitcoin-atm-goes-live-in-vancouver-next-week-1.2251820

<comment><USER2> "Transactions will be anonymous."

...

"Users are required to do a palm scan and ..."

?????</comment>


Ask HN: So C will be the new language of the web? - <AUTHOR> Webassembly is coming. So I looked into it. It's a language nobody will ever want to look at or write directly. Just check out the syntax here:
https://wasdk.github.io/WasmFiddle/?ttxwx
(Click "build" and the wasm source code will appear in the lower left)
So will we all be writing C in the future? <comment><USER2> WebAssembly is a compilation target. Lots of things will eventually compile to WebAssembly (or be interpreted by interpreters that themselves are compiles to webassembly.)

</comment><comment><USER3> WebAssembly isn't intended to replace JS for 99% of use cases but it is useful for porting legacy C _libraries_ to make them available to JS apps.

</comment><comment><USER4> > So will we all be writing C in the future?

And any compiled language (C++,OCaml,Haskell...)</comment>


McCain says NSA chief Keith Alexander 'should resign or be fired' - <AUTHOR> http://www.theguardian.com/world/2013/nov/10/john-mccain-nsa-keith-alexander-snowden <comment><USER2> Note he is not calling for Alexander to be fired for all the fun and games the NSA has been up to.

He is calling for Alexander to be fired _for letting it slip_ (specifically, for letting a contractor get that information.)

He hedges his language very well when asked about NSA shenanigans.

<comment><USER3> I'm not so sure, and just as a note, I'm pretty liberal.

> Asked if the US intelligence services were out of control, McCain said: > "There's not been sufficient congressional oversight, and there has been an > absolutely disgraceful sharing of information that never should have taken > place. For many years, we had an absolute provision that any classified > information, which was going to be shared, is based on need-to-know > information."

It seems like he thinks the spying was egregious as well. Given his hawkish nature, I'd be surprised if he was actually that upset about it, but this article makes it seem like he's equally upset that we were doing it and that it was being run in such a poor manner.

<comment><USER4> Senator McCain is almost certainly referring to compartmentalized intelligence [1].

So he's not saying the spying was egregious, but instead that allowing a contractor like Snowden to have access to the classified info about the spying was egregious.

[1] [http://en.wikipedia.org/wiki/Compartmentalization_(informati...](http://en.wikipedia.org/wiki/Compartmentalization_\(information_security\))

<comment><AUTHOR> To be fair, you compartmentalize intelligence so it does not get abused. If you don't have a <need to know>, it is _presumed_ you are going to abuse it somehow. That's the purpose of 'need to know' restrictions. Yes, it also is a policy which increases OpSec. But note His interview reference seems to be wikileaks and Manning, which was a breech of opsec, in theatre. Snowden leaking on the NSA seems to be much more grounded in a principled position, and is in a civillian context. Its hard to infer a position on the latter based upon coments from the former.

</comment></comment></comment></comment><comment><USER5> I find this really interesting:

"And now we have a contractor employee, not a government employee, who has access to information which is, _when revealed, most damaging to the standing prestige of the United States_ and our relations with some of our best friends," McCain said" (Emphasis mine)

If revealing the truth about what the Government is doing damages the standing prestige of the country, then is he implying that much of that prestige is based on a lie?

<comment><USER6> > If revealing the truth about what the Government is doing damages the > standing prestige of the country, then is he implying that much of that > prestige is based on a lie?

Are you trying to claim that 'if the government has done nothing wrong, it has nothing to fear'? I mean, I don't really care which way you believe on that idea but you should at least be logically consistent :P

<comment><USER7> I think logic would dictate that institutions claiming to be public should be public, and those claiming to be private should be private.

<comment><USER8> Why does logic dictate that? You make claims about logic but you are just falsely equivocating words in a semantic game.

</comment></comment></comment></comment><comment><USER9> Sadly, old man McCain wants to see Alexander fired for all the wrong reasons. It's not the crime, it's the cover-up. McCain is throwing his hat in with the cover-up.

<comment><USER10> Interesting! First Dianne Fienstein proposes a "bait and Switch" reform bill which is going nowhere and now you're suggesting Keith Alexander falls on his sword and takes full responsibility so the public thinks there is closure.

Sneaky! Will it fly with the common man or is the common man getting it?

</comment></comment><comment><USER11> Love the final statement from McCain: "If you believe that Mr Snowden didn't give the Russians information that he has, then you believe pigs fly."

Snowden plans to give up all of the documents publicly, so I can see how this is even close to relevant.

</comment><comment><USER12> Keith Alexander is already planning to retire in early 2014, so I don't see the point of this. McCain is just cock-waving.

</comment><comment><USER13> McCain wants him fired because he did cover up the shenanigans (crimes) well enough. How fucked up is that?

</comment><comment><USER14> Yes, because the problem isn't that American government is doing things which, when revealed, are "most damaging to the standing prestige of the United States and our relations with some of our best friends." No, the problem is that one man had the courage to reveal information about the kind of shit American government is doing to our "best friends." Clearly!

<comment><USER8> Are you all so naive as to believe all our "friends" whether from France, Germany, Israel, or even Russia don't conduct operations on the US?

<comment><USER15> I'd be much obliged if you provided any proof that one Western European country has been spying on a member of the US government. Because if you don't, this is all hand waving and smearing.

<comment><USER16> If you count Russia there have been a number of recent stories about Russian spies.

They seem comically bad at getting any intel - much of what the captured spies were caught with were publicly available documents. They had "gained access" to some organisation, but that org had open public access anyway.

I'd be amazed if GCHQ was not listening in to US politicians. I suspect that's why Obama had so much work done to his mobile phone before he was allowed to use it.

Really, governments spying on other governments is not news. The spies get found and expelled by one country, the other country expels a diplomat or two. Everyone expresses outrage. More spies get sent in.

<comment><USER14> Is it possible that they are amazingly good at not getting caught and controlling leaks. Every now and then they allow them salves to be caught with some crap documents, just to keep up appearances. Just a thought, neither you or I will ever know for sure, unless they develop some serious leaks.

</comment></comment></comment></comment></comment><comment><USER17> Recently on TV John Bolton said something in a similar vein -- that everybody spies on each other but no one talks about it and it's the people (such as Snowden) who leak that are the problem, not the program itself.

But it seems to me that if something is commonplace and accepted then why all the sotto voce?

Because once again the government practices ethical double standards. Which makes sense if you assume a class structure where bureaucrats occupy the superior class and those outside government occupy an inferior class.

</comment><comment><USER18> > "Asked if Alexander should resign, McCain said: "Of course, he should > resign, or be fired. We no longer hold anybody accountable in Washington."

The irony here. It hurts.

</comment><comment><USER19> I was encouraged by the headline, until I read why McCain wants him fired. Not for ignoring the 4th amendment; not for repeatedly, knowing lying to congress —a felony— and destroying their ability to provide any oversight; not for his tact...See More

</comment><comment><USER20> I recommend jail instead ...

</comment><comment><USER21> It will be unsurprising if some dirt on McCain mysteriously appears in the near future.

</comment><comment><USER22> When I read the title of this article I was _so_ pleasantly surprised. Who would have thought that McCain (an old warmonger who is power hungry) would say?

After reading that I now see that he wanted him fired, not because the NSA targeted _everyone_ and not because the NSA violated _everyone 's_ privacy but only because the NSA boss should have had even more security protocols in place.</comment>


Autistic Boy Gets Branded A Cheater By Microsoft, Gets Achievement Score Wiped - <AUTHOR> http://www.thekoalition.com/autistic-boy-gets-branded-a-cheater-by-microsoft-gets-achievement-score-wiped

<comment><USER2> Did you even read the whole article? Here is the relevant quote:

 _It appears that this kid actually did cheat, meaning that this news story was clearly a means of discrediting Microsoft._</comment>


Why writing software is not like engineering - <AUTHOR> http://www.cs.usfca.edu/~parrt/doc/software-not-engineering.html <comment><USER2> IMHO, writing software is actually an excellent example of an engineering task. The reason we see all these failures in software development is, in fact, that most software developers are NOT engineers. This is where all this pain comes from.

The role of engineering is to apply a theoretical model/representation of a physical fact, in order to achieve a desired result. The role of science is to provide these models with maximum accuracy.

The better a model is (equations, empirical laws...), and the better the engineer masters this model, the more accurate will be the expected results.

Programming languages, frameworks and patterns _are_ scientific models, designed to represent the working of a computer. Bugs and unexpected behaviors in a program are due to a bad application of these models. If you know _exactly_ what you are doing (i.e. you have a deep understanding/knowledge of these models), there is no reason for you to observe some unexpected failures. The more experience you have, the better you understand these models, and the more productive you are.

Of course this is just theory: in practice, things are getting quickly complicated and it is humanly impossible to predict everything that will happen - that's why testing exists. But my opinion is one would see much less failures in software development if developers were actually experienced engineers. Many developers today have no idea _what_ they are doing, essentially because they are juniors and inexperienced. Unlike engineers, they are not trained to mentally play with the theoretical tools they use, so they cannot predict the results. And yes, at this point software development becomes more an art than an engineering task. It's like juggling without being able to predict the trajectory of the balls.

<comment><USER3> I think the difference is that software is engineering that isn't _treated_ like engineering. For example, if a new bridge is going to be built, years and years are spent building models, testing winds, and understanding the geography of the location. Models are tested in wind tunnels. Dampers are added for earthquakes that may or may not occur. Every truckload of concrete is tested. Metals are designed for exact specifications.

When software is built, the first prototype becomes the production version. People don't think about the future. Algorithms aren't _chosen_ they are hacked together by someone who may or may not understand the system from beginning to end.

The problem with software, most times, is precisely that it is not treated as engineering. We build software to be thrown away. We don't build it to last. This article from Dan Bricklin changed my perspective on software.

<http://www.bricklin.com/200yearsoftware.htm>

He argues that we _should_ treat software more like engineering projects and design and build it to last.

Furthermore, we _require_ civil engineers building bridges to have degrees in civil engineering. For software, anyone can create it. People who never went to college even. But you'd never allow someone with only a history degree to design a skyscraper. We've become accustomed to software written by people who are not engineers. We don't spend the same kind of money on it and the users of it don't really care, because unlike a bridge, their lives don't depend on it not crashing.

<comment><USER4> If we treated programming like engineering we would finish one project every twenty years or so, and proceed to work on the next for the next twenty years.

There's simply no such counterpart in physical engineering to the iterative programming process. Engineers _know_ how to build a bridge, that's why a particular design succeeds and is then followed by construction properly carried out. Programmers face _unknown and unsolved_ problems all the time; in fact, a solved problem is not worth the programmer's time. A solved problem has already been implemented several times and can be reused, either literally or conceptually.

Engineers have been trying to solve the problem of a practical electric car with acceleration, velocity, range, and reload time comparable to petrol engines for decades. New things take time.

The reason we can write complex software in a few years instead of decades is that in software world, luckily, the cost of building, compiling, and trashing a prototype is negligible. Conversely, the complexity of projects has been upped a corresponding notch but only to the extent that we can still actually finish _some_ projects.

<comment><USER3> If what you say is true, we'd have electronic voting. Why don't we have that?

Physical engineers face unknowns all the time. Building in unknown environments for example. New materials. Climate change. I can't even count the number of different designs for bridges, buildings, and cranes.

<comment><USER5> Yes, but at least you know you're building a bridge. Instead of, say, developing a game and discovering your users want a photo sharing site instead (flickr). That's an extreme example, but it's very rare to build software that doesn't deviate significantly from what is initially specified. You could never engineer in those conditions.

And once you build your bridge, you're finished. It just has to stand there and take the load. It doesn't have to be unpredictably changed over the course of it's lifetime to also function as an airstrip and shopping mall.

Even the simplest of real-world software products you typically need to grow and adapt - sometimes dramatically - over time.

</comment></comment></comment></comment></comment><comment><USER6> I disagree with this guy, every point he makes is flawed:

> Engineering components exist in the real world

Yes, and computers don't exist in some alternate dimension. People might forget it sometimes, but if you're a real engineer, you should know how a computer works, and know it's not magic, it's physics that make you're computer work. Software is merely an abstraction. Secondly, math is also engineering, but you can't touch it, can you?

> Engineering components interact in more predictable ways

No, wrong again. Software is perfectly predictable (BTW, if you want, you could build a mathematical model of every program. 100% predictable). If you make mistakes in other engineering branches you can get some strange results too.

> Engineering has fewer fundamental midcourse design changes

I don't see the link between engineering and design changes here. Are you trying to say that no single engineering project changes during it's life? Just look at prototypes of cars, those changes are quite massive. Secondly, ask yourself this question: How much does it cost to change a rocket design midway compared to a software program?

> Is software development a science?

Well, that's the point, in my opinion it's engineering.

> Writing software is more an art than an engineering discipline

Some think so, but really, it should be seen as engineering. Why? Artists make choices related to what they like, how they feel. Engineers make objective choices (or at least they should, nobody is perfect).

Rant finished!

<comment><USER7> I agree with D. Knuth here: software is an "art", but rather like in "artisan" not in "artist". In this context "art" means something that has some good established practices but is not yet science.

Full article here: <http://www.paulgraham.com/knuth.html>

This is a discussion about meaning of words, so appeal to authority finishes the argument :)

<comment><USER6> Hmm, good point, there is quite a difference. But still, I think most software problems wouldn't exist if there were more engineers (=theoretical knowledge) than artisans (=practical knowledge). But that's another discussion.

</comment></comment></comment><comment><USER8> Algorithms are science and math. Programming is a craft. Programming in teams is communication and human relations. Making software that's easy and fun to use is psychology and arts. Selling that software is business and marketing.

It's the mix of all this that makes software development so challenging and fun.

<comment><USER9> _Theory_ is science and math. _Engineering_ is a craft. _Engineering_ in teams is communication and human relations. Making _artifacts_ that's easy and fun to use is psychology and arts. Selling that _artifacts_ is business and marketing.

It's the mix of all this that makes _engineering_ development so challenging and (potentially) fun.

</comment></comment><comment><USER10> Well, engineering is not like engineering. You can't paint all "engineering" and all "engineers" with the same brush: we're not all alike.

I've designed (physical) devices where the customer needed the end product ready in a few days, and others where it took months. Sound anything like software?

Software engineering is simply the process of using known concepts to build a software product. That's no different from "traditional" engineering. Just as you apply a different approach to a 3-page website versus an enterprise inventory app that must failover smoothly between 5 servers, a mechanical engineer will apply a different approach to designing a pickup truck versus a "Little Tykes" car.

The reason programs don't look like they're engineered isn't because we don't know how to (I'd like to think my software engineering degree counts for _something_ ), it's because we usually don't bother.

</comment><comment><USER11> Does it really matter what you call it?

At the university I attended, the Computer Science program shifted from the Engineering department to the Science & Mathematics department during the course of my studies. Incoming freshmen were still handed copies of SICP and Introduction to Algorithms at the door.

<comment><USER12> The vast majority of college degree programs don't teach the core skills necessary for success in the field, regardless of naming, but that's a different problem.

Nevertheless, naming has a powerful influence on understanding. If people think that software development is a science, they'll treat it that way, similarly, how they treat it will change if they think it's an engineering discipline or an artistic effort.

I've come around to the idea that software development is partly engineering and partly creative, much like architecture. Treating it like a science is the surest recipe for failure, as you'll be lucky if you ship anything worthwhile on schedule. Treating it like engineering will result in a much higher rate of success, with higher quality, and greater scheduling certainty, but will frequently result in mediocrity and developer dissatisfaction. Treating it like pure art sans engineering will probably result in lower quality, and unpredictable scheduling. But giving proper respect to the importance of both sound engineering and creativity seems like the sweet spot to me.

</comment></comment><comment><USER13> Another factor: Many software projects are research projects, i.e. new technology development, because they try to do something new, whether on a technical level or on a user interface development level.

It is fairly common for new technology development to cost vast sums of money while yielding nothing practical. Importantly, when developing new technologies, people understand that something may or may not come out of it, and they accept that (somewhat).

The other factors are definitely an issue too, though:

\- Lack of physicality of the output

\- Increased likelihood of unintended interactions between components

\- Clients changing their mind halfway through (!)

</comment><comment><USER14> Computer Science in most schools is mainly mathematics and a couple of programming courses thrown in. To become a working programmer however is a craft that you learn and become better at through experience. The education that you get from Computer Science is similar to that you get from say political science. From political science you usually go to law school to learn something more concrete. Computer Science doesn't have a law school equivalent where you go to learn software development, usually you have to learn on your own. Depending on the type of software development work you do, you can find your Computer Science education quite useful. Basically any math heavy subject is a fine prerequisite education for software development craftsmanship.

<comment><USER15> That's not specific to Computer Science.

My Mechanical Engineering degree spit me out with just enough knowledge that I could go learn how to be a Mechanical Engineer. None of the things I did on a daily basis over the next year were things I learned in school, but I was able to figure them out because of the things I learned.

That's the unspoken purpose of school (at least in the Engineering areas). Your degree doesn't teach you to do any specific job. It's a 4-5 year conditioning course for your brain. It weeds out people who won't be successful in a certain area, and rewires everybody else so that they can "think like and Engineer".

So if you're complaining that School didn't teach you to write CRUD apps in Java, you're complaining about the wrong thing.

</comment></comment><comment><USER16> A couple of questions that come to mind:

1.Is "Computer Science" the same term as "Software Engineering"? 2.Is developing specific applications for clients that ordered them Computer Science? 3.What about the cases when someone writes software for experiments and research in a specific field of science (for example biology)? 4.Is developing large enterprise systems part of the same field as is writing software that controls robots or for example software for optimization based on biological phenomena?

What do you think?

<comment><USER2> 1\. No: The goal of Computer Science is to provide and improve methods, languages and frameworks to manipulate a computer. The goal of Software Engineering is to apply these tools in order to achieve a requested result with a computer.

2\. No, that's the purpose of Engineering. (Science creates models, Engineering applies them)

3\. This is engineering for scientific purposes :)

4\. This is still engineering, applying different models.

</comment></comment><comment><USER17> I prefer the title Developer to Engineer because it conveys the iterative work that is a large element of writing most software.

<comment><USER18> I always just assumed 'engineer' was an Americanization of the word 'programmer'/'developer'. Maybe that's just my British perspective. It's also down to my belief in some of the principles in the OP. I'd never heard 'software engineer' used outside of an academic discipline, until I got in to startups and listened to lots of US tech podcasts and read lots of US tech blogs.

<comment><USER19> > I always just assumed 'engineer' was an Americanization of the word > 'programmer'/'developer'.

It often is exactly that. I'm probably being too pedantic, but as a developer I don't allow myself to be called an engineer, though some companies have wanted me to. I'm not one, I don't have an engineering degree nor certification and I feel it cheapens the Engineering profession to allow that.

I guess I could be called a "scientist" since I do have a CS degree, but that just feels weird.

<comment><USER17> It implies a degree of rigour that I certainly don't have. I'm conscious of being just a punkass with an inflated job title.

</comment></comment></comment></comment><comment><USER20> I disagree with points of this article, and I'm not sure about the premise. I think Software Engineering is not as well defined as it could be but I think it is getting better. The book Rapid Development by Steve McConnel goes a long way in that regard.

The article states that to spend vast sums of money and end up with nothing, you must be paying for software development. But if you follow the principles laid out in Steve's book (and probably other software engineering books as well), you can't end up with nothing; at every milestone you have something, just like a building.

I also disagree that software either works or doesn't. Most software problems are bugs, and most of the ones that make it through testing are intermittent, seemingly randomly occuring problems. Software with bugs still works, but may not be high enough quality that you would want to use it, similar to how you wouldn't want to live in a house made of shoddy materials, even though it still mostly provides shelter and "works."

<comment><USER21> _> at every milestone you have something, just like a building._

What? When you're building a building, you don't have something usable at each milestone.

<comment><USER22> Of course there are milestones (that leaves you something usable) in construction!

* Construction start

* Foundation completed

* Structure/Frame completed

* Roofing completed

* Interior Walls

etc etc etc.. I'm not in the construction business, but anyone with even the smallest experience (like putting up a deck) can tell you what critical milestones need to be completed. You can't start the roofing without the supporting foundation and structure completed -- nor can you put up deck railings without the actual deck floor in place.

<comment><USER23> The cool thing about software is that the order should reflect uncertainties and risks rather than physical structure. The incomplete parts can be stubs.

</comment></comment></comment></comment><comment><USER24> Terence Parr (the author) is "the maniac behind ANTLR": <http://www.antlr.org/>

</comment><comment><USER25> A tangential issue is the broken metaphor of "coding as construction", which is discussed in a classic essay by Jack Reeves: [http://www.developerdotstar.com/mag/articles/reeves_design_m...](http://www.developerdotstar.com/mag/articles/reeves_design_main.html)

</comment><comment><USER26> Software is an art because the tools, components, and abstractions are so incomplete, and so numerous, that it becomes impossible to calculate what will happen without trial and error.

</comment><comment><USER27> The difference between engineering physical things and software is that in "regular engineering" the bulk of the decisions are made in the design phase. You might have issues that crop up during implementation but largely they are small in scope and can be resolved. In "software engineering" your design phase is short and the implementation phase is really long. Design decisions are happening during the coding part.

It doesn't have to be this way. If there were the equivalent of CAE tools for software design where you could easily manipulate modules and the interfaces between them maybe it would happen. (And no, the IDEs today are not there yet).

We need more standard high level reusable components that all the people on the team know. When I need something bolted together or need a simple motor, I've got a bunch of suppliers to handle that. Java and Python and others have these great comprehensive software libraries now, but they only go up to a certain level. I feel like so many software projects are just duplicating the same stuff over and over (exactly what RoR aims to solve in one domain which is why it is so popular). People have been saying this for 30 years now, but people were saying it in mechanical engineering for about 100 before it came to pass so I'm not surprised it will take a long time.

There is also the difference of modeling. When I'm designing something in the physical world I have a bunch of knowledge to apply to the problem. It's not as easy as people are making it out to be (bridges are not _exactly_ trivial problems, especially when compared to 99% of the software written out there. Don't even get me started on what I work on) but there are guides. When I'm deciding what material to use for a part I have a bunch of information about the problem, a bunch of information about the available materials, and there will be some decision making process trading off several factors (cost, corrosion resistance, weight, strength, fatigue etc) and an informed choice is made. When I want to choose between Ruby on Rails and Django, I have a bunch of blog opinions. I can't model out the performance difference between using C++ or Java for a robotics framework. I can't predict what this algorithmn will do to my real time performance. You have to actually DO IT, and then measure it. Sometimes we have this in mech eng. too and we make physical models and test them on a small scale, that CAN happen in software engineering but rarely does it.

So 2 bit take away: the design phase in software engineering could be a lot more like "engineering".

<comment><USER5> Certainly no one here is trying to make it sound like undertaking a massive engineering effort (like building a bridge) is easy. It's damn hard, and harder than most software projects - and it takes a lot more time and people.

But people do build 'models' on a small scale when doing development. They're called 'prototypes'. Except in this case, they're usually to prototype the functionality, to collect feedback from the users, and not to test the 'engineering' suitability of a given library or framework for the final product. Why? Because satisfying the engineering constraints is not the hardest problem - nor the most important one - and not by a long shot. You can replace pieces of your infrastructure, or write your own, if they don't scale to your needs - but if your product isn't compelling, that's a non-starter.

The 'design phase' of most construction projects is mostly about making engineering decisions. The 'design phase' of software products is more about features, usability, and scope. While engineering plays a role, it's not the biggest one - and you can have plenty of success with bad engineering decisions. The great thing about software development is that if you're successful, you can go back and revisit your earlier decisions - and fix them if necessary.

You can build a bridge that will last a thousand years, but with software it's more important to figure out where to build the bridge TO. Or whether people would prefer a ferry.

</comment></comment><comment><USER28> I like the term "Informatics" pretty much describes what is the main topic in CS - so just being an Information Engineer/Artist is fine with me.

<comment><USER29> In other countries anyone that does anything computer related is an informaticien. I don't like it because it's used as a catchall for an entire industry (tech support all the way up to engineer). And, atleast in the US, informatics implies information science. A degree you get when you want to be a research librarian.

</comment></comment><comment><USER30> A Z80 can do almost everything that a modern CPU can do. Software is not quite so generic or fungible.

</comment><comment><USER31> A lot of what we now call software engineering should really be sociological experimental design.

</comment><comment><USER32> Art + Engineering = Software

</comment><comment><USER33> I've always had the opinion that "engineer" is what the americans call a programmer. I also maintain that the largest reason behind the increasing and worrysome trend of downright lousy and inefficient software is due to it being "engineered", or should I say "overengineered", rather than just programmed. I blame a bad part of "software engineering" for this downwards spiral, but not "software engineering" itself, even if there's always a very clear distinction in what software was done by a programmer, and what software was made by an "engineer", with the latter pretty much always being the clunky and inefficient one.</comment>


Show HN: Python 3 with backwards compatibility features - <AUTHOR> Porting Python code from version 2.x to 3.x is not a simple task.  To help, I built a version of Python 3.6 that includes backwards compatibility features.  Most important is the mixing of bytes and str objects and comparisons.  For example, in vanilla Python 3:

  >>> b'foo' + 'bar'
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  TypeError: can't concat bytes to str
  >>> None < 'hi'
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  TypeError: unorderable types: NoneType() < str()

 In my Python 3:

  >>> b'foo' + 'bar'
  sys:1: DeprecationWarning: encoding bytes to str
  'foobar'
  >>> None < 'hi'
  __main__:1: DeprecationWarning: default compare is depreciated
  True
 Certain changes are easy to fix with code converters like 2to3.  For example, changing print statements into functions is trivial.  I don't bother trying to handle those.  There is still a lot of things that could be added.  However, when porting a large code base to Python 3, I found it useful.
I hope other people might use it and submit improvements.  If someone need pre-built binaries (e.g. Windows), I would be willing to do it.
https://github.com/nascheme/ppython <comment><USER2> Good work, have you put it on PIP and Python Mailing list ?

</comment><comment><USER3> This is what Python devs should have done...</comment>


Qt 5 Beta has been released - <AUTHOR> http://labs.qt.nokia.com/2012/08/30/qt-5-beta-is-here/

<comment><USER2> Qt5 is taking the project in some interesting directions regarding the UI aspects. I think it'll be a good thing overall but it's certainly proving a bit contenious amongst people who're comfortable with QWidget and don't like the idea of JavaScript being a first class citizen. As long as it's as fast I'm happy.

<comment><USER3> I think there's nothing to fear. The announcement states that in most cases you should be able to port your applications from Qt4 into Qt5 with little or no modifications. On the other hand, I was an skeptic in regards to QML at first, but after using it I fell in love with it. It's logical and very easy to learn, and having similarities with web development means expanding the availabilty of programmers and designers who can work immediately in your project. Great stuff.

<comment><USER4> As c++ programmer,you have to use some(in most cases,a lot of) java script to accomplish your job, I guess that's why C++ programmers complain about it. JS should be an option, without it QML can works fine, but in the real situation C++ is optional. It is hard to keep the balance.

</comment></comment></comment><comment><USER5> I am hoping Qt will regain its status of a cross-platform toolkit of choice. Back in time it provided the solution for fragmented Desktop development. With Digia's involvement now it can solve the same problem but in mobile space. But even if this does not happen, there is still the whole field of desktop development which is not going away any time soon. Web is simply not capable enough to create truly big and complex applications.

<comment><USER6> Google native client is a promising tech for web to reach desktop performance. I developed a complex vector application (htp://www.torapp.info) and reached better performance than desktop equivalents.

<comment><USER5> I find it hard to believe, because even that it runs native code, there is a small penalty of a sandbox environment and it certainly cannot be faster than pure native code.

<comment><USER7> Just because desktop always wins in theory doesn't mean that you can't exceed the performance of existing native clients. I'm sure Illustrator leaves a ton of performance on the table simply by virtue of having a large legacy codebase. For instance, if it becomes practical to assume that all of your clients support GPGPU then Illustrator's existing CPU optimized code instantly goes from being a critical advantage to a heavy burden: they have to maintain that code _and_ write new GPU code that somehow fits with the old code whereas you just have to write the GPGPU code. Witness pixelmator curb-stomping Photoshop in the performance department. Of course, that example is Desktop App vs Desktop App but the principle is the same.</comment></comment></comment></comment>


Import Python Functions from DNS Records - <AUTHOR> https://github.com/libeclipse/import-from/pull/4 <comment><USER2> That's interesting, I could imagine using that in some sort of DevOps auto- configure situation, but DNS lookups aren't encrypted so someone malicious could rewrite the response and control what you execute.

<comment><AUTHOR> Actually Google's DNS over HTTPS API is used, so it is encrypted and also secured using DNSSEC.</comment></comment>


Tech Startups Are About To Start Dropping Like Flies - <AUTHOR> http://www.slate.com/blogs/future_tense/2012/12/20/series_a_crunch_tech_startups_are_about_to_start_dropping_like_flies.html

<comment><USER2> Brazilian investors used to invest a much smaller amount and assume much less risk than the ones in US. Even with those big amounts and frequence in investing I still believe that there are lots of interesting statups being funded and some of them will succeed.

Also the "crunch" mentioned is nothing more than what is expected form Startups, a very risky environment where 1 out of 100 or out of a 1000 survive.

If the investors don't think this way, they won't have so large portfolios to spread their money in.</comment>


Show HN: OpenCourseWare material emailed to you every week - <AUTHOR> http://ocw-reminder.appspot.com/

<comment><AUTHOR> Hello, I'd like some feedback about my site. Those who wanted to sign up for reminders but didn't, what prevented you from doing so?

<comment><USER2> I think it looks promising. Like the comment above, a searchable drop down, where I can type in the partial name of the course and it shows all courses containing that text, was the biggest factor in not singing up. Without it, you are asking your users to go to another site (perhaps after googling first), find a course, find the number, and then come back to your site.

Another idea to add a veneer of legitimacy...at the bottom of the splash page, have a scrolling list of recent courses for which users signed up. If you are just getting started, create a list of 15 courses you THINK your likely visitor might be interested in (i.e., "fake it tell you make it").

<comment><AUTHOR> Hmm, good point. Thanks for the feedback.

</comment></comment></comment><comment><USER3> @zodiac I suggest you integrate something like jquery's dropdown with search for the course identification.</comment>


Ask HN: how can i re-ignite interest in my website? - <AUTHOR>

Hiya HN how's tricks? we made a movie voting site - http://www.greatmovieexperiment.com which had some small initial success in terms of blog posts and tweets but soon died down in traffic. On the plus side I'm quite pleased with how the site has worked: after 229k votes it has produced a quite interesting top 1000 list. Any tips for re-sparking interest and attracting the next few hundred thousand votes would be much appreciated. <comment><USER2> Where is the benefit for the voter? As you say, an interesting top 1000 list has already been produced. That was the reason to vote, to see what would come out on top. We know now, so why keep voting? There needs to be some personal and/or social benefit to voting.

Ideas:

1\. Suggest movies from your "haven't seen it" picks that you might like based on your votes. You actually have a big advantage over Netflix and Amazon here because you have users telling you what they haven't seen. All the big companies know is whether the user has or hasn't bought or rented the movie.

2\. Make themed subsets to vote on. Do a great 80s movie experiment. Or a great sci-fi movie experiment. Put up a new themed set each month or quarter. At least there will be something new on a regular basis then.

3\. Let users see a personal top 10/100/1000 list based on their own votes. Of course, they will need to vote a LOT for this to make sense, but that's kind of what you want, isn't it? Maybe give them a percent of votes needed to get good results, like, "You need to vote about x times to get good results. You're at 35%, keep voting!"

4\. This is vague and useless because I don't know enough about Facebook to know what would work, but make something that users can share via Facebook. Think how online quizzes get more traffic by giving badges that users can post on their wall.

<comment><AUTHOR> Hi Daniel, thanks for your feedback, it's a big help!

I hadn't realised until I read your comment that the "logged in" features of the site aren't talked up on the front page. When logged in you can see your personal top films based on your votes, and your reccomendations based on films you haven't seen. These are currently only recommended based on their rank, but in future we'd like them to be weighted based on your voting history and a method of matching you to users who voted in a similar way.

</comment></comment><comment><AUTHOR> link: <http://www.greatmovieexperiment.com></comment>


Goldman Sachs: GS Collections source code released - <AUTHOR> https://github.com/goldmansachs/gs-collections <comment><USER2> Let's just take a quick look....

gs-collections / collections / src / main / java / com / gs / collections / impl / map / strategy / immutable / ImmutableHashingStrategyMapFactoryImpl.java

Never mind...

</comment><comment><USER3> This code badly needs a piece of documentation outlining:

* how it differs from Google Guava Collections,

* what are the tradeoffs and performance/memory characteristics of the collection types.

I couldn't find an answer to the question "why would I use this?" — and I am actually looking for collections with certain properties (for Clojure, but it doesn't matter much in my case).

<comment><USER4> Same as Guava, except 7% of items added to collections are deducted for management fees

<comment><AUTHOR> I don't think the source was released back then

</comment></comment></comment><comment><USER5> I have no idea whether this code is any good or not (I'm a PM by trade) but in Investment Banking, GS has very much a "build rather than buy" mentality, and I get the impression that techies are treated with more respect than some places.

I have heard from people that have worked there, that one of their main sources of competitive advantage is their bespoke settlements system, Sec DB. Apparently, it models every instrument as an object, and adding new derivatives and instruments is relatively straightforward.

A bunch of senior managers from GS took over the tech organisation of a different bank I was involved with, and one of the first things they did was to start creating a new settlements and trading system, even down to the level of creating their own RDBMS as existing ones didn't do what they wanted.

In most banks, you could get laughed out of the office if you said you needed to write a new RDBMS from scratch.

</comment><comment><USER6> Am I missing something or was this not posted a long long time ago?

<comment><USER7> Looks like it appeared in Jan and was updated in August.

</comment></comment><comment><USER8> 109 days later, a PR move regarding the german documentary about the bank? (cf. [http://www.huffingtonpost.com/vivian-norris-de- montaigu/the-...](http://www.huffingtonpost.com/vivian-norris-de-montaigu/the- omerta-surrounding-go_b_1852253.html))

<comment><USER9> I've seen the documentary and thought exactly the same. Let's see if there will be any more goody-goody news pieces about GS in the next time.

</comment></comment><comment><USER10> "Provides replacements for ArrayList, HashSet, and HashMap optimized for performance and memory usage."

Sounds interesting, would like to know a bit more. Looks like I have to find out for myself if I want answers

</comment><comment><USER11> Perhaps this is an attempt to get back in good graces with the hacker community after trying to destroy sergey aleynikov.

</comment><comment><USER12> Why are did they include all the IntelliJ crap in the repo?

<comment><USER13> Show me one large organization that does project automation well. I'm literally not permitted to build my projects with Maven at work (this does seem to be Maven-ized), and I suspect I'm far from the only Java developer in that boat.

<comment><USER12> Thats scary, so you build the production files out of an IDE? What happens if some developer has a slightly different IDE config? Or the IDE has cached some compiled file that no longer actually compiles due to a change?

Personally I build all my test/stage/production releases on single Jenkins box that does a full clean before building (actually it auto builds off a github hook).

<comment><USER13> It's okay, because someone else is building the production artifacts and they're using a different tool.

</sarcasm>

I have a Jenkins install on a "found" server (belonged to a project that no longer exists, never gave the server back to infra) so I know my tests pass and my Ant scripts produce good artifacts. Still, it would be nice to step away from Ant and use something requiring less effort (and, could automatically resolve my dependencies, which by the way are a whole other battle).

<comment><USER12> Quit your job and find a better one.

</comment></comment></comment></comment></comment><comment><USER14> Think how much coding the Vampire Squid can get done with all those tentacles.

</comment><comment><USER15> Java has lambdas now?

<comment><USER16> Not natively; that's why this framework provides a way of simulating them. Java 8 is supposed to have native lambdas, though.

</comment></comment><comment><USER7> Better than Google Guava or Apache Commons in any way?</comment>


Austerity policies do more harm than good, IMF study concludes - <AUTHOR> https://www.theguardian.com/business/2016/may/27/austerity-policies-do-more-harm-than-good-imf-study-concludes <comment><USER2> This coming from the experts that lend money to troubled countries. Government austerity is bad for business, naturally.</comment>


Plan: Organize your life - <AUTHOR> http://www.getplan.co

<comment><USER2> Why did this only get 1 point? It's one of the first todo / organize your life type tools that I've actually used in a long time.

</comment><comment><USER3> The contrast on almost everything on this page is very low. Apart from that it's pretty sexy.</comment>


Ask HN: Did lunar calendars cause right-to-left writing systems? - <AUTHOR> I am not an expert and may be off-base here.  But I believe that Chinese and Semitic writing systems are right-to-left (in the Chinese case, up-to-down first) and that these cultures used predominantly lunar calendars.  Meanwhile, Western and Mayan writing systems are left-to-right, and these cultures used predominantly solar calendars.  The moon waxes from right to left.  Is it possible that calendar systems influenced writing direction? <comment><USER2> The Persian calendar is a solar calendar. Persian is a right-to-left language. (Both the older Pahlevi form and the modern Arabic-derived one.)

The Chinese calendar is, technically speaking, a lunisolar calendar. The Hindu and Thai calendars are also lunisolar. Thai is right-to-left.

There does not appear to be a correlation.

<comment><AUTHOR> Obviously most writing systems are derived from older systems, so I tried to only list systems that might have independent origins (although both the Semitic and Western systems come from an area that had writing for a long time, so it is questionable). Old Persian cuneiform was left-to-right ([https://en.wikipedia.org/wiki/Old_Persian_cuneiform](https://en.wikipedia.org/wiki/Old_Persian_cuneiform)), while the Pahlavi and modern Persian writing systems have a common origin with Hebrew and Arabic (i.e., Semitic).

Thai (at least today) is left-to-right, but anyway Thai is highly irrelevant since it is derived from Indian writing systems and probably ultimately from Semitic ones ([https://en.wikipedia.org/wiki/Brahmi_script](https://en.wikipedia.org/wiki/Brahmi_script)).

Old Persian: left-to-right. Calendar: solar. Sumerian: left-to-right. Calendar: lunisolar. Egyptian: left-to-right. Calendar: solar. Chinese: right- to-left. Calendar: lunisolar.

So, anyway, so far the evidence is not strong at all (and I wasn't saying it is), but I'm not yet convinced there was definitely no influence.

<comment><USER2> As you can tell, I didn't research the history that far back. Thanks for the corrections.

Looking now into the history of the Chinese calendar, [https://en.wikipedia.org/wiki/History_of_calendars#China](https://en.wikipedia.org/wiki/History_of_calendars#China) says:

> Before the Spring and Autumn period (before 770 BC), the Chinese Calendars > were solar calendars. In the so-called five-phase calendar, the year > consists of 10 months and a transition, each month being 36 days long, and > the transitions 5 or 6 days. During the Warring States period (~475-220 BC), > the primitive lunisolar calendars were established under the Zhou Dynasty,

[https://en.wikipedia.org/wiki/Chinese_calendar#Earlier_Chine...](https://en.wikipedia.org/wiki/Chinese_calendar#Earlier_Chinese_calendars) elaborates:

> Before the Zhou dynasty, the Chinese calendars used a solar calendar.

> According to Ancient Chinese literature, the first version was the five- > phases calendar (traditional Chinese: 五行曆; simplified Chinese: 五行历), which > came from the tying knots culture. ... The second version is the four- > seasons calendar ... The third version is the balanced calendar ..

> In Zhou dynasty, the authority issued the official calendar, which is a > primitive lunisolar calendar.

The Shang dynasty came before the Zhou dynasty, and [https://en.wikipedia.org/wiki/Oracle_bone_script](https://en.wikipedia.org/wiki/Oracle_bone_script) says that "The vertical columns of text in Chinese writing are traditionally ordered from right to left; this pattern is found on bronze inscriptions from the Shang dynasty onward."

This would seem to mean that the Chinese calendar had a right-to-left writing system and a solar calendar, before switching to a solilunar calendar, yes?

Does that not invalidate your thesis?

In any case, I don't see why there should be any connection. If there are only a few data points, then it's very easy to get coincidental correlations.

What difference does it make?

<comment><AUTHOR> Yeah, if that is right about China, it is pretty damning. And sure, given how few data points there are, it is the kind of thesis that would be impossible to really definitively confirm.</comment></comment></comment></comment>


Why JavaScript - <AUTHOR> https://nicolas.perriault.net/code/2013/why_javascript/ same here: loving python and forced into JS. <comment><USER2> The biggest problem with JS for me is not its quirks, but the way that until you know--and I mean, really know--the language, you WILL make absolutely horrific errors, on every single level of development. It does not matter how good you are at writing C, Java, or Python.

Oh, what, you thought == was for comparison? Wrong. Oh, you didn't wrap your all your code in an anonymous, self-calling function? You lose. Oh, what you thought it was okay to leave off semicolons and var statements because they aren't required? Sorry. Hmm, you didn't know how to manage dependencies between scripts? Should have studied harder. You tried to iterate over an array? Ridiculous. Your brain exploded when trying to write a series of asynchronous functions in continuation style? A pity, really.

People who are good at JS like JS because it makes them special. They can lord their knowledge of the quirks over "lesser" developers who come to JS expecting it to act like a sane language. It took an entire industry about a decade just to learn how to tame it. Sure, JS turned out to be really extensible to new paradigms, but hey, so is the lambda calculus.

A good language makes good programming look natural. Like Python. JS is the opposite.

<comment><USER3> The worst one for me with JavaScript lately is trying to build some form of object orientation into my code. There's no canonical way to even implement a constructor, for christ's sake. I haven't even dared to touch trying to use it for polymorphism. Or composition, for that matter. I'm staying the hell away from it for anything simpler than UI code.

If JavaScript was a nicer language I would be spending more time in Node.JS, but it's not, so I'm sticking with Rails.

<comment><USER4> I actually don't mind this problem much, although that might be my "functional programming" bias.

You only _really_ need a "canonical" way to do things if you will be wanting to use features that depend on your classes being implemented in a predictable way. For example, class inheritance or implementing "super" method functionality.

> I haven't even dared to touch trying to use it for polymorphism.

Its not at hard as it sounds, since you have first class functions and closures. You can often handle functions directly instead of needing to create objects for everything.

</comment></comment></comment><comment><USER5> That doesn't change the fact that it has more flaws and idiosyncrasies than most other languages.

We use it because we must, not because we choose to.

<comment><USER6> Where I work, we chose it. Could have carried on using PHP, could have moved to $otherLanguage. We chose NodeJS.

<comment><USER5> When the alternative is something as stupid as PHP, sure. But there are much better languages out there that would entirely eclipse JavaScript, if it wasn't the only thing that can reasonably be used in browser.

<comment><USER7> And yet, nodejs is a perfectly reasonable choice for web development for many.

<comment><USER6> Exactly. The claim was "We use it because we must, not because we choose to." This is not true because even in environments where we need not, some of us still choose JS.

</comment></comment></comment></comment></comment><comment><USER8> The biggest problem I have with JS is the multitude of libraries you need in order to make it usable.

These libraries all seem to use and encourage different patterns and trying to use 2 together often leads to confusion.

Switching to a project that uses something different, say prototype instead of jQuery feels like learning from scratch again.

<comment><USER3> To be fair, I've found many, many projects use underscore for their go-to 'utility' library and it's pretty decent and readable. What other libraries have you seen as dependencies that cause clashes?

<comment><USER8> Not so much clashes, just documentation and examples tend to use often radically different coding styles.

</comment></comment></comment><comment><USER9> Devs: you should make JS your primary language. It's a complete wild west right now -- still lacking so much as a package manager for the browser -- but meanwhile, the entire internet is moving into a rich client architecture. Tools like Backbone, while useful, are very clearly not the platform we'll be using in a few years. It's a phenomenal opportunity to do meaningful work and be in very high demand.

Self promotion: I believe the above so firmly I went out and started a school for JS devs, Hack Reactor (formerly Catalyst). <http://hackreactor.com>

<comment><AUTHOR> I totally agree with you except that I still stay with the combination Python and JS (actually like the author). But there's no way to avoid JS so why not better embrace it.

@hackreactor: nice! @packagemanager Yeoman (<http://yeoman.io/>) does something like this and a couple of other solutions, too.

</comment></comment><comment><USER10> _There are only two kinds of programming languages: those people always bitch about and those nobody uses. - Bjarne Stroustrup_

On the other hand, this was said by the creator of C++ and correlation doesn't imply causality; maybe some of the factors that contribute to a language becoming mainstream also cause irritation.

<comment><USER11> It's funny because C++ is used a lot and everyone bitches about it.

</comment></comment><comment><USER12> Great post, it's just annoying to hear people ranting about JS over and over again. The most annoying fact is, most of these people don't know how to write anything useful in JS besides copy&pasting a few lines a jQuery code. (I have doubts whether it's possible with this knowledge to understand how modern webapps are working.)

In the recent time I've often read posts about people suggesting: learn language X to a reasonable proficiency before you criticize.

<comment><USER13> In my experience, those who criticize JavaScript the most have often used it for many years, and know it extremely well.

These people also usually have many years of experience with other, far more sensible programming languages, too. I'm not talking about PHP or Ruby, either. Rather, these people know one or more of languages like C, C++, Objective-C, Java, C#, Haskell, Erlang, OCaml, Standard ML or Python inside and out.

With such knowledge, it becomes very obvious just how bad JavaScript is. The utter stupidity of many of its flaws becomes so apparent. These people also can see how it lacks the language features necessary for large-scale, multi- developer, distributed development, and then the subsequent maintenance of such projects. They've felt the pain of its numerous other problems time and time again.

I'd say the reality is much the opposite to what you describe. The ones who advocate JavaScript most often have never used anything else. They don't realize how many of JavaScript's inherent problems, or "quirks" as they like to call them, just don't exist in most other programming languages. If they have used another language, it's usually PHP, which is arguably worse than JavaScript in many ways. While living in this bubble of ignorance, they don't see JavaScript's flaws for what they truly are.

<comment><USER7> I notice you said all that without explicitly naming a single flaw.

<comment><USER13> Are JavaScript's many flaws truly not glaringly obvious to you?

<comment><USER7> No.

<comment><USER13> I'm truly sorry to hear that. Have you ever used any other programming language?

</comment></comment></comment></comment></comment></comment><comment><USER14> I think the biggest problem is that there are many many bad tutorials/book about javascript and only a few good once.

Often people wane code javascript like language X but javascript isen't language X! You must learn it like every other language! But if often see people doing javascript "when they need it". Nobody writes C just cause they need it... Normally people just sit down and read a book about C.

<comment><USER13> The "best" JavaScript-related book, as chosen by the community at large, is generally considered to be "JavaScript: The Good Parts", by Crockford.

While the most widely respected books for other programming languages teach one how to use such languages' features effectively, "JavaScript: The Good Parts" basically says not to use large parts of JavaScript.

That alone should show just how poor of a language it is. You don't have to ignore, or actively not use, so much core functionality when using a good programming language.

<comment><AUTHOR> Also there is this resource, and the first sentence says it all: <http://bonsaiden.github.com/JavaScript-Garden/>

</comment></comment></comment><comment><USER15> This sounds awfully familiar, if you replace JavaScript with Fortran and Web with number crunching. And I didn't buy it back then.

</comment><comment><USER16> The reason people use JavaScript for scripting in the browser is because there is no other option. The biggest reason I see to use it outside the browser is because you're already using it inside the browser. There are plenty of things to dislike about JS, but the ability to use it both in and out of the browser is a pretty big upside.

</comment><comment><USER17> Nothing is deeply wrong with it as long as it stays inside a browser.)

<comment><USER18> Too late.

</comment></comment><comment><USER19> "The first time, to hate it. The second time, to start appreciating it. The third time, to understand it and get shit actually done."

Not unlike the process of becoming addicted to heroin.</comment>


Ask HN: Has anyone worked with the education industry? - <AUTHOR>

I'm interested in building an app catered to students and professors at universities.
Apps like Blackboard have a seemingly strong hold on certain patents and contracts, but rather than dismissing the market all together, I was wondering if anyone could share their experiences if they've had any.
The app would ideally have a contractual relationship with schools (similar to Blackboard) but would not be a direct competitor.
In my mind these are the potential routes in:
1) Start at the top: Try to get conversations going with people in charge, have a small group test-drive the app, and hopefully arrive at a contract.
2) Start in the middle... through professors: get them interested in the app, then bridge connections to get a contract going.
3) From the bottom... go through students, offer it for free. Generate enough buzz so that the school would take notice and would be interested in a university version of the app.
thanks! <comment><USER2> I worked at Stanford, UC-Berkeley, UW-Madison (across UW-System) on enterprise student systems. Typically, professors have little say on the technology that gets used in the schools. It is mostly the IT department that makes most of the calls. Easiest would be to get someone at the top interested. You can email me (in profile) and if I like the idea, I can put you in touch with the CIO at one of the universities that I had worked at before.

Be warned that the sales process is pretty long at universities (especially the public ones) and everything has to go through an RFP.

</comment><comment><USER3> I find your question interesting, and I am a math professor, but I have no idea of what you're building, so I can't really answer.

That said, I second sunkan's answer.

</comment><comment><USER4> You should probably connect with the team at LearnBoost. They've had great traction building a product that serves K-12.

<comment><AUTHOR> thanks! i'll try to get in touch with them.

</comment></comment><comment><USER5> I'm wondering, along these lines, whether or not they shun SaaS products and have to host the code on their own servers.</comment>


The Logaf Scale - <AUTHOR> https://blog.danlew.net/2020/04/15/the-logaf-scale/ <comment><USER2> hey Dan, it sounds a very cool idea. I might give it a try. This could reduce/minimize bikeshedding too. Just out of curiosity, How are you leveling your LOGAF on PRs per comment/suggestion? Emojis, Writing the LOGAF level as part of the comment? Thanks :)</comment>


Morgan Stanley Marks Down Its Stake in Palantir, Dropbox - <AUTHOR> http://fortune.com/2016/02/26/morgan-stanley-palantir/ <comment><USER2> I recently sense a certain desperation from the large big money funded start- ups. In the last two weeks, I have received $150 in free rides from Lyft and $50 in free food from Sprig. I have been a Lyft user since 2013, and a Sprig user since 2014, using them less and less, but I have never received such a generous credit before.

<comment><USER3> How have you received these promos? I'd like to use them too :)

<comment><USER2> I used Sprig a lot in the end of 2014 when I had to say at the office late due to DDoS attacks, but I have no use for it otherwise. I received a poorly penned up email from a recent Berkeley MBA graduate, working for Sprig. It asked to give Sprig another chance and offered the first $20 credit. I used up that credit on basically a single lunch $13+ tax +$2.75 delivery fee. Then suddenly I received a push notification with another $20 credit the next day! Then since I liked that game I invited my dev phone to Sprig and got another $10...

With Lyft, I actually received $150 in credit total. I picked a coupon for $50 at SoMa food park. Then I received $50 credit for my 5 star rating, and then suddenly my dev phone also received the same $50 credit since it had a dormant Lyft account that I only used in 2014: apparently it had a perfect 5 star rating too.

<comment><USER4> Violating the limit 1 per customer policy is stealing.

EDIT: I wasn't going to engage but with this many downvotes I feel obligated to explain myself. Like I commented below, I'm not trying to tell you how to act. I merely wanted to point out that just because it's easy doesn't make it not wrong. As a group of people who actually run their own companies I would expect us to know better.

<comment><USER5> Is it stealing if the company _gives_ you the coupons? They could have detected that his account already benefited from a 50$ rebate, no?

<comment><USER4> Look, I'm not the ethical police or anything, but I think it clearly is.

<comment><USER2> I had a second phone with an _existing dormant_ Lyft account that I have used in the past, and I _involuntarily_ received a promotion on that phone, in addition to my active phone. Both phones were configured with the same payment method by the way, same name, same card. How is this stealing?

With Sprig, I invited my second dev phone as an experiment, but I have never used the remaining credit- I simply have very little use for their service. And I can prove that. How is that stealing? I think you should be careful laying anonymous accusations.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I'm not 100% sure this is what's happening, but thought I'd share my experience: I used to work at a hedge fund that sometimes held stakes in private companies. Every year, we would have to mark the stakes to market. However, we could not do the valuation ourselves; the valuation was done by 3rd party auditors. And these 3rd party auditors usually have no idea what they are doing. Even if they are Big 4 auditors and the stakes are large :/

<comment><USER7> Why would a hedge fund hire auditors who don't have any idea what they are doing?

<comment><USER8> Welcome to the world of auditing. You hire an auditing company that knows a lot, and they send you their newbies.

<comment><USER9> And you manipulate them by hiring the same auditing firm for consulting and ramp up the pressure when it comes time for them to give an unqualified opinion. Those newbies and the audit partner will be crushed by the avarice of the other partners selling consulting services. Work they would not get if they were not the audit firm.

Whether it's legal or not it is corruption and makes a good case for regulation. If you audit a firm, the audit firm and its related entities cannot sell anything else to that firm and its related entities.

Is it likely? Well who would lobby for it? Who would lobby against it? How much are they willing to spend. Democracy.

</comment></comment></comment></comment><comment><USER10> A few takeaways:

\- Morgan owns a small percentage of Palantir, maybe 20 basic points. However, this is big as Morgan and the big i-banks still have a lot of influence on the big money funds. This will scare the LPs off and VC funding will dry up.

\- In my opinion, Palantir is still too expensive at ~15B valuation. I mean how can it be more expensive than both Tableau, Splunk and Hortonworks combined in the public market?

\- Dropbox seems to be hit the hardest when T. Rowe Price marked it down to just 5B valuation. Still a great outcome if they can exit at the price point, but it sucks for the late investors and recent employees.

<comment><USER11> Palantir pulled in about 1b in revenue last year. Splunk 500m, and tableu and hortonworks less than 40m each.

No idea on profit margins here... But it would be surprising if palantir was NOT worth more than these three

<comment><USER12> Not sure where you're getting those numbers. Tableau is pulling in well over $600M in revenue, and Hortonworks is over $100M, according to their public financials.

<comment><USER11> Thanks for that. Was using my phone at the time, took the first result from google. Clearly quite old stats. Even the palentir number was from 2014 it looks like. Here's an upvote for the correction.

</comment></comment></comment></comment><comment><USER13> How much of Morgan Stanley's business is from Primerica, the deceptive MLM company? Primerica bought Smith Barney in 1987 whicu used egregious marketing tactics to build its business. Then Morgan eventually bought them.

If anything, I'd downgrade Morgan Stanley's stock. They were recently fined $3.2 billion for crimes causing the financial crisis. That news broke 1-2 days after Morgan dropped nearly 7%.

</comment><comment><USER14> No surprise here. As with a lot of these multi-billion dollar valuations there really wasn't a lot supporting the valuations apart from hype and promises of future growth and solid finances. Now that those things aren't panning out there's nowhere to go but down.

</comment><comment><USER15> Sorry if this is off the topic of Palantir's and Dropbox's diminishing valuations:

I would like to see pushback by consumers against very large Internet companies and corporations in general. Even though some businesses need to be large for economy of scale, I think of non-local businesses as parasites. When local goods and services are not directly exchanged then some remote business entity is sucking off profit.

It seems like huge valuations are all part of a rigged game in much the same way as the military industrial complex and mega sized corporations are rigged games. Except for pushing back as a consumer to prefer smaller and local businesses, I am not sure what else to do.

<comment><USER16> Why is smaller and local inherently better? In many cases, small and local means less selection, higher prices, and more waste (duplicative inventory, supply chain operations, management, and line staff)

<comment><USER17> In the context that the large corporations are a net negative for members of the local economy on average at least (wages, jobs). When said economy no longer becomes justifies the operating cost, the large company leaves and those left behind have few options on how the fill the void. <insert Walmart under-cutting small biz example here>

</comment></comment></comment><comment><USER18> What happens after these markdowns to the employees hired in the last 12 months? Presumably their options are now underwater and they have little reason to stay anymore. Will these markdowns lead to a sizable exodus from the companies?

<comment><USER19> Some companies decide to reprice the options and/or grant more options to help with retention. Also companies with high valuation and closer to an exit give out RSUs (so strike price 0).

<comment><USER20> And also - the price that employees pay for stock options is the common share price which is appreciably different (2x - 20x) from the preferred price. The preferred share price is what the investors paid, and it is that higher valuation the ms is writing down. There's a much longer drop before employee share are underwater in a pre-public company.

<comment><USER21> Yes and no. Sure on purely the face of it there is a much bigger gap before they're underwater, but that's because the preferred shares carry some nice benefits: preference, multipliers and possibly some control of the company. Marking down the value of the preferred shares implies that those benefits aren't worth what they paid a premium for, which means that common shares are also less likely to be worth anything, since they generally get paid out only if the preferred shares are converted or if there is money left over after preferred shares get paid off.</comment></comment></comment></comment>


Mixpanel went down, so we're open sourcing a better pure Python memcache client - <AUTHOR> http://code.mixpanel.com/2012/07/16/we-went-down-so-we-wrote-a-better-pure-python-memcache-client/ <comment><USER2> > Because we use eventlet, we need a pure python memcache client so that > eventlet can patch the socket operations to be non-blocking.

Not true. ultramemcache (<https://github.com/esnme/ultramemcache>) is an example of a c++ memcached client that is friendly to gevent's monkeypatching. It does this by importing the socket library via the python runtime ([https://github.com/esnme/ultramemcache/blob/master/python/um...](https://github.com/esnme/ultramemcache/blob/master/python/umemcache.cpp)), rather than using a native construct.

My experience is with gevent, but I suspect that eventlet's monkeypatching is similar to gevent.

<comment><USER3> pylibmc may be fine, as well.

</comment></comment><comment><USER4> Yet again, instead of trying to fix the existing, someone writes yet another library.

<comment><USER5> This was my thought, too: there seems to be a limit beyond which memcached simply breaks. I learned this 5 years ago, and it had nothing to do with Python.

</comment></comment><comment><USER6> This is the type of response that makes me a happy Mixpanel user. Hit a snag; fix it, talk about it, open source it.

</comment><comment><USER7> Perhaps it could be named better; all the python memcache clients have almost identical names.

</comment><comment><USER8> You might want to set TCP_NODELAY on the socket to disable Nagle's algorithm (<http://en.wikipedia.org/wiki/Nagles_algorithm>). We ran into some issues with memcached where if Nagle's algorithm was not turned of, GETs would often take several milliseconds longer than was necessary.

</comment><comment><USER9> "It turns out that socket operations that fail in python-memcached don't return an error or raise any exceptions."

...Whats surprising is that this went untested for so long.

<comment><USER10> We've been very well aware of it and safely worked around it at the time. It was also something we just disliked and so we changed it across our entire codebase when we decided to write our own library.

When we said "it turns out", we didn't mean that we had suddenly learned that after failure. It's just something we meant to note that we decided to fix.

</comment></comment><comment><USER11> I would argue that python-memcached has been replaced as "the de-facto standard" by pylibmc. I'm not sure if pylibmc works with eventlet or not.

Companies open sourcing code is always good. But, I would be surprised if there wasn't already a python memcached client that would suit your needs.

<comment><USER12> I've been unable to compile pylibmc Centos 5.

</comment></comment><comment><USER13> > We enforce the calling convention with code in our library that looks like > this:

if not isinstance(val, str): raise ValidationException('value must be str', val)

I love Python, but the more I used it the more I come to see dynamic typing as a mistake. On large projects with shared library code and deeply nested calls, one of the most pervasive problems seems to be wrongly typed data. And building validation exceptions into all of your code seems like a poor solution.

<comment><USER14> They could have implemented it using a simple decorator for non var-args methods which personally I think is more attractive.

Obviously you still pay the cost at run-time but at least the actual source looks more sensible that way.

</comment></comment><comment><USER15> I'm confused, why would a cache being down cause data loss?

Two months is also not battle tested, perhaps the terminology used here needs to be adjusted...

<comment><USER16> > Calling .get() on a dead server returns None on failure, the same thing that > is returned when there's no value.

I suppose they were doing a .get() to check if the server was still up, and assuming None meant "there are no values to get, but the server is up". If .set() works in the same way (silently failing) they were essentially using /dev/null as their task queue. :)

<comment><USER17> Yeah. It's a cache, it says so in the name. Why would you make not-a-cache on a cache protocol and library? In-sane.</comment></comment></comment>