Quora vs. StackExchange: Why, Joel, Why? - <AUTHOR> http://techcrunch.com/2011/02/20/quora-vs-stackexchange/ <comment><USER2> _let people log in with Twitter and Facebook, to make StackExchange reputations easily exportable to other platforms._

StackOverflow should change _absolutely nothing_ about their login process. It is perfect. I anonymously answered one question, and all of a sudden I have a profile. No confirmation e-mail, no Facebook or Twitter crap. Just use the site and bam! you're registered. It remembers me every time I come back and it makes _absolutely no fucking attempt to worm its way into my social graph_.

<comment><USER3> _StackOverflow should change absolutely nothing about their login process. It is perfect_

Maybe it works for you, but I'm still utterly confused about how to login. But hey, I only have about 25 years of coding and online experience.

To be fair, it's not SO's fault.

<comment><USER4> I can see why a non tech-savvy user would be confused by OpenID but I it surprises me how many programmers are confused by it.

On the login page they list a bunch of common providers you can login with if you already have an account with them: Google, Yahoo, AOL, Facebook, etc. Click their icon, type in your credentials.

If you don't have an account with one of those or don't wish to use them then it has a big register link to sign up with a myOpenID account.

<comment><USER5> You're making the same mistake as people who try to get programmers to fix their printer because programmers are "computer people." Competence with one technology does not confer instant familiarity with another — and however clear you might find OpenID, just the array of company logos alone is kind of overwhelming and highly unusual. Pretty much the opposite of "Don't make me think."

<comment><USER6> To a certain extent, security will always have to make the user think. There's simply no way around that without complete service dictation.

<comment><USER5> Yes, but Stack Overflow's signup screen takes more thinking than most sites (by virtue of being different, not to mention its complexity). Amazon's signup is far simpler and it does not seem to be terribly insecure.

<comment><USER6> Actually if you have an older Amazon account it was shown to be pretty terribly insecure.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I briefly liked Quora (partly because its the first site I've seen that serves up minified HTML). Now I find it boring, insular, and full of group think. Much like this article. And the valley. The concept that some non-valley site, that doesn't have all the cool kids behind it, might actually be successful is just not allowed within the techcrunch world-view.

<comment><USER8> You're a little harsher than I would be but you make a good point. The problem with online reputation on this type of system is most people won't verify the answers before they upvote them. At the same time an insular community creates a competition for status. So you get people who try to find and answer questions as quickly as possible regardless of whether the answer is right or not.

As someone who goes to Stack Overflow regularly I see this situation all the time. It goes like this...

1\. Person asks a question (e.g. "I need to build a service that will serve school districts in Los Angeles County. How do I go about doing that?")

2\. Someone comes along and answers the question with something that seems right (e.g. "Here are a bunch of links on building REST services...")

3\. That answer gets upvoted and the answerer gets his reputation boosted

4\. Later someone comes along with the right answer (e.g. LA Unified requires all services to be WSDL discoverable so you need to look at SOAP"). But it's too late because the question's already scrolled into the abyss.

So the guy who gave the wrong answer gets a better reputation and the guy who got the right one gets nothing (and the person who asked the question likely took the upvoted answer and didn't check back so they waist untold hours on the wrong thing)

<comment><USER9> I think your description of the problem is about right.

But: As a SO-consumer this particular problem doesn't phase me.

The better answers usually have more votes and sometimes the green checkmark is even on the best one - but when it's not, who cares?

To me as a SO-consumer a bigger problem recently has been the duplication. For any given question there may be dozens of threads which makes it harder to track down the good one(s). If SO wants to improve they should imho work on their deduplication efforts.

This might even be automatable to a point; let users vote on questions to be merged, and perform the merge when either the author agrees or a vote- threshold is met.

<comment><USER10> It's faze. Read more books.

<comment><USER9> It's also phase. Get out more.

<http://www.urbandictionary.com/define.php?term=phase>

<comment><USER10> Wow, urban dictionary. Consider me schooled.

</comment></comment></comment></comment></comment></comment><comment><USER11> "they ought to clean up their very Web 1.0 UX"

SO has one of the best UX on the web. I don't care if you call it Web 1.0, 2.0 or Blue Oranges 35, but don't clean it.

And also - "clean up by letting people log in with Twitter and Facebook"? How do you clean up by adding stuff?

<comment><USER12> The same people who say SO has "a poor UX" are the same people who say that Reddit has "a poor UX". They're conflating gradients, rounded rectangles and text shadows with a user's experience of the site.

<comment><USER13> Not so. As I commented earlier[1], SO's data/ink ratio sucks compared to YC.

1- <http://news.ycombinator.com/item?id=305304>

<comment><USER14> the use case is rather different, though: Hacker News is a list of articles other people have written with discussion and commentary. Stack Overflow is a list of questions from your peers with potential answers. (Also, that's a really old screenshot)

</comment></comment></comment></comment><comment><USER15> Actually, I think StackExchange is doing just fine.

Going for the vertical communities (which have some overlap, no doubt) is a very clever strategy - _it works_.

Pray tell exactly what Quora is achieving with its strategy. Right now it looks like an over-hyped version of _Stack Exchange - Startups_.

</comment><comment><USER16> If reputation is that important, then StackExchange's partition strategy is actually very effective. If you want to find good coders you go to StackOverflow. If you're looking for good photographers, you go to SE's photography site. There's no need for a centralized reputation hub. The reputation of a great coder on StackOverflow can't be diminished as a result of the creation of some new SE's long tail site.

But I doubt online reputation is that important. The reason I visit StackOverflow is to find answers to programming questions, not to look for experts. As for the experts, they don't need high karma on some Q&A site to get job offers.

</comment><comment><USER17> The strategy StackExchange is following is textbook. In fact, here it is: [http://www.amazon.co.uk/Crossing-Chasm-Disruptive- Mainstream...](http://www.amazon.co.uk/Crossing-Chasm-Disruptive-Mainstream- Essentials/dp/0060517123)

The network effect and the quality of contributors is everything. Start in an entirely new field and you'll end up with the blind leading the blind, and the quality and reputation of the site will plummet. Just take a look at That Other Q&A Site.

For a new field, the site needs enthusiastic _and_ highly competent contributors; otherwise it will fail.

</comment><comment><USER18> StackOverflow is definitely more important right now.

But one thing I think they're messing up is the process for launching new StackExchange sites. They're trying this thing to qualify new sites to ensure they have critical mass, but I think it's too restrictive and hurting their growth.

As an example, I "pledged" to contribute to the AI stack exchange site if it were to launch. When it launched as a trial it received maybe 100 questions and some good answers in the first few weeks. I got answers to all my questions - good ones which pointed me toward research I hadn't found in Google etc.

But a week later it had been shut down and they emailed everyone saying it didn't meet minimum activity thresholds. Those questions and answers are no longer available on the net.

The question is whether a StackExchange site with relatively small activity is still useful. I think it is - at least it's more useful than not having them at all. Who is to say a small site couldn't become much bigger over time.

Reddit has done well letting users create any subreddit they want. There is a diverse ecosystem of subreddits out there with varying levels of activity. Keeping the long tail of subreddits around to see which flourish doesn't seem to hurt anything - so I don't understand the StackExchange approach to this.

(It reminds me of Wikipedia deleting obscure pages also - what does it hurt to have them?)

<comment><USER19> So you base that Stack Exchange has failed on one out of the two failed sites, out of over forty proposals that are still there?

As has already been mentioned elsewhere, if the site lacks genuine expertise of the topic, the blind will simply follow the other blind. Putting a site that doesn't work out of it's misery is doing the users a favor in the long run

<comment><USER20> I'm not sure that raw activity level is a good proxy for the amnount of genuine expertise in the topic that is present.

Some topics - of which AI is quite possibly one - are simply more niche than others, and therefore naturally will have less askers, less answerers and less experts.

Perhaps a better metric than raw activity level would be proportion of questions without an accepted answer? The tumbleweed sites that "don't work" would be characterised by many unanswered questions.

</comment></comment></comment><comment><USER21> I never understood this 'There can be only one' attitude. I'm fine with thousands of these sites existing. There doesn't have to be 1 that's better than all the rest, and I don't have to spend every waking moment finding it, or making sure I'm already using it.

Sites also don't have to be 'important' for them to matter to people.

<comment><USER22> My guess is that we're seeing the results of the tech blogger echo chamber. These self proclaimed experts need methods to legitimize their existence and quantify their awesomeness. What better way than a big fat number on the one end-all-be-all site? See also: Scoble was biggest contributor on Quora.

Of course, it's all ridiculous (for now). Most people in the real world have better things to do than troll around on Q&A sites hoping for karma. Until someone figures out how to convert karma into a competitive paycheck, this is all nonsense.

<comment><USER23> I'd be hesitant to hire someone that had huge karma on any site (including HN), unless they had real projects to show that their passions include shipping rather than just talking real pretty about it on the Internet.

Someone can be clever and knowledgeable, and still be a poor employee or co- founder. (And, my least productive times are often when I'm most interested in what's happening on reddit/HN/etc.)

<comment><USER24> Decently large karma means there would be a lot of comments to browse through though which can give you an idea about the person. To a point be knowledgeable on startups and the tech scene is an advantage but yeah there is a point where time is better spend getting something done.

<comment><USER23> My comment should be taken with the knowledge that I have pretty big karma at both reddit and HN (and StackExchange, though I've never browsed or considered signing up for quora). Obviously, I like to think I'm a pretty useful person to have around in a company. So, my comment is definitely one of balance rather than "don't hire people who talk a lot on the Internet".

</comment></comment></comment></comment></comment><comment><USER25> The point he is making is that stackoverflow is important because

1\. It is useful at work

2\. It is useful for getting work

He dimisses the possibility that people asking questions about photography might not be photographers doing it for a living ( _and a hodgepodge of sites focused on photography, mathematics, Apple, video games, board games, role- playing games, and science fiction. Interesting? Sure. Important? Hell, no._ )

Besides who can be more obsesses about scores than gamers?

<comment><USER2> Mathoverflow is awesome. I don't know if the stack exchange guys run it (it certainly uses their software), but it is already professionally relevant for practicing mathematicians.

<comment><USER26> I believe he is referring to Math StackExchange (math.stackexchange.com), a site which was created to serve as a MathOverflow-equivalent for mathematics students or others who aren't professional mathematicians. I've found Math StackExchange to be highly useful, and the quality of the answers you get is higher than anywhere else.

<comment><USER27> But there is also <http://mathoverflow.net/>

Here's a meta question asking about the differences between the two sites:

[http://meta.math.stackexchange.com/questions/41/differences-...](http://meta.math.stackexchange.com/questions/41/differences- between-mathoverflow-and-math-stackexchange)

</comment></comment></comment></comment><comment><USER28> I was actually thinking about a startup idea around this general theme. I'm going to share it with Hacker News, tell me what you think.

I do not think reputation should be owned by a single site because unlike social networking, there are going to be lots of places to contribute to your online presence.

Yes, stack overflow is important when trying to hire a programmer, but I have also looked at blogs, twitter, github projects, etc.

What really needs to happen is for a startup to create a way to aggregate activity online into a central location to disseminate to the world. Blogging made sense as a means to communicate an idea in 2001, but 10 years later, this needs to change. The internet is shifting heavily towards one that is more focused on communities and the interactions in that community are what are most reflective of an internet identity/reputation.

Just think about your own lives. Yes, sometimes you have one off ideas that you would love to blog and tweet about. That's great, you should keep doing that. But I bet you are also dropping bombs of wisdom on various sites like Quora, Hacker News and Stack Overflow that you wish you could share with more people and keep in a more permanent place.

There needs to be a central place to disseminante the highlights of an online presence. And that site should own the online reputation.

<comment><USER29> This has been tried in several eras; there was an initiative 'OpenPrivacy' (folding around 2002) that wanted a standard for portable profiles and reputations, and this also seemed to me the original focus of RapLeaf.

More recently, about.me (acquired by AOL) and flavors.me have tackled one portion of this, the user-controlled aggregation of their multiple presences. There may still be prospects for a new service, though the resistance of existing reputation silos could be a problem.

<comment><USER28> These are not addressing the same problem, which is that we're shifting from a stand alone idea sharing platform model to a community idea sharing platform model that needs consolidation from the inherent fragmentation of the ecosystem (Quora, Hacker News, etc.)

I think those are all trying to tackle a subtle difference than what I am talking about. About.me and Flavors.me is more so about one off content creation and status profile sites (blogs, twitter, linkedin, facebook).

What I'm saying is that things like Quora, Hacker News, are now becoming the preferred medium to share ideas as opposed to standalone sites. Many Quora answers are essentially blog posts.

</comment></comment></comment><comment><USER30> I think Joel and Jeff touched on the issues discussed in the article in their podcasts.

And Jeff always proclaimed that the purpose of the site is a very pragmatic one. To be a source of help for the specific professional community. Not a place to meet your buddies and hang out.

And there's a place for both. Personally, I like that StackOverflow stays away from too much social interaction and focuses on providing valuable technical content.

</comment><comment><USER31> Dumb question: I went to <http://www.quora.com> and it's asking me to sign up. I know that the actual questions and answers are publicly viewable but is there any obvious way to get to them from the home page?

<comment><USER32> Click one of the links down the bottom, the other pages have their infamous search/ask/etc input.

<comment><USER31> You're right, thanks.

I'm giving my nod (for whatever that's worth) to the Stack* sites for putting questions _right on the home page_

<comment><USER33> I agree, Quora has a pretty bad first-time user experience.

<comment><USER34> Totally. StackExchange sites welcome you with a display of their goods as soon as you approach the front of house, but having just headed over to Quora for the first time ever, I felt like I had been chased up a blind alley and couldn't find a doorway. I managed to sneak in through a crack in the fence (by going to another page as suggested in this thread, but the site front end seems to be designed to put off visitors.

</comment></comment></comment></comment></comment><comment><USER35> <http://stackoverflow.com/> is easy to browse without having to login.

<http://quora.com/> puts up a wall.

<comment><USER36> Furthermore, when you create an account with Quora, it begs and pleads with you to give it all your personal information in your Facebook account. Not just "What is your token ID?" or even "Who are your friends?", no! Everything about you!

But what takes the cake is the history tracking that Quora uses. It suggests topics that interest me. Like both Barnes and Noble and Borders... from an article I read on HN yesterday. Blatantly telling your users that you're spying on their activity is a _great_ way to endear them to your service.

<comment><USER37> Yea I complained about this before. It's not clear at all what your facebook data will be used for. In fact I'm going to go delete my Quora account right now, I didn't realize just how much data they can get from me!

</comment></comment></comment><comment><USER38> I think online reputations work and matter a lot in Silicon Valley and the startup world, but anywhere else, not that much.

Also, the attack on the "other" SE sites is lame. I regularly visit and am active on the Physics SE, and Quora's got nothing on it.

<comment><USER39> Agreed. The author: _a hodgepodge of sites focused on photography, mathematics, Apple, video games, board games, role-playing games, and science fiction. Interesting? Sure. Important? Hell, no._

All these "other" SE sites are built around the things that real people are passionate about. That stuff is quite important!

</comment></comment><comment><USER40> I strongly disagree with the common conception that high points on StackOverflow would be a good measure of coder's quality. They are merely the measure of someone's involvement in answering the questions.

Sadly, many answerers are just point hunters. They seem to monitor questions and quickly google for answers. I observed this asking specific detailed questions. Most answers were something obvious, something without accordance to the details of the question, or just blind guesses. People are just putting answers in the hope they will earn at least an upvote!! It's not only stupid, but i guess it's a massive abuse of the original idea behind this site.

Add the fact that most points are earned by people answering questions about C#/.NET. It's related to the fact that this platform somehow has masses of mediocre programmers, or even people suddenly put in the role of programmers. They go asking tons of questions while they should rather RTFM or polish their skills by coding. No wonder that a mass of questions generates a mass of answers. So the whole stack exchange idea of points is about quantity, not quality.

<comment><USER41> Agreed. I'm somewhere around the top 40 on HN but it would be absurd to say I'm even near the top 100 hackers or entrepreneurs around here. I just know how, when and what to say more than many of the folks actually getting on with their work ;-)

</comment></comment><comment><USER42> This cannot be stated often enough: SO reputation is worthless for assessing fitness for hire.

Lots of short, google-able answers to trivial questions will get you much more points than thoughtful answers to hard questions.

SO can be useful for preliminary screening, but only if you look at the actual answers.

<comment><USER43> Like with other aspects of hiring (IQ Tests, Programming Tests, Writing Tests, Interviews, GPA's, Uni Results) they should be a facet in making the final decision.

The way I see it there are two main ways to use someone's Stack Exchange reputation.

First just using the fact that they have an account and reputation, in finding out how involved and engaged they are with the community.

Secondly drilling down into the questions they've asked, and the answers provided to get a better understanding of someone's strengths and weaknesses, and seeing where their expertise lies.

Also at the end if there's no other way to make a decision between two people, one can just take the person with the higher reputation score.

</comment></comment><comment><USER44> Quite an annoying article - creating conflict for the sake of it?

StackExchange and Quora are only very superficially similar. StackExchange is very specifically about asking questions that have definitive answers, and getting those answers.

Quora is a question-based social network discussion site.

Not the same thing at all.

</comment><comment><USER45> I also find the Stackexchange sites generally give me more relevant answers faster. The advantage of having a beta time where a core group users get to explicitly state their interest perhaps?

</comment><comment><USER46> I looked at the existing answers, and I don't think anyone made this point: SO and its spinoffs are an example of _do what you know_.

People can smell when someone not from their domain tries to make something for them - and it does not smell good. In order for the SO model to work, they need experts versed in the area to be the core of the community. There are two ways to do this: try to attract such people after creating the site, or let the site organically arise because it was created by such people.

</comment><comment><USER47> Meh, I hate the Quora UI. I'm too busy/lazy to find questions that interest me on it. Stackoverflow, on the other hand, is very quick and easy to navigate and has a very friendly UI.End result: I use stackoverflow regularly and have only ever viewed Quora maybe five times.

</comment><comment><USER48> I clicked this link expecting the usual TC love-in with Quora--and I got that --but I actually agree that the StackEchange model is flawed.

What works for programmers doesn't necessarily work for other groups (and vice versa). I will be shocked if any of these becomes a site as important in their respective field as SO.

As for Quora... Please for God's sake TechCrunch will you shut up about Quora. It's a Q&A site with a Facebook login that is liked by the Valley insiders-- and is thought important by the same--because the other Valley insiders use it.

Until it gets appeal beyond the Valley it's a storm in a teacup. What's more I'll go out on a limb and say _Quora will never get mass appeal_.

To the Quora founders: congratulations on the Emperor's new clothes. Sell up before the jog is up.

<comment><USER49> Quora has been successful at obtaining authoritative opinions - something that Google Knol failed to do because it grants an online reputation, instant readership and following to those that express their opinion, which seems to be important to such people. Furthermore, to me, it's like Ask HN and Hackerfollow on steroids. I still won't participate in it, but will read it like I read Wikipedia.

</comment></comment><comment><USER49> I really like question2answer.org - a LAMP self-hosted Q&A site. <http://www.question2answer.org/directory.php>, I set one up yesterday at <http://revboat.com> \- it reminds me of job board: <http://www.jobberbase.com>.

What question2answer needs is a plugin that calls upon the right users to come in and answer a question according to its tags and categories -- and ideally some shared session/domain login.

With Q&A, one should go out to where the action is happening, so decentralization is the key in this case.

</comment><comment><USER50> StackOverflow works beautifully - it's hit that "this just feels RIGHT" stage.

It's less clear right now that the StackExchange / Area51 model is working. The process of selecting topics, building support and getting going looks good on paper, but it looks as though it's lost a lot of momentum.

So the StackExchange team need to take seriously the issue that as things stand, the model of building out into new Q&A territories can't depend solely on people who are comfortable with SO (e.g. devs) and take that familiarity into another sphere (e.g. devs who also bake).

</comment><comment><USER51> The issue of "reputation" is really interesting and my guess is that will be more and more important in the future. It is already important in specialized communities where it makes sense to be an expert or a master or a ninja or you name it or gain karma points.

But I am not sure how important can it be in communities with many many users and without a well defined focus. He refers to a few metrics for the social component but it is not clear yet what a good and appealing "reputation metric" could be.

</comment><comment><USER52> I completely agree with this. I tried to get a product management site up and running ([http://area51.stackexchange.com/proposals/28281/product- mana...](http://area51.stackexchange.com/proposals/28281/product-management)), because I know the value I've gotten from the software development side. It is an impossible task that I've since given up on. My questions now go to Quora.

</comment><comment><USER53> SO is a very successfull Site without all the koolaid, wich is great. Hell, the even run everything on Windows... On HN you would probably get beaten to death when saying something like that.

<comment><USER54> Argh - fat fingers, ipad, morning - downvoted by mistake!

<comment><USER53> np ;)

</comment></comment></comment><comment><USER55> lol. , Quora needs lot of improvement to compete with stackoverflow. And both have different structures

</comment><comment><USER56> Stackoverflow has provided value to me. Quora just provides moments of lazy recreation, if any.

And who is pronouncing Twitter as the silver? None of my Fb contacts are even remotely aware of any of the apps I use, never mind have an account or a need to use them. With Twitter I usually find at least ten followrazzi for every new app/service I sign up for.

Twitter is business. Facebook is the ten dipshits and the nine-toed women I used to know.

</comment><comment><USER57> My impression thus far of StackOverflow - and I could certainly be wrong about this - is that the most reputation goes to those in the most popular technology boat. In other words, a high reputation says as much or more about _what_ you work on versus how 'good' you are.

I guess this is a fundamental problem with any metric that reflects popularity.

<comment><USER58> Reputation is, by and large, a measure of how time you spend on the site, much like an MMO. If you're interested in more popular technologies, you tend to have more questions to answer (and yes, more people read and upvote your answers).

</comment></comment><comment><USER10> The older I get the more transparent sites like techcrunch become. Shitty personal opinions are apparently worth a lot of money if you have the right audience.</comment>


An Unexpected Ass Kicking - <AUTHOR> http://joelrunyon.com/two3/an-unexpected-ass-kicking/

<comment><USER2> Please stop posting this story to Hacker News.

<comment><USER3> That's not entirely fair - this is the first time this user posted this story.

Anyway, the largest discussion is here: <http://news.ycombinator.com/item?id=4342790>

There are others.</comment></comment>


Ask HN: How do you come up with side projects? - <AUTHOR> I can use python, PHP, and nodejs, but I have been having a hard time coming up with project ideas. <comment><USER2> The answer for most developers, myself included, is that we don't.

Reading hacker news and r/programming makes it seem like everybody is out there putting 60 hours a week in at a tech giant or sufficiently trendy startup and then spending another 40 on cutting edge side projects.

The only side project I did in 2018 was to solve a very specific need I had. It was about 30 lines of poorly written python that I'll probably never go back and update because it works well enough, but I use it every day because it solved a real problem for me.

I guess my advice is to look for a problem and don't worry if you don't find anything. There is more too life than side projects.

If you're just looking for something to improve your skills or show off to potential employers, you should just clone something that already exists. I believe twitter clones, Reddit clones, and basic games (pong through super Mario bros) are common choices.

<comment><USER3> I absolutely love programming and I enjoy my job, but after spending 1/3 of my day on work, I am really not in the mood to do even more work.

As for 2018, I wrote a backup script. It works really well.

<comment><USER4> It's more like half a day. I wouldn't count sleep as part of your day.

Plus in your free half you have to do errands, cleaning, shower, meals. So the other half isn't really yours either.

</comment></comment></comment><comment><USER5> Project ideas come from real world problems.

Things like:

\- I cannot keep my pets form eating each others food so I'll create food bowls with covers that are only unlocked via RFID tags on the pets' collars.

\- It's a pain in the butt to keep track of these 30 different sources of information I use when preparing a report so I'll build API connectors to automatically suck in the data.

\- I'm constantly spending 5 hours a week doing X task which could be automated and I have 10 friends with this time suck as well.

Creating a project that you use yourself to solve a problem or save time has so many benefits:

\- you understand the problem

\- you can easily determine if your solution actually works by using it yourself

\- you kind of understand the consumer (one person isn't a good sample size)

\- you'll have personal incentive to keep working on it when things get tough

It's possible to come up with side project ideas that don't stem from problems you've experienced personally but you'll be facing an uphill battle. First, you'll have to research what the problem is and how it affects potential users. Then, you'll build something awful cause you really don't understand the problem. Then, you'll rebuild it again after getting feedback. You'll have to figure out how to test it since the problem doesn't occur in your life so you'll probably have to recruit other people to help out which can be very time consuming.

One major factor is this:

\- Don't be afraid to build 15 shitty side projects you throw out. Each one will teach you something and number 16 may be your next company. Almost no one strikes gold on the first try.

</comment><comment><USER6> Usually they just come to you or find you on their own.

You do keep an eye/ear out for them so you notice when opportunity knocks.

For me it is usually something I need or a client needs to automate, or something where a web app could do it better than how it's currently being done.

I keep a list of ideas/possible projects and then focus on creating the ones that are the most interesting have the most potential.

You have to watch out for shiny things, next thing you know you are jumping from one project to the next. Which is ok sometimes if you just want to learn something new or explore.

Usually you'll have one idea that has the most potential to be something that generates revenue so focus on that one if that's your goal till you determine if it's viable.

If you don't listen already you should check out StartUpsForTheRestOfuS.com, listen from episode 1 of their podcast in their archives.

</comment><comment><USER7> I've found that my projects split in two ways: (a) fun hobby vs. problem to solve and (b) don't monetize vs. monetize. Out of the 4 possible combinations there, I only take on (1) fun hobby projects that I don't intend to monetize and (2) problem to solve that I intend to monetize.

I try to avoid the other two because _fun hobby projects that I want to monetize_ are essentially solutions looking for a problem and _problems to solve but not monetize_ aren't as enjoyable as the (1) or (2).

So to answer your question: look at my hobbies to identify fun stuff that will enrich my experience or identify a problem then validate the need beyond myself.

</comment><comment><USER8> I have notebooks filled with ideas. When I think of something I write down as much info about it as I can. Later, perhaps I add more. Maybe I never touch that idea again.

Projects from social networking, a new kind of winter jacket, "adult flavored" applesauce, "simplified, simplified Chinese characters", how to reduce obesity in our youth so eventually maybe the problem goes away as adults, and so many more.

Taken just for you: [https://imgur.com/a/Seg0Pzx](https://imgur.com/a/Seg0Pzx)

<comment><AUTHOR> Thanks for the ideas

</comment></comment><comment><USER9> Ideally you would ask someone for something they need that you can do (Say an app for your barber friend to schedule haircuts for his clients. But in 2019 this probably was already solved by a funded company with 50 engineers. You can still do it though.)

Otherwise its always fun to automate something in your house/life. [http://reddit.com/r/diy](http://reddit.com/r/diy) is a good place for ideas.

</comment><comment><USER10> Like everyone has said, a side project is one that scratches an itch you have. Basically, what day-2-day functionality needs improving the most. And, do you have the capacity to improve it (or think you can)? From there, the side project is born.

My current side project stemmed from another side project actually.

I wanted to make (basically) an art version of Reddit, but much more robust. It would have cool apps that would make the artist's life much better. I had (and still do) a ton of idea on how to do that, so I started building. I've made many versions, but it still wasn't quite "right".

I have release it, but there was no traction (no should there be, its a crudely built website).

While building the latest version, the project became more and more robust. I had some cool components in it, one in particular and came to a fork in the road. Should I continue on with the Big project, or spin-off a component?

I chose the spin-off and thus my project Vidcap was born. I'm about a week away from releasing it after about a month of develoment. The goal would be to help people annotate their favorite videos to get more information out of it.

Will I ever go back to the other idea, artjutsu? Of course. Its still a passion of mine and something that I want to finish, but I think that Vidcap could be something that could help me achieve that goal (and help others) much more quickly.

If you'd like to take a look (before I post it on Show HN) be my guest - [http://artjustu.com/vidcap/index.html?q=4](http://artjustu.com/vidcap/index.html?q=4)

</comment><comment><USER11> Mostly i solve my own problems and than make them bit more generic and polish them so that they are useful to others as well. Some examples are

1\. Taxes: I have automated interest calculation,reconcilation of my accounts in different banks, calculation of ltcg/stcg in stocks as per my tax slab etc. Now every year i generate automated report and than spend sometime in reviewing before submitting it to tax authorities.

2.Organizing personal collection of movies/music: Finding the duplicates, making sure there is one copy, extracting thumbnails, downloading subtitles,trailers from youtube and movie info from imdb/wikipedia etc.

</comment><comment><USER12> I think that coming up with a good project idea is a hard task. Don't listen to people that claim they have so many ideas. Most of that ideas are probably bullshit, that's why they have so many of them.

In my opinion, it can take even a few weeks to come up with something that's even worthy of doing. You should be asking yourself what are the reasons not to do it first. Try to observe your life every day and see if there is something that drives you nuts or maybe something that makes you procrastinate. After that figure out the solution and go for it.

</comment><comment><USER13> Something you wish you had or a process for something you do in your personal or professional life that's long and tedious would be good places to start.

Is there something you do a lot that feels clunkier than it should be? Is there a way you could automate a chunk of it? Maybe other people would like that automated also.

Another thing is, what is some data you wish you had access to or could record easily that keeps track of useful things about your activities or your life, something that you can't think of (or quickly google) some good solution for online? That might be a direction to go in. Like, for example, on a lark I spent some time aggregating reviewers Top 10 Board Game lists in various categories, and it triggered an idea that maybe there could be some software that facilitates this sort of data aggregation for various top 10 lists. I haven't done anything with that (and probably won't), but it's an idea I had.

I mainly focus my brain on coming up with game ideas and story ideas, so those aren't necessarily trying to come up with some website or service I can sell. I either look for some sort of constraint (Can I come up with a game that only exists in 1 dimension? Can I come up with a game that only has one type of component? Can I come up with a game that only uses 9 cards? I've designed games for all three of these in the past two years), or just pretty much anything I absorb, I try to think if I could make a game or story out of it, especially if my brain goes "oh that's interesting!" for whatever reason.

I'll think about it for awhile, and try to run with whatever I come up with, at least up to the prototype phase, and then get the idea in front of people, and if people seem to dig it (or even if they don't, if they gave me some good feedback or I still feel there's gotta be something there if I can find it) I'll develop the idea further.

Sometimes me trying to fix a bad idea generates other ideas as well. I've tried to improve a particular game design twice, and the mechanical fixes I came up I realized would work better as different games where the focus was on that mechanism, and I've since prototyped those as well.

You could probably do something like that for side projects as well.

</comment><comment><USER14> Sometimes, side projects find me. When they don't, I don't particularly go looking for them.

That is, you're just going about your business, and an idea comes (or you keep running into a need, and figure out a way to address it), and you pretty much can't _not_ chase it. Now you have a side project, one you actually care about doing.

Don't do a side project just to do a side project. Do it because you really want to - almost because you have to.

</comment><comment><USER15> Don't start by thinking what languages you know. Most projects are not limited y language. Start by thinking about what problems you (or someone else) has.

<comment><USER16> To take that to an extreme, I just stopped using PERL to make everything I needed in 2018.

</comment></comment><comment><USER17> I basically look at something, wonder why the heck nobody has done it yet, then do it.

Some people do a side project just to learn a language. IIRC Workflowy was one of the results of that.

For the most part, it should be something that scratches at the back of your mind, not something you plan to make money off or build very well. It should be more about curiosity or frustration for the problem.

</comment><comment><USER18> Whenever an idea for something comes to your mind, write it down on a post it note, stick it somewhere you'll see it somewhere regularly (I put them on my desktop monitor + my desk), then forget about it. Maybe back up the idea to evernote or something, too, so you have a digital copy. Within a short amount of time you will have far more project ideas than you could complete.

</comment><comment><USER19> I've found it almost impossible to sit down and "come up with projects". I would look for a problem and try to solve it. Start broadly at first. You might run into something that seems like a block to solving the problem. Solve this block as your project idea; it's often a more grounded problem than the original pie-in-the-sky Big Problem.

</comment><comment><USER20> I don't really come up with ideas, they just appear day to day and if they seem interesting enough to me I try to jot them down. There is no shortage of great ideas out there so it just becomes a matter of picking the stuff I think sounds most interesting to me.

</comment><comment><USER21> I'm a game developer, so my "side projects" usually making small hobbyist games. New "ideas" usually involve "I'd like to explore this concept" sort of thing.

I think the ideas mostly comes from being interested in video games though, so I'd suggest maybe looking to other hobbies for insight.

</comment><comment><USER22> All of my projects come from my day job in a large industry which is behind the ball technically so lots of opportunities. Basically I write software that replaces my job. It will happen eventually, so why not be the one to large a series of SaaS to do it.

</comment><comment><USER23> Projects that don't make money: Find any need that you have as a developer, hack the solution and make it open source.

Projects that make money: Observe people around you (especially specialists of other domains) and figure out what tools they could actually buy.

</comment><comment><USER24> Programming for other people.. I encounter way too much problems, with too little time.

</comment><comment><USER25> Hit me up, maybe we can work on something together. I have an endless list of ideas.

</comment><comment><USER26> I think you should do whatever fascinates you, but if there's nothing then do nothing: A side project you don't enjoy is just a job - you won't finish it and chances are you won't learn from it

</comment><comment><USER27> Find something you are good at which others struggle with. Usually the best things are a need you have to solve for yourself which can be expanded to others.

</comment><comment><USER28> Follow your curiosity. What is a problem that bothers you? That would be be the best to start a project with.

<comment><USER29> A problem that bothers me is high prices of real-estate on the west-coast of Canada due to money laundering, tax avoidance, and governmental complacency. How can I address this using tech?

<comment><USER30> > How can I address this using tech?

If you have a hammer and can't find any nails, looking around for other things to hit is unlikely to be a productive activity.

You've identified a serious, complex issue and you care about improving the situation. That's an excellent beginning. Go to your local library and find a book on systems thinking/analysis such as Thinking in Systems by Donella Meadows. Start to understand how all the pieces fit together and what sort of changes will help and what will make the problem worse (you will be surprised!). Your tech experience will be extremely helpful here.

<comment><USER29> what are your thoughts on this course: [https://www.coursera.org/learn/model- thinking](https://www.coursera.org/learn/model-thinking)

<comment><USER30> That course looks great. Keep in mind that you are unlikely to "learn" anything "new". It's a process; do this, do that. Put some effort here, think about that stuff there. And then you start to see interactions and cause/effect patterns that you didn't see before as well as behaviors that work completely differently than you previously believed.

</comment></comment></comment></comment></comment><comment><USER31> Don't have a new idea, I'm writing a open source forum based on golang</comment>


Attention Suckers: Please Send Us Your Money - <AUTHOR> http://www.bloombergview.com/articles/2014-03-26/attention-suckers-please-send-us-your-money

<comment><USER2> That article seem to misunderstand the point of Kickstarter and the present situation: people aren't mad because they get no money from the sale of the company, they're worried Facebook will ruin the vision of VR that the project aimed to achieve.</comment>


Why You Should Be Unit Testing Your Functional Acceptance Tests - <AUTHOR> https://www.jvt.me/posts/2018/11/07/unit-test-functional-tests/ <comment><USER2> This is probably a good idea. I checked your github for sample code but couldn't see anything obvious. Any chance to open source something from Capital One?

<comment><AUTHOR> That's because there's not much on my GitHub - I'm very much a GitLab user.

As per my post [https://www.jvt.me/posts/2018/08/16/self-contained- cucumber-...](https://www.jvt.me/posts/2018/08/16/self-contained-cucumber- jar/) I have a very basic example [https://gitlab.com/jamietanna/fat-cucumber- jar](https://gitlab.com/jamietanna/fat-cucumber-jar) that may be of interest - let me know if you would prefer something more in depth and I can look at getting something shared</comment></comment>


Ditaa: Diagrams Through ASCII Art - <AUTHOR> http://ditaa.sourceforge.net/ <comment><USER2> It is now on GitHub: [https://github.com/stathissideris/ditaa](https://github.com/stathissideris/ditaa)

I've recently used this for a diagram of a FSM in software I'm developing at work.

I drew the diagrams on [http://www.asciidraw.com](http://www.asciidraw.com). The diagram ends up as a comment in my source code. This has a couple of benefits: It is easy to keep up to date (I change it if I change the code), and it is under version control (so if I check out a particular branch, I don't have to struggle to find the relevant diagram). It is also not significantly more difficult to do than, say, Visio for a simple diagram like this.

I then used Ditaa to convert the diagram to an image file for more official documentation, like emails to customers etc.

emacs also has a mode for drawing ASCII diagrams, but I'm on Windows, so I can't comment about it.

([http://asciiflow.com/](http://asciiflow.com/) seems like a nice alternative to asciidraw.com, but asciidraw is the one I started out with)

edit: there is also [http://shaky.github.bushong.net/](http://shaky.github.bushong.net/) that I use to entertain people who's seen the ditaa generated diagram.

</comment><comment><USER3> Thread from 2016: [https://news.ycombinator.com/item?id=11098653](https://news.ycombinator.com/item?id=11098653)

2011: [https://news.ycombinator.com/item?id=3204006](https://news.ycombinator.com/item?id=3204006)

2010: [https://news.ycombinator.com/item?id=1991078](https://news.ycombinator.com/item?id=1991078)

2009: [https://news.ycombinator.com/item?id=800029](https://news.ycombinator.com/item?id=800029)

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

I think this, combined with JavE and/or $EDITOR for $EDITOR in {emacs, vim}, is in fact easy to use. I've written many ASCII diagrams in vim and JavE before -- it's quite easy. The main advantage of writing ASCII diagrams first is that a) they work over email really well, b) they're great for IETF Internet-Drafts and RFCs.

<comment><USER5> > The main advantage of writing ASCII diagrams first is that a) they work over > email really well

FYI there is an ancient format for bitmap-in-email this, see [https://en.wikipedia.org/wiki/Netpbm_format](https://en.wikipedia.org/wiki/Netpbm_format)

LibreOffice recognises it, incredibly. I've not tested it out in any mail client. I doubt it's supported, but it does exist as a spec.

(FYI and totally irrelevant I originally came across it here [http://underhanded-c.org/_page_id_17.html](http://underhanded-c.org/_page_id_17.html))

</comment></comment></comment><comment><USER6> Something that I was looking for recently, but didn't find, was a set of ASCII art "glyphs" for rendering electronic schematics.

I am not sure that there exists any kind of library for this, and what I have seen of such schematics (from various text files and other forms), there isn't any "one true way" to represent "standard" parts in both vertical and horizontal orientations (for some parts, it would be nearly impossible, if the goal was to represent the actual symbol using ASCII characters). Most parts are most amenable to horizontal representation only. Fortunately, many schematics can be created in such a manner.

</comment><comment> vincent-toups Last time I saw something cool hosted on sourceforge, I was so shocked I fell off my dinosaur and broke my stone underwear.

<comment><USER7> Wear animal skin underwear</comment></comment>


Machine Learning: The High Interest Credit Card of Technical Debt (2014) - <AUTHOR> https://ai.google/research/pubs/pub43146 <comment><USER2> I recently came across this artice:

[https://en.wikipedia.org/wiki/Overfitting](https://en.wikipedia.org/wiki/Overfitting)

Although it describes the issue pertaining to statistics + machine learning, this is also _exactly_ what end ups up happening with a large codebase without clear requirements or test cases, and people just making incremental, piecemeal changes over time. You end up with an application that has been trained (overfitted) with historical data and usecases, but breaks easily for slightly new variations that are different from anything that has ever been handled by the system before in some trivial way that better designed, cleaner, more abstract system would be able to deal with.

Given how much poor coding practices resemble machine learning (albeit in slow motion), it's hard to hold too much hope about what happens when you automate the process.

<comment><USER3> I really like this extension of the concept of overfitting to codebases in general.

I especially noticed this in libraries/packages that were "community owned" in a company--instead of one team owning the package and being the authority on deciding the long term roadmap and communicating with other teams about feature requests, deprecations, documentation, bug fixes, etc, the community at large, where "community" was very broadly defined as a team that for whatever reason had an interest in using/maintaining/adding onto the package, would collectively own the package.

Naturally, the result was exactly the scenario you described. Each team hacked on their own bit of functionality for their specific purpose, while doing their best to not affect or break the increasingly precarious tightrope of backwards compatibility. There was no long term architectural vision, so there was a definite need for refactoring--and yet no team had the incentive to invest the amount of time needed to do that.The documentation was woefully incomplete as well, and few people understood how the entire thing worked since each team would only interact with their small fraction of the code.

<comment><USER4> Two principles I live by (much to the annoyance of my bosses)

1\. Don't fear the refactor. 2\. If you don't want to rebuild your entire application from scratch, don't worry, a competitor will do it for you.

There's nothing wrong with creating something in increments. It's the fear of revisiting something that destroy's a code base.

<comment><USER5> Your bosses might be right.

Technical debt, much like regular debt, can also be used as leverage to quickly gain a competitive advantage. While your competitors are busy refactoring/rebuilding perfect applications without hardly creating any more customer value, the scrappy startup that writes piles of spaghetti code might be building exactly what customers want.

Code quality != business value.

<comment><USER6> > Code quality != business value

I don't think that's a given: in some circumstances code quality absolutely is business value. It might be better to say code quality can be, but isn't always, business value. As ever, context is the deciding factor.

<comment><USER7> Well, I would say technical debt is similar to the classic kind of debt: It may give you short-term advantage (liquidity), but on the long term, there's interest on it. If not paid off, it grows exponentially.

So yeah, technical debt can be used as a tool, but it doesn't come for free.

</comment></comment></comment></comment></comment></comment><comment><USER8> Publication Year : 2014

Previous HN Discussions

[https://news.ycombinator.com/item?id=10006293](https://news.ycombinator.com/item?id=10006293)

[https://news.ycombinator.com/item?id=10338575](https://news.ycombinator.com/item?id=10338575)

[https://news.ycombinator.com/item?id=8775772](https://news.ycombinator.com/item?id=8775772)

"The Morning Paper" has a nice summary

[https://blog.acolyer.org/2016/02/29/machine-learning-the- hig...](https://blog.acolyer.org/2016/02/29/machine-learning-the-high- interest-credit-card-of-technical-debt/)

<comment><USER9> which means it must be good, right?

I feel like there are a few of these frequent flyers... is there anyway to figure out what they are?

<comment><USER10> "Show HN: Hacker News Classics" might fit the bill.

Discussion: [https://news.ycombinator.com/item?id=16442888](https://news.ycombinator.com/item?id=16442888)

App: [http://jsomers.net/hn/](http://jsomers.net/hn/)

Source: [https://github.com/jsomers/hacker- classics](https://github.com/jsomers/hacker-classics)

</comment></comment></comment><comment><USER11> Software Engineering daily has a podcast, with D. Sculley, the author of this paper. It is quite interesting to listen

[https://www.softwaredaily.com/post/5913c0e74ee01db33cacd027/...](https://www.softwaredaily.com/post/5913c0e74ee01db33cacd027/Machine- Learning-and-Technical-Debt-with-D-Sculley)

</comment><comment><USER12> If you're interested in this, be sure to read "The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction" [1] and the Rules of Machine Learning [2].

[1] [https://ai.google/research/pubs/pub46555](https://ai.google/research/pubs/pub46555)

[2] [https://developers.google.com/machine-learning/rules-of- ml/](https://developers.google.com/machine-learning/rules-of-ml/)

</comment><comment><USER13> I love this paper. The further I get in my ML/stats career, the more relevant these lessons are. I would recommend anyone interested in building long lived ML products to read this.

</comment><comment><USER14> This paper will eventually be seen as a landmark in the field of machine learning systems. Read it, learn, and write up what you discover along the way. This literature needs to grow.

</comment><comment> dj-wonk I enjoy the paper as a starting point for discussions. However, given the varying definitions of technical debt, I think it is important to see additional elaborations and examples of real-world trade offs in production systems.

Perhaps the best overall wisdom this paper tries to impart is this: build awareness, culture, and tooling around your ML systems, both upstream and downstream. Never stop exploring and improving. Relentlessly try to slim down your models, simplify your pipelines, and bring people together to talk about all kinds of dependencies.

</comment><comment><USER15> 2014 feels like decades ago in AI. Looks like that paper is already a classic.

</comment><comment><USER16> This is a great paper. It helped us think more rationally and helped us realize that we were not alone having difficulties running ML in production.

</comment><comment><USER17> Is this still relevant?

<comment><USER18> I work at Google on a product driven by ML doing ranking and regression tasks. Can confirm, very relevant. That said, ML is usually superior to the rules and heuristics systems we've been able to come up with, so we take on the debt once we stop being able to improve our heuristics, but only once we've tried really hard at the heuristics such that we have a baseline quality bar to beat. That justifies the effort, but it's still a lot of work to be vigilant and keep an eye on shifts in signals, unintended dependencies, good metrics that mean something, etc..

<comment><USER19> What really bugged me for a while is how unbelievably easy it was to beat a very large amount of hand tuned code using ML. Going from 92.x% accuracy to 97% accuracy even without any tweaking at all feels like cheating.

<comment><USER20> Are you at liberty to share, accuracy of what?

<comment><USER21> Can't speak for OP, but such accuracy numbers often hide a 20/20 hindsight bias.

After having built and run a rule-based system for a while, you always get tremendous subject matter expertise, a feel for what works.

Any rewrite of the system at that point will lead to much improved accuracy. The clarity is reflected in a better choice of the input signals, features, data preprocessing, metrics, workflows…

A "magic ML" (without domain understanding) beating well-tuned SME rules is a dangerous fantasy, in any non-trivial endeavour. In other words, without that clarity, you're better off gaining it first through simple iterations of rules, figuring out what matters.</comment></comment></comment></comment></comment>


Writing a C library, part 1: best practices for writing C libraries - <AUTHOR> http://davidz25.blogspot.com/2011/06/writing-c-library-part-1.html

<comment><USER2> In the section on memory management, I was surprised that there was no mention of providing a malloc/free method (or some other memory allocator) to the library to explicitly use. This is especially handy if you're working with limited memory environments prone to fragmentation, where you might want the library to call your custom allocator which is managing small memory pools.

<comment><USER3> What's a well-regarded C library of medium complexity (something that isn't going to be the entire kernel of an application) that does that? I can't think of an example off the top of my head.

<comment><USER4> I would require this in every C library that provides a crypto framework or provides support functionality for such a framework. And to extend this: i would require this in every c library that touches cleartext (in an cryptographic application).

<comment><USER3> What popular encryption library does this? Also: what would you do specially in your allocator? It seems wrong to me that the users of a library should be expected to know (for instance) the precise incantation required to clear cache footprints on Core2 processors; that seems like an internal library concern.

<comment><USER4> on top of my head: libgmp (not a crypto library but used by some), libgcrypt, openssl (requires a dynamic engine to do this), libssh2, libmcrypt ...

IMHO the user of an encryption library (the developer of a crypto application) should at least be able to ensure that every bit of heap that was touched by the library is zeroed after it was freed.

</comment></comment></comment></comment></comment><comment><USER5> If possible provide non-callback versions of your functions. It's very useful when trying to use the "C" api from a different language, and callbacks being very hard to put in. (C -> otherlang -> (callbacks again) C).

</comment><comment><USER6> Or, instead of making C a more pleasant language for developing applications and middleware libraries, you could use a programming language better suited to those tasks. Call out to C only when necessary and at the lowest layers. Don't layer C on C. Even C++ is an order of magnitude more pleasant when it comes to serious application development and building large, layered systems.

Would I write a C library that gives callers a transitive dependency on D-Bus, or contains an epoll event loop? No.

When I write C, it's typically either (1) small djb-style applications that make a bunch of system calls and don't need any data structures beyond C arrays, or (2) libraries of essentially functional code that do performance critical computations. I love C, and it has its place: near the bare metal.

<comment><USER7> So because you don't use C commonly, you propose that we _avoid_ making it easier to others to do so and collaborate?

This is just language trolling in thin disguise.

<comment><USER6> > So because you don't use C commonly

Where did you get that idea?

The author talks about writing C libraries that depend on GTK+, GLib, APR, D-Bus, and the like. There's no way in hell I'd write a C _library_ that depends on that stuff. Above some layer, C is no longer the right tool for the job; you're better off switching to C++ or to a dynamic language. From the author's examples I see no appreciation for this fact.

<comment><USER7> The author talks about conventions for C libraries in general. Among other things, it advocates _not reinventing the wheel_. Sound advice. Pretty much the entire reason we have libraries at all in the first place.

I'm still not seeing a reasoned explanation of why you should be forced to re- implement linked lists, hash tables, red-black trees, etc. It's great and all that your C code is simple enough to get by just using arrays, but some of use need a bit more. These elementary data-structures are hardly anything to be afraid of using in C, _particularly_ when someone's already implemented them for you. What in the world could be the harm in pulling in some handy string buffer functions? It's not as though dynamic linking is a black art.

Furthermore, you completely disregard anyone who either 1) is unable to use something besides C, and 2) people who chose to use C because they enjoy it.

That's why you are language trolling.

<comment><USER6> _The author talks about conventions for C libraries in general. Among other things, it advocates not reinventing the wheel._

All fine things. The author has some good points on C library design. I have no problem with C (which I use heavily in both my startups), or with C libraries (which I've published, see my github), nor do I need a lecture on the benefits of reuse. Your imagination seems to be running wild here.

My problem is with the author's notion of reuse. Specifically, his lack of appreciation for the flipside: dependencies. We are told to write C libraries that in turn depend on GLib, GTK+, APR, and the like. As a consumer of C libraries, there is no way I'm going to be happy about pulling in GTK+ just to use a library that does Unicode manipulation. (His example, I'm not even making this up.)

That's what I meant by "middleware libraries" in my original comment. I like C libraries that do one thing and do it well, without adding unnecessary transitive dependencies. So, using C at the "lowest layer" of the dependency graph? Absolutely, all for it.

 _I'm still not seeing a reasoned explanation of why you should be forced to re-implement linked lists, hash tables, red-black trees, etc._

You shouldn't re-implement them. Use C++. STL has had fast, stable implementations of these for years. Destructors + exceptions (the only really useful parts of C++ imho) save you boatloads of nasty C code of the form:

        int foo()
        {
           hashtable *h = hashtable_new();
           ...
           if (err1) {
             hashtable_free(h);
             return err1;
           }
           ...
           if (err2) {
             hashtable_free(h);
             return err2;
           }
           ...
           if (h) hashtable_free(h);
           return 0;
         }

Or the almost equally repulsive

        int foo()
        {
           hashtable *h = hashtable_new();
           ...
           if (err = error1) goto error;
           ...
           if (err = error2) goto error;
           ...
         error:
           if (h) hashtable_free(h);
           return err;
         }

Any large, layered C program using dynamic data structures inevitably fills up with this (error prone!) junk.

Don't like C++? Need a special data structure not in STL? Fine, use C. Hell, I've forked and contributed to a trie implementation in C [1] because I needed it in one project, and there were no quality implementations in C++. It worked out nicely because the program was small and the error prone junk (above) was minimal.

Another option is to write your app in a high level interpreted language to begin with, using whatever data structures they provide, and rewrite the critical path in C. I've been doing this like crazy recently [2] [3] [4].

 _Furthermore, you completely disregard anyone who either 1) is unable to use something besides C, and 2) people who chose to use C because they enjoy it._

I enjoy C as much as the next person, I hope I've clarified that. I also work in embedded contexts where C is the only option -- in one case, an AVR microcontroller with 8K of program memory. Do I still sometimes wish it was possible to program it in lisp or some other higher level language, like the JPL guys did when they debugged a space probe 100 million miles away [5]? Hell yeah I do.

[1] <https://github.com/acg/critbit>

[2] <https://github.com/acg/lwpb>

[3] <https://github.com/acg/python-percentcoding>

[4] <https://github.com/acg/python-flattery>

[5] <http://www.flownet.com/gat/jpl-lisp.html>

</comment></comment></comment></comment></comment><comment><USER8> Wow, link overload in that post. Did he really feel the need to link to the US Government wikipedia page?

<comment><USER9> I didn't even notice that there were a large number of links in the post. I think the majority of them would be useful for someone unfamiliar with some of the topics described, though. The great thing about hypertext is that links are optional, so an abundance, as long as the linked content is of quality, hurts no one.

<comment><USER10> I disagree, if you link to something there's an implied recommendation, and also a possibility for subtle commentary. (For example, link to something critical of the anchor text.)

When I see a link and I'm curious what's being linked, I often hover to see where it's going. If it turns out it's a link to Wikipedia for a mundane, off- topic article like the US Gov't, I think that kind of wastes brain cycles, and I'm a bit disappointed.

I know this is a small, hair splitting issue, but I think it's valid. Some writers try to cut words where they can to make their writing concise and tight. I think this falls in the same category.

The worst case I've seen is in one of the earlier Clojure (print) books (not Joy of...) that actually had a few footnotes with Wikipedia URLs in them, for CS topics.

</comment></comment></comment><comment><USER11> Rusty Russell had a slightly tongue-in-cheek rant about such things recently, <http://rusty.ozlabs.org/?p=140>

There's a bunch more recent articles on his blog covering similar topics</comment>


Ask HN: Advices on HuaaS Business models - <AUTHOR>

In my opinion it's best time for HuaaS (Human as a Service) business model startups. Cloud computing makes it possible easily implement traditional business models online. With the help of internet we can do our marketing cheaper, faster; easier and faster payment; organize the whole business model online and then do the service;  more and structured info about our service for costumers; and go global very easy. Best examples for HuaaS are:<p>- Airbnb<p>- Uber<p>- Amazon mechanical turk<p>- Exec.<p>- Cherry<p>What do you think about this business model? Do you have any new ideas? Advices on this business model? (e.x. Cherry) <comment><USER2> I don't think Airbnb qualifies, because people are offering something beyond their labor.

For it to work, you need to find a way to allow the humans to differentiate themselves on quality. Otherwise it is just a race to the lowest price possible taking any shortcuts necessary. If price is the only way to tell people apart, then the people providing the service won't care about quality.

AMT tries to solve this problem by having people complete only small very well defined tasks. The task is so well defined that the is no variance in quality.

Other sites attempt to solve this by using feedback rating, but I don't think this really works at all. Shell accounts make this easy to game, and people get upset when they think they have fulfilled the requirements (no matter how minimally) and still get poor feedback.

<comment><USER3> thanks!</comment></comment>


A Window of Opportunity for Macs, Soon to Close  - <AUTHOR> http://www.nytimes.com/2007/09/16/technology/16digi.html?ex=1347595200&en=7d6cd1aff71e9ca1&ei=5088&partner=rssnyt&emc=rss <comment><USER2> Funny thing is, I'm not sure if the windows market is where mac's are really making a dent. (yet)

From what I can tell, it seems more that users who would be ready to make the jump from windows to linux are opting for macs instead.

A rails conference I was at last year was 99% mac. I'd assume most of the web languages are the same. This is especially true in the laptop segment, which seems to be growing as well.

If I were apple, I'd stay the course. Looking at market shares when a vast majority of people aren't even replacing their xp boxes is kinda useless. Give it a year and those boxes will be a year older. Most of them won't be moving to vista.

<comment><USER3> Why, it seems Apple is even worse than Windows when it comes to open systems? It seems to me a Linux user would be the least likely candidate for switching to OS X.

<comment><USER2> The biggest reason is that most Linux apps are ported onto OSX a lot faster than they are windows.

There are a lot of people now that are attached more to open source applications than the platform itself.

</comment></comment></comment><comment><USER4> He believes that Apple is not growing _even faster_ because they do not sell as much in retail. He mentions HP. But not DELL, who is #1 and also sells (mostly) through their web site and have very limited in-store presence.

Am I missing something? What's the point of an article like that if his only argument is so weak? I, personally, see exponential growth of apple hardware among my friends and peers.

And I just did not get his "flywheel" paragraph about Vista. Is it going to suck less because of... of what?

</comment><comment><USER5> I'm not sure that I agree with the article. Perhaps Apple would have higher market share if the Macs were sold in more retail locations but I think this might drive customer satisfaction down. IMO Apple wants to control the distribution channel in order to create the right customer experience. I was amazed for example at how easy it was to purchase an iPhone and sign up for the service compared to the usual hassle of buying and activating a phone.

What I'd like to see (if anyone has any links, please do share) is the percent market share between licensed copies of Windows and licensed copies of OS X.

</comment><comment><USER6> I need a new laptop, I really don't want a Vista, but it is hard for me to justify spending $2500 on a MacBook Pro. Apple needs to do something about their pricing if they want a bigger market share.

<comment><USER2> Why not an iBook? Do you really need the extra's on an Macbook?

<comment><USER7> upmodded you, but they're called MacBooks now.</comment></comment></comment>


How do the state-of-the-art pathfinding algorithms for changing graphs differ? - <AUTHOR> http://cstheory.stackexchange.com/questions/11855/how-do-the-state-of-the-art-pathfinding-algorithms-for-changing-graphs-d-d-l <comment><USER2> This was pretty much my PhD thesis topic. The summary no one wants to hear is that all the incremental algorithms for changing graphs suffer the same problem, and no one talks about it.

They are all optimised for changes near the start of the search. The better ones are optimised for changes anywhere on or beyond the 'search perimeter' (the perimeter of the region consisting of nodes whose cost-to-goal has been calculated). They _all_ suffer catastrophic slow down when costs change near the goal region, because the incremental update requires changing almost all the saved information. Due to the overhead of extra calculations and storage, this can be slower than throwing away all the saved state and starting again from scratch.

What to do about this is a much more interesting question, and inadequately explored in my opinion.

<comment><USER3> If I imagine trying to make the path-finding agent think "like a human" rather than "optimally" (which is what you'd expect in, say, an RTS game), a solution springs to mind:

1\. Do your initial global pathing to figure out what the optimal path is at some point back in time;

2\. set a sequence of waypoints (local to the agent) to walk the agent through that path;

3\. if something changes near the goal, draw a circle out to a heuristic distance for the maximum "roundabout path" it could have created, and eliminate all waypoints within that circle;

5\. at each waypoint, instead of just continuing on to the next one, recalculate the path _to the next waypoint_ from where the agent is, with the search _bounded_ to the space between them and the next waypoint (plus some squeeze-room);

6\. if the recalculated path is _sufficiently worse_ than the previously-known path, throw out the waypoint and repath to the next one after that, increasing the pathing search bounds equally in all directions around the agent [not just in the direction of the next-furthest waypoint.]

7\. if you end up throwing out the goal, do a global repath.

8\. either way, re-divide the new path you created (between you and the remaining waypoint) into new waypoints [down to some quantum], and continue on.

The resources consumed for each recalculated path will be much smaller, since each agent only has to figure out how to "put one foot in front of the other" to get to the next place it was planning to go. But, it is _very_ possible that something can change that will cause the agent to get to a "stop" on its way, realize there's a problem, and have to turn around and run back the other way because it has now recalculated that there's a better route that it can't "merge into" from where it is. It'll also (if you do the pathing for an agent as a thread local to that agent) spend a minute standing around figuring out which way it needs to go, while everyone else runs past it--with a more "surprising" change necessitating more "thinking."

...which is exactly what, say, a human riding the metro while periodically checking Google Maps would do :)

In fact, thinking about it, if the agent just naively draws the initial set of waypoints from its "memory" of the route (at worst, confabulate a straight line), it can optimistically "just start walking" toward the goal, and then actually think about _which way_ it has to go only once it's actually on its way. Sort of like only checking a map once you're on the highway :)

So, is this strategy anything near "useful", or is there a horrible flaw here I'm not seeing?

<comment><USER2> You've essentially just derived my Parallel Hierarchical Replanner (PHR)... :-) However, your step 6 isn't always useful because not only do you sometimes discover new obstacles (higher costs), occasionally you discover new shortcuts (lower costs).

In the PHR, you spawn two (or more, but ignore that for now) threads. One runs the globally optimal planner on as up-to-date data as it can; slow, but important to keep working upon. The other runs a local window planner from the agent's current location to as far ahead along the most recent global plan as fits within the window.

The result is a pretty good trade-off between actually executing the plan, and waiting to finish computing a globally optimal one. Essentially you're tracking along a stale but once-upon-a-time optimal global plan, locally optimising subsections of it. There are also some more generally useful trade- offs to this too, like using an anytime planner for the global thread.

My PhD was then an attempt to generalize these strategies into a cohesive framework. It starts from the assumption that what you really want is _not_ to travel along `optimal' paths, but just to get to the damn goal as fast as possible. To that end, measuring everything in terms of time becomes sensible. Ultimately, it comes down to solving y* = arg_min_over_Y{ p + e + c }. y* is the optimal set of adjustable parameters in your system (e.g. choice of algorithm, number of threads to use, amount of RAM to use, tuning parameters in the algorithm, etc) in the space Y of all possible parameter sets. p is planning time, e is execution time, and c is the time taken to solve that optimisation equation itself. i.e. it's a transindental equation, so the only way to solve it is to estimate each of those time factors.

Finally, everything gets wrapped up in a nice package that combines a learning model, state estimator, optimiser, and planning system, and solves that equation repeatedly. Every time it does, it "applies" the y* parameters to the system (whatever that means depends upon what they represent), and starts again. If it helps, you can think of it as a feedback loop that adjusts its own controller gains, and where one of the inputs is the time taken to run the controller.

</comment></comment></comment><comment><USER4> Data structures called "distance oracles" handle such problems. However, most research results are for static graphs only.

If the graphs are grids (as in the cstheory.stackexchange.com question) they are planar and some dynamic data structures exist (unclear whether the constants are small enough for the application in question):

Exact shortest paths:

Jittat Fakcharoenphol, Satish Rao: Planar graphs, negative weight edges, shortest paths, and near linear time. J. Comput. Syst. Sci. 72(5): 868-889 (2006)

Approximate shortest paths:

Philip N. Klein, Sairam Subramanian: A Fully Dynamic Approximation Scheme for Shortest Paths in Planar Graphs. Algorithmica 22(3): 235-249 (1998)

Ittai Abraham, Shiri Chechik, Cyril Gavoille: Fully dynamic approximate distance oracles for planar graphs via forbidden-set distance labels. STOC 2012: 1199-1218

</comment><comment><USER5> While on this topic (not sure if this is the same problem fundamentally, it might be). Imagine a crowded market full of AI agents. They all want to walk to their destination and trying not to bump into each other.

In the naive case for N actors, each would run A* on each AI frame update rate F (which might not correspond to the main frame rate) so that's NxF runs of A* runs per second.

It might not be that bad except that since some of the obstacles are moving (other agents) and there is a need to predict other agent's movement based on a some approximate constant speed and direction.

</comment><comment><USER6> This seems like another case of where the constant factors of these super- smart algorithms will end up nullifying any benefit you get, even producing worse performance.

<comment><USER7> Like antics said, this isn't true for graph planning. Here are three concrete examples that I know of:

1\. Anytime D* was used by the winner of the DARPA Urban Challenge

2\. Field D* was used by Spirit and Opportunity on Mars

3\. ARA* (and other A* variants) are a method of optimal motion planning in robotic manipulation

</comment></comment><comment><USER8> Are any of these good for RTS games? Or is the overhead too much compared to a modified A* path finder that only finds close to optimal paths?

<comment><USER2> They _can_ be. It depends on what you're after.

I definitely think anytime planning is underused in games. It's like a modified A* planner with a weighted heuristic, but which reduces this weighting factor after every successful iteration. The Anytime-D* algorithm then efficiently re-uses calculations to make subsequent plans faster. I'm not a games programmer, but I used this in a tech-demo planning paths for >5000 agents in a constantly changing map.

The biggest win in my opinion is that it devolves gracefully. If you're low on CPU time, you get worse paths. When CPU is readily available, they get better again.

FWIW, if you're reading this Valve, I'm still waiting for your call... ;-)</comment></comment>


If you want to know, ask rather than guess - <AUTHOR> https://davidneely.wordpress.com/2018/09/12/if-you-want-to-know-ask-rather-than-guess/ <comment><USER2> Assumptions are not faith, it's just a roll of the dice. Just hope you don't get snake eyes.</comment>


A novel scheme for data encryption technique [pdf] - <AUTHOR> http://ijma.info/index.php/ijma/article/view/2391/1456

<comment><USER2> This _is_ vulnerable to frequency analysis, though the paper says "nope". If you encode each word separately, like they suggest, you can very easily do frequency analysis based on word frequency. If you don't split up the blocks by words and use any other fixed-width blocking scheme, you can still do frequency analysis on blocks of that width.

The "key" isn't a key because it's sent with the message, and uses pretty much the same method for "encryption", so the same problem applies. Given that there is no "key", chosen-* attacks don't even _make sense_. In cryptography you always assume the attacker knows the algorithm but not the key. The "key" is completely determined by the plaintext and algorithm.

I doubt this is a serious paper. Probably an assignment for an intro course that somehow got published. I mean, the description of the algorithm involves "Data.txt"...</comment>


Ask HN: What is the right way to ask for feedback twice? - <AUTHOR>

If a site is submitted for a HN review once, is it ok to submit it a second time ? If it is ok, will circumventing the URL filter be acceptable to the community ? <comment><USER2> Did you make changes that you want people to review? That's probably OK.

I personally dislike it when people resubmit without having changed anything, but that's just like... my opinion, man.

<comment><USER3> mindreader :)

</comment></comment><comment><USER3> I figure as long as there are major changes and you respond to the things raised in the first one by fixing/changing them that actually is a really good thing to do, it shows that you take the feedback serious.

If you do it could you maybe add a link to the original thread as well ?

</comment><comment><USER4> A situation I've run into occasionally is that I don't do it right the first time, either I don't ask the right questions first time (something you often don't know until you've asked them) or I ask the wrong audience. I did it here on HN a few weeks ago when I asked for criticism of our glunote app (shameless plug: <http://glunote.com>). I didn't do a very good job about defining what I wanted to know, so I asked again, but this time with more explanation. When someone bought up the previous post I simply admitted that I'd screwed up the first time. I really think that most people, especially in a community like HN, won't hold it against you if you admit you did something wrong and ask for help again.

</comment><comment><USER5> It's ok if it has changed a lot.

</comment><comment><USER6> If a site has undergone lot of changes based on the HN comments posted in the first time submission, it definitely makes sense to submit it second time...If the same old stuff is submitted for review again, we always have a choice not to upvote that

</comment><comment><USER7> Absolutely, it's OK. 5 reasons why:

1\. Many people here how may have not seen it the first time. Get their feedback, too. (This is also why I've never minded re-posts in general.)

2\. Those who did see it the first time may want to see the latest version but need to be reminded. Refresh their memory. Also let them see how their input was used.

3\. Feedback should not be done in a vacuum. It should be subject to review just like any other comment. I have given feedback and been asked to follow up by email. I'd rather do it here once again. Give people that chance.

4\. "AskHN: Review my app" posts are not just for you, they're for everybody. Lots of others get to learn from your app and its public feedback. Don't pass up another learning opportunity for everyone.

5\. If this is a repeat, include the link(s) to previous discussions. Give people the chance to see the whole picture.

</comment><comment><USER8> The right way is to use my site, <http://www.launchly.com>.

I created launchly for this specific reason as a result of not being able to get good "additional rounds" of feedback here on HackerNews.</comment>


Confessions of a Former Amazon Technologist (Free Kindle Ebook) - <AUTHOR> http://www.amazon.com/Inside-Giant-Machine-Technologist-ebook/dp/B004RJ42JA <comment><USER2> Looks like a very interesting book. But the phrase _I must confess that English is my third language_ makes me wonder if there are teachers for folks like that. Like there are ESL specialists, so are there teachers for English as a Third Language?</comment>


Nevada lab confirms first coronavirus reinfection in the US - <AUTHOR> https://abcnews.go.com/Health/nevada-lab-confirms-1st-coronavirus-reinfection-us/story?id=72691353 <comment><USER2> In case people run for the hills before reading the article, it's important to note how rare this is.

>Scientists say that although reinfection is likely possible, it's also extremely rare. This is the first documented reinfection among nearly 6 million COVID-19 cases to date.

This is in addition to another case reported in Hong Kong.

<comment><USER3> The virus is still novel.

Rare for now. We really do not yet have enough data to understand what the implications are, other than reinfection is possible.

Having survived this virus, left with chronic fatigue I hope continues to improve, I feel strongly about taking this more seriously than the US currently is.

Let us hope it remains rare and does not turn out influenza style, able to hit us every annual cycle requiring recurring vaccines.

</comment></comment><comment><AUTHOR> Preprint paper referenced in the article:

[https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3681489](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3681489)</comment>


Zeo is shutting down, why didn't I get to hear of them earlier? - <AUTHOR> http://mobihealthnews.com/20772/exclusive-sleep-coach-company-zeo-is-shutting-down/

<comment><USER2> Sad news for those who happened to benefit from this company. I guess is not just gonna sleep, but it will shut down. So sad to know about this.</comment>


Finding SI unit domain names with Node.js - <AUTHOR> http://limpet.net/mbrubeck/2010/01/13/si-unit-domains-node-js.html

<comment><USER2> Can one reliably check domain name availability via DNS query? Wouldn't you need to do a whois lookup?

<comment><AUTHOR> Yes, whois is slower but potentially more reliable. It might be best to do a DNS query first, and a whois for confirmation. I did double-check a sample of the results with whois and did not find any that were inaccurate.</comment></comment>


Show HN: Source small php page that shows the public source code of a Web page - <AUTHOR> http://umbcnow.com/ <comment><AUTHOR> Hi guys, I did this little self contained script in a little over a week to enhance my php knowledge.

Some problems I've found are: redirects and non 200 status codes.

I plan on redoing the whole thing in JavaScript or any other client side technology and add color coding.

</comment><comment><USER2> PHP already has a filter (FILTER_VALIDATE_URL) for validating urls using filter_var[0], however, it doesn't work on international URLs. You can also break up a url with parse_url()[1]

You might also want to look into PHP's curl wrapper which is a lot more powerful[2].

[0][https://secure.php.net/manual/en/function.filter- var.php](https://secure.php.net/manual/en/function.filter-var.php)

[1][https://secure.php.net/manual/en/function.parse- url.php](https://secure.php.net/manual/en/function.parse-url.php)

[2][https://secure.php.net/manual/en/book.curl.php](https://secure.php.net/manual/en/book.curl.php)</comment>


Microsoft forks Unreal Engine 4 and ports it to Universal Windows Platform - <AUTHOR> https://forums.unrealengine.com/showthread.php?118375-Unreal-Engine-4-is-available-for-Win10-UWP-app-dev-now <comment><USER2> It is true that Microsoft has been behaving well lately (GWX aside,) but it is also the case that their getting-away-with-it power is at an all time low.

Microsoft would benefit if they could do all of these anti-consumer things, but that recent stampede towards Linux proved that the tennantry can be easily spooked and dangerous when on the move. Developers are leaving windows to work on Linux and Mac, to the extent that I have not seen a start menu on a single laptop in the entire CS department. If, at some point in the future we all ended up locked in to .net, I would be surprised if Microsoft's management continued their support of these charitable projects.

In that light, I think it would be wise for us to avoid getting locked back in - so that Windows might continue moving towards being a nice place to work.

<comment><USER3> >but it is also the case that their getting-away-with-it power is at an all time low.

Actually, most, if not all of the provisions, of the DOJ settlement have expired. This is why they can ship an AV with their OS and tell OEM's to cut it out with the crapware and offer special installers to remove this stuff.

I think they're just too weak to be the MS of the 90s. They just have to play ball to be competitive like everyone else. This is a good thing. Yet somehow the hysterical anti-MS attitudes are still here. Look at this thread. Its 90% conspiracy theories and axe grinding from things a decade out.

<comment><USER4> It's not just MS that has changed. Every aspect of every industry that MS competes in has changed.

To argue that the same business practices from the 90s apply today, _especially_ in the technology sector where the entire plane shifts radically every other year... that's just crazy. I don't see why so many people buy into it still.

<comment><USER5> I suspect a lot of is that people formed that opinion of Microsoft in their formative years. This generation we commonly see on HN has this childhood definition of Microsoft as evil internalized at a pretty deep level. People look for reasons to justify their beliefs more than they look for reasons to challenge them.

There are companies I got a bad impression of many years ago too that I am hesitant to reevaluate. I think it's pretty normal/natural, even though it's kinda unhealthy from an intellectual standpoint.

</comment></comment></comment></comment><comment><USER6> Is this only a fork rather than being accepted into mainline because of Epic's thoughts regarding UWP?

[http://www.pcgamer.com/tim-sweeney-thinks-microsoft-will- mak...](http://www.pcgamer.com/tim-sweeney-thinks-microsoft-will-make-steam- progressively-worse-with-windows-10-patches/)

<comment><USER7> the bottomline is that epic wants to make money out of the engine so unless they are willing to lose marketshare to other engines (e.g. Unity) they will eventually have to accept that their engine will be used for UWP apps.

<comment><USER8> I'm still waiting on seeing some real UWP apps that aren't first-party Microsoft efforts or shovelware. The platform is not exactly new, and I'm just not seeing anybody bothering to adopt it.

<comment><USER9> Netflix is on board, as is Hulu. But the platform makes more sense than average for them, since they want to be on Xbox.

[http://www.windowscentral.com/netflix-looks-be-readying- its-...](http://www.windowscentral.com/netflix-looks-be-readying-its-own- universal-app-xbox-one)

I really liked the idea MS had with phones that could scale up to full screen devices if you docked them, but I'm more skeptical of this. Aside from media providers, who else is going to put in the effort to make their UI controller- friendly?

Game engines are just about the only other example I can think of.

<comment><USER5> I think the goal of scale-up would be to make it so easy people just put it in. Swiping up and down on the phone could be pushing up and down on the joystick on the Xbox, or using the scroll wheel on the PC.

In theory. Obviously if not adjusted some, user experience suffers. But the idea is to make it so easy to adapt to different form factors, it just seems normal to. (People expect these days that their Android phone or iPhone app will work well on an Android tablet or iPad, for instance.)

</comment></comment></comment></comment></comment><comment><USER10> So I guess I'm the only one here on hn who thinks this is very cool?

<comment><USER11> Nope. Me too.

<comment><USER12> I thought it was cool, too.

</comment></comment></comment><comment><USER13> Only because it hasn't been mentioned, I'll remind everyone that they recently did the same with React Native

[https://github.com/ReactWindows/react-native- windows](https://github.com/ReactWindows/react-native-windows)

Cool stuff.

<comment><USER14> Equally cool (and with Ubuntu, react-native is really becoming a useful 'standard' for cross platform GUI work)

</comment></comment><comment><USER15> Did they then change their minds? The github repository is gone (404), and the user does not have any repositories:

[https://github.com/MICROSOFT-XBOX- ATG/MICROSOFT_UWP_UNREAL](https://github.com/MICROSOFT-XBOX- ATG/MICROSOFT_UWP_UNREAL)

[https://github.com/MICROSOFT-XBOX- ATG?tab=repositories](https://github.com/MICROSOFT-XBOX-ATG?tab=repositories)

<comment><USER16> As mentioned in the post, you need to register for the repository. Steps are below:

"If you see a 404 page, you need to complete the enrollment process: Create a GitHub account.

Sign up for the Epic program

Follow the instructions to associate your Epic Program account with your GitHub account.

Join the Epic GitHub Org (from the email invitation you receive after Step 3)"

<comment><USER17> I hope somebody mirrors this elsewhere. This is just perverse.

<comment><USER18> What's perverse? That they use Github for proprietary software? That they give source-code access to users of their software?

</comment></comment></comment></comment><comment><USER19> Hopefully this is a pre-cursor to seeing HoloLens build support from UE4.

</comment><comment><USER20> Yes, but did they send notification emails to every developer with write access to the UE4 main repo?

</comment><comment><USER21> I was betting on MS buying Unity, but this way they can get support for their platform waaay cheaper.

</comment><comment><USER22> That'll make Minecraft a little more interesting.

</comment><comment><USER23> I hope it's not an EEE move[1]? MS aren't new to such things. I.e. make Unreal Engine work with certain things only on UWP platforms, putting everything else at a disadvantage. I don't have much trust in good intentions of MS when gaming and 3D graphics are concerned, given how they are dead bent on lock-in with DX12, while the industry is collaborating on Vulkan.

[1]: [https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

<comment><USER24> It would be EEE if they, for example, ported DirectX to Linux. But here they're just ported other product to run on their "a-la Android for desktop" system. Possibly evil but not exactly EEE.

<comment><USER25> They can definitely also EEE with this. Take a game engine, create a fork for your platform, wait until your platform and fork has a significant market share, and then start introducing features to your fork, which are not directly available on the main-branch.

I can't seem to find anything on how UE4 is licensed, but even if Microsoft is forced to release all of their source code, if their fork is different enough from the main-branch, it might be extremely hard to backport all of these features into the main-branch.

<comment><USER23> _> They can definitely also EEE with this. Take a game engine, create a fork for your platform, wait until your platform and fork has a significant market share, and then start introducing features to your fork, which are not directly available on the main-branch._

Exactly. Or if it's not even a fork anymore (let's say it was merged upstream), make those features platform dependent / unportable even in the main codebase. It will still be EEE.

</comment></comment></comment></comment><comment><USER26> Sadly it doesn't say anything about motivation. First instinct with Microsoft is that it is probably a d __k move. So some explanation would be great. Oh well, let 's see how it develops.

<comment><USER11> How is that a dick move? It's open sourced development that gives you better support if you plan to develop for their platform. They did the same for Unity with their VS/VSCode integrations etc. There was nothing negative about that, as far as I'm concerned.

<comment><USER27> It's not open source.

This kind of confusion is part of the problem.</comment></comment></comment>