Look Out Quora, InboxQ (YC W10) Takes Q&A Off-Site And Onto Twitter - <AUTHOR> http://techcrunch.com/2011/02/17/inboxq/

<comment><USER2> It's certainly an interesting direction. I did an experiment last week asking the same question on Quora and on Twitter and the results were pretty astonishing -- Twitter rocked. Check out [http://storify.com/jdp23/what-are- best-privacy-practives-for...](http://storify.com/jdp23/what-are-best-privacy- practives-for-startups); the first answer is Quora, the rest is Twitter.

</comment><comment><USER3> This is intended for one-off questions that can be answered in 140 characters; the markets couldn't be more different.

<comment><USER4> The title of Quora questions are usually that length. The tweet + link works well for many sharing situations.

</comment></comment><comment><USER5> I am extremely confused with the company/product situation here. Honest questions: Is InboxQ a company, or is it a product of another company? Is Answerly a company? What is Queryable Corp? Which company/product actually got funded by Y-Combinator?

According to TechCrunch, Answerly is a company that built InboxQ (product), but the InboxQ website leads me to believe that it is a company in and of itself, while the Answerly website doesn't mention InboxQ once. Neither Answerly nor InboxQ about pages mention Queryable Corp, though this mysterious company sits in the footer of both. When I discover a new tool, I like to learn about the people/company that are behind it, so please make this a bit more clear.

<comment><USER6> Sorry about the confusion!

Queryable, Corp. is the corporate entity that we set up when we founded the company.

Answerly.com was our first consumer product. We've always been known to our investors, partners, vendors as Answerly because that was the consumer facing piece.

We've stopped actively developing the Answerly.com q&a search engine and are focusing all of our time on InboxQ now. It is the exact same team, same corporate entity and much of the same core tech.

Hope this clears things up a bit. If you have any questions, just let me know.

</comment></comment><comment><USER7> Cool, but why isn't it a standalone website instead of an addon?

<comment><USER6> Thanks!

The feedback we got early on from potential customers was that they loved the idea of sourcing questions from Twitter. But, they didn't want another place to login to access Twitter data.

So, we figured a browser app was a good first step since its persistent and didn't require constant monitoring. There will be a full web app in the future.

</comment></comment><comment><USER8> I sometimes "just don't get it" so don't take this as a flame. But who is the target audience here? Regular consumers, or businesses? In the article the example is given of best buy trying to provide support, presumably for random people.

How many of those people are actually going to be responsive? How many of the questions people ask are going to be ones that you can answer? Seems like a lot of effort, for a low return...

I mean here's the funnel as I see it: A. People who ask questions somewhat relevant to best buy products. B. People who see the answer. C. People who then remember best buy in a positive light. D. People who then decide to visit a best buy E. People who then actually buy something at best buy on their visit.

It is very hard to track B-E, and E could happen 6 months to a year later.

I'm not sure how you make money by selling people a tool to let them maybe get a fraction of a percentage of people to buy something from you within the next 24 months.

But, usually when I'm this confused, it means I'm missing something extremely obvious.

<comment><USER6> Great questions.

Our thesis here is that Twitter is a major channel for businesses to interact with existing and potential customers and is only going to get bigger.

Big companies are already deploying lots of resources in an attempt to find high quality engagement opportunities on Twitter. For example Microsoft employs a whole team of support folks looking for xbox related questions and making sure they get satisfactory answers.

Most companies aren't Microsoft and can't afford that type of resource outlay, but will also want to take advantage of this channel. We hope that InboxQ will be a tool that helps them do that efficiently.

Ultimately, our goal is to help reduce the transactional friction on the channel as a whole (ie the funnel you detailed above). This is the first step towards that goal.

Hope this helps answer some of your questions.

<comment><USER8> Can't beat a major corporation already spending money doing what your tool makes easy for validation. Glad to hear.

I think that there's an opportunity for the response to have a tiny URL that leads the customer to a site which might make tracking their process thru the funnel easier.

And of course, it is probably a very different experience for an online retailer (Even someone like microsoft or apple who sells online) and I was just getting hung up on best buy (being bricks and mortar oriented... though they do sell online too.)

Anyway, thanks for answering!

<comment><USER6> Thanks for asking!

I agree with you. I think there will ultimately be different variations of the product based on the goals/objectives of the business.

Our goal at this stage was to put enough structure around the product that it would be useful, but also make it accessible enough that lots of different types of users could get value out of it. We'll move in the direction(s) that users point us in.</comment></comment></comment></comment>


PCG: Simple Fast Space-Efficient Good Algorithms for Random Number Generation [pdf] - <AUTHOR> http://www.pcg-random.org/pdf/toms-oneill-pcg-family-v1.02.pdf <comment><USER2> * _Digs into history_ *

This was posted 6 days ago; insightful discussion here: [https://news.ycombinator.com/item?id=10544943](https://news.ycombinator.com/item?id=10544943)

The TL;DR _seems_ to be "mathematically 50/50 chance that PCG is better than others, but for certain cases it might be superior."

</comment><comment><USER3> I can attest to PCG being fantastic. Not only is the algorithm fast for one- off generation (the GNU GSL is quite slow comparatively and MKL is designed more for vectors of random numbers) but the API is really well designed. Anyone doing monte carlo simulations in C/C++ will really appreciate using it.</comment>


Beauty and the Battleship: Marine Camouflage in World War I - <AUTHOR> http://www.historytoday.com/margaret-fm-walker/beauty-and-battleship <comment><USER2> This type of camo is still used in the modern day by car manufacturers. The wild patterns help disrupt camera auto-focus, and makes it more difficult to work out the shapes and dimensions from body panels when you do get a photo.

[http://www.autoguide.com/auto-news/2012/04/spy-photo- camera-...](http://www.autoguide.com/auto-news/2012/04/spy-photo-camera-camo- explained-whats-with-the-swirlies.html)

</comment><comment><USER3> Last time this came up I remember reading somewhere that dazzle camo isn't so much meant to conceal the vessel, as to make it harder to tell the course it is running - through a submarine's periscope. That was said to be critical for torpedo attack. I felt that makes the whole idea much more plausible.

</comment><comment><USER4> I quite enjoy these WW2 shenanigans [1]

> To escape detection by Japanese aircraft (which the minesweeper did not have > the armament to defend effectively against), the ship was heavily > camouflaged with jungle foliage, giving the impression of a small island.

[1] [https://en.m.wikipedia.org/wiki/HNLMS_Abraham_Crijnssen_(193...](https://en.m.wikipedia.org/wiki/HNLMS_Abraham_Crijnssen_\(1936\))

</comment><comment><USER5> @febeling - quite true, and most effective at that! I believe schemes like these were deployed to some extent also in WWII, however the advent of sonar and, later, radar probably made it less effective.

It would still make life harder for the hunter, though - getting a good bearing/range/speed observation would definitely take longer, leaving the submarine vulnerable to detection for the duration.

</comment><comment><USER6> Is there somewhere where I can see more pictures of Dazzled ships?

<comment><USER5> This would probably be a good start:

         http://www.lmgtfy.com/?q=dazzled+ships</comment></comment>


Giving the 'unconscious' a voice  - <AUTHOR> http://www.newscientist.com/article/mg20527463.500-giving-the-unconscious-a-voice.html

<comment><USER2> Earlier submissions, same story, different sources:

<http://news.ycombinator.com/item?id=1100790>

<http://news.ycombinator.com/item?id=1099274></comment>


Why I don't like Java - <AUTHOR> http://www.dgeex.de/2015/04/17/why-i-dont-like-java/

<comment><USER2> > The garbage collector is terrible

But the section talks about immutable strings (nothing to do with GC), syscalls (ditto), and only at the end about no manual memory allocation. Not even a word about why GC in Java is terrible (and why automatic memory management in Ruby and Python is not terrible).

> No pointers

Why is it a bad thing? Only because author wants to do pointer arithmetic?

> No preprocessor

And good for Java. CPP is vastly underpowered, thus being quite a trouble. Either macro system should be powerful, working on AST, or not there at all.

> No UNIX Syscalls

Oh, my. No UNIX syscalls in web browser. No syscalls on a DVD player. What a shame.

> It's not suitable for big projects

ElasticSearch and Hadoop beg to disagree. I wonder how big systems has the author in his portfolio.

> It's not good as a PoC language

Because...? Only because it's verbose? We've been through this few arguments before.

> No global variables

Author fails to provide any argument why this is bad. "I use them for debugging" is very, very, very weak.

> Java browser applet are insecure

So don't use them. Implementations of applets suck, we all know it, but nobody uses those anymore for anything serious (except for hardware vendors, who are generally clueless with regard to writing software).

I don't see why should people abandon Java for writing services because applets suck.

> Why then there are non-free implementations? What's wrong with OpenJDK? What > is IcedTea? Which implementation belongs to Sun?

One could say pretty much the same about Ruby, Python or C. I don't see why should this be held against Java and not against C.

Most of the arguments are pure trash. Don't bother reading.

</comment><comment><USER3> While I partially agree with the obvious (verbosity, no global vars -!!-, class names, etc), everything that is listed in the article as a minus point is also a plus point for Java (verbosity, no global vars, class names, etc).

It's like saying that a bus is slow and big, comparing a bus to a car. Obvious points are obvious.

</comment><comment><USER4> A lot of these points are bad.

 _Java is verbose_. Any language used outside of its sweet spot is verbose-- the PHP required to read a header, for example, is much shorter than the equivalent C. The MATLAB for backsolving a matrix is much shorter than the equivalent in Ruby, but at the same time, accessing the AST of a MATLAB program is magnitudes harder than in Ruby. For the benign task of shuffling a bunch of registers, a single assembly instructions beats out every other language.

 _The GC is terrible_. Author points out that they really care about what they're program is doing (why, one wonders?), and so of course any GC solution is worse than bare hands and sbrk() and mmap(). There _are_ well-establish issues with GC in the JVM, especially for graphics or anything with a bajillion little allocations, but those are also all well-solved problems.

 _No pointers_. Author complains about not having pointers, which kinda makes sense for a GC'ed language. Pointers are of limited utility if the language is high-enough level, so their omission in Java is perfectly reasonable.

 _No preprocessor_. One of the only things I agree with for the author--the lack of easy metaprogramming tools in Java is kind of sad. At the same time, it means that Java looks the same everywhere. C, also, is probably one of the most braindead preprocessors you could ever ask for. Nothing is stopping you from using sed as part of your build chain for Java, if you want equivalent power.

 _No UNIX syscalls_. So, first, this is wrong--you _can_ do this with native extensions. Second, though--the entire _point_ of the JVM and runtime is that you just let it do the right thing (or its closest approximation) and get on with your project. What good would Unix syscalls do me when running a jar on Windows?

 _It 's not suitable for big projects_. This is absurd. Java is one of the few languages I would actually consider as having large-scale development as a selling point. All of the other stuff the author complains about? Yeah, that makes a Java codebase easier to have plug-and-play development on. _Lots_ of large projects use Java, successfully. They're jungles, sure, but they're jungles that _work_ \--and consider how awful they'd be in Javascript or C or (urk) C++.

 _It 's a bad PoC language_. I've heard a lot of complaints about Java, but its lack of ability to be exploited has seldom been one of them.

There's more, of course, but I'm bored.

</comment><comment><USER5> Thanks for sharing ;)</comment>


Bankers' excessive salaries as predictors of Depression - <AUTHOR> http://broadstuff.com/archives/1520-Bankers-excessive-salaries-as-predictors-of-Depression.html

<comment><USER3> Let's see, official recessions are 1907, 1918, 1929, 1953, 1957, 1960, 1973, 1980, 1990, 2001, and 2007.

The evidence looks pretty weak, although it's hard to eyeball. It would be nice to throw up a simple regression and get objective.

It's interesting that banker pay continued to rise well into the Great Depression. I'm guessing that this was due to all the demand for financial talent to work the bankruptcies and restructurings, and maybe businesses needed more folks to comply with exponentially expanding government regulations.

On the other hand, maybe LOW banker salary correlates with depressions, since there are fewer deals to do. Thus, high banker salaries would be A Good Thing for a country, since it signals high economic growth, and low banker salaries would be A Bad Thing. The more that I look at it, the worse this "excess wage" statistic looks as a predictor. Sure, it grew during the housing bubble, but this is the millionth statistic I've been shown that shot up like a rocket during that period.

Lastly, what the hell is "excess wage"? That's surely the low-hanging hole in this analysis. They didn't teach me about that in Macroeconomics. It's hard to look at this graph and make generalizations when you don't know what the hell this new, undefined quantity is and how they calculated it. I guess someone could say, "well go look it up on your own". But then I could say, "Your blog presents pseudo-information that is not useful, and is frankly misleading".

Of course, the lesson we are supposed to take home is " Greed without Governance, allowed to build over N years, equals depression, and its absolutely predictable - now isn't that depressing....". Gee, I wonder if the blog owner came up with that _after_ being exposed to this information, or _before_. And I can't think of any "governance" that would have stopped the massive capital flows going into the housing sector that is even close to a good idea for the long term economy. But that is another issue altogether.

On the bright side, reading inane writing in support of preconceived ideas like this inspires me to do better in my own work.

</comment><comment><USER4> Although interesting, this is like saying that high CEO salaries are a predictor of company disaster.

Correlation does not imply causation ...

<comment><USER5> Please explain how better experiments can be run?

</comment></comment><comment><USER6> _When I was newly out of college, other professional salaries were roughly on a par with bankers - but the difference skyrocketed from c 1990 on, leading to probably one of the biggest misallocations of talent and resource in the West in the last 200 years_

This wouldn't have been such a big problem except for the fact that (1) academia collapsed, becoming unviable as a career, during the same time, and (2) housing prices skyrocketed due to competition from the banker douches, meaning that standards of living declined substantially for the lawyers, doctors, etc. If these two things hadn't happened, I doubt that the people "lost" by the other professions would care that a few under-cultured jackasses in suits were pulling down millions. People don't go into academia or engineering expecting to be rich, but they expect to be solidly middle-class, which isn't available when mid-sized houses cost over $500k.

 _"The system", he says, "filters out the thoughtful and replaces them with the faithful."_

This is a really great insight, and it reminds me of Ron Suskind's "Without a Doubt", on the "faith-based" presidency of George W. Bush.

I think the Strauss and Howe model of cyclical history (see: _Generations_ , _The Fourth Turning_ ) is fairly accurate. Third Turnings are characterized by confusion, socioeconomic stagnation/reversion, and rampant inequality; Fourth Turnings, by crisis, hardship and rapid social evolution. The last 3T was approximately 1914-1928, with a 4T from 1929-1946. We crossed the 3T/4T interface again some time during the Bush presidency.

Do I think that the recent spell of inequality fortells a second Great Depression? Not necessarily. On the other hand, it was obvious even in 1995 that something was going to break in American society, and that we had to have a crisis in order to muster the will to move forward. The crisis came about 10 years earlier than I expected, but I have a lot of faith that we'll handle it well, given that we made an exceptionally good choice for President in 2008.

<comment> puzzle-out Points (1) and (2) can also be seen in psychological/cultural terms - <USER2> used to be seen as a respectable career choice, but with the rise of the bankers there was more family pressure on young people to 'use' their talents - which mean't making money in the City - otherwise you could be seen as wasting them, and letting down your family. One further point: academia in the UK got a lot of kudos from the 2nd world war and academics role in the enigma code, which is now running out.

<comment><USER6> _Points (1) and (2) can also be seen in psychological/cultural terms - academia used to be seen as a respectable career choice, but with the rise of the bankers there was more family pressure on young people to 'use' their talents - which mean't making money in the City - otherwise you could be seen as wasting them, and letting down your family._

Really? I am utterly surprised by the thought of anyone choosing finance over academia for fear of "letting down the family". I grew up thinking of "Wall Street" as an uncultured and not very respectable profession.

My dad was disgusted when I told him (2003, during my junior year in college) that I was considering Wall Street as a profession. My parents both wanted me to get a PhD, and strongly insinuated that finance would be a waste of my talent.

I come from a family of inventors, architects, and writers, so although I grew up solidly middle-class, and my parents would've been happy with my choice had I been a high school teacher, the thought of me working on Wall Street was seen as a massive "step down" into unpreftigious nouveau-riche territory. (I softened my view toward Wall Street upon moving to New York; a lot of quants are brilliant, educated, and cultured people. I still do look down, reflexively, upon any "profession" connected to real estate. I can honestly say I'd never marry a woman who worked in RE, and only a woman from a real estate family if she had been purified through an elite college, a filter I otherwise don't care about in the slightest.)

I'm surprised that upper-middle-class UK families don't have an even stronger blue-blooded prejudice against "working on the exchange". Growing up, I always understood being an intellectual (academics at the pinnacle) as the epitome of preftige, and investment banking as the thing you did when your family lost its money/standing and you needed to buy it back by sacrificing ten years of your life to something unpreftigious but lucrative.

<comment><USER7> > I still do look down, reflexively, upon any "profession" connected to real > estate. I can honestly say I'd never marry a woman who worked in RE, and > only a woman from a real estate family if she had been purified through an > elite college, a filter I otherwise don't care about in the slightest.

Because Ghod knows that folks who build buildings are the lowest of the low.

> I'm surprised that upper-middle-class UK families don't have an even > stronger blue-blooded prejudice against "working on the exchange". Growing > up, I always understood being an intellectual (academics at the pinnacle) as > the epitome of preftige, and investment banking as the thing you did when > your family lost its money/standing and you needed to buy it back by > sacrificing ten years of your life to something unpreftigious but lucrative.

In other words, the blue-bloods and the wannabees are essentially parasites and that's a good thing.

Napoleon was defeated by the "nation of shop-keepers", not the professional poets. The blue-bloods marched working men into machine gun fire, kicking soccer balls and talking about their halcyon days at Eton. The mechanics and engineers invented tanks.

<comment><USER6> Engineering and mechanics are admirable professions. "Any 'profession' connected to real estate" excludes engineering and architecture, which are completely fine lines of work. Construction depends on whether the buildings are beautiful and useful or not. Construction connected to some gauche nouveau mogul like Donald Trump would definitely not be OK, but construction of beautiful churches (or temples, mosques) and houses is fine.

Also, my "ilk" have always had a lot of respect for inventors and entrepreneurs, who are the productive engine of our economy. My parents were thrilled when I told them I was joining a startup. We just don't like "business" scumbags-- politically-skilled corporate bureaucrats who masquerade as entrepreneurs-- who move money around but don't contribute intellectually to society, and real estate is especially disreputable because of that industry's exploitation of status-driven and simian emotions.

<comment><USER7> > and real estate is especially disreputable because of that industry's > exploitation of status-driven and simian emotions.

Then sales of art, clothing, jewelry, and pleasure vehicles must be beyond mention.

Thanks for the interesting perspective. As a peasant, I've always blamed the political class for the sins of "politically-skilled corporate bureaucrats".

Then again, I think that construction of a factory, house, or hotel is a higher calling than construction of a church.</comment></comment></comment></comment></comment></comment>


Show HN: Codey ― A chatbot for learning to code - <AUTHOR> Hi HN! At Codevolve we've released an Alpha version of Codey, our chatbot for learning to code. Codey is designed to answer questions for beginner programmers and help them form effective programming processes.
He's REALLY Alpha right now, < 250 answers to questions, but we're trying to get as many people to ask him questions as possible so we can improve him for future students.
If you have a few minutes during your lunch break, I'd really appreciate it if you stopped by to give him a try. Here are the instructions (no sign up required):
1) Go to https://www.codevolve.com
2) Click the code editor image on the landing page (it'll say "Demo" when you hover on it)
3) Pick a language / create a file
4) Codey will introduce himself, and then just type any questions you think might be valuable for learning to code into the message box in the bottom right!
He's not going to have answers for a majority of your questions, but by asking questions you think will be valuable to people learning to code I think that together we can build an awesome tool for beginning programmers.
Thank you so much for your help! <comment><USER2> Pretty cool. I couldn't really think of many questions, but I think it is a good idea. I wish Codey would respond with some funny answers to my nonsense though.

<comment><AUTHOR> Coding answers first, more nonsense later :) Thank you SO much for trying him out!

<comment><USER2> A couple of Easter Eggs would be nice.</comment></comment></comment>


Ask HN: What tools do you use for project management? - <AUTHOR> I'm looking into various tools for software development project management (Trello, Jira, Asana, etc.) and I'd like to get feedback on tools that you use and what you do or don't like about those tools. <comment><USER2> For a software team of a handful of people or more, nothing holds a candle to JIRA. It's a little intimidating to new users, and the setup time is ridiculous. I have one or two nitpicks about things like the unavailability of conditional logic in some aspects of workflows. But if you're responsible for _managing_ the project, nothing beats being able to use your issue database as an actual database. And JIRA can be configured to reflect anything from the loosest zero-overhead startuppy kanban process (basically a UI almost exactly like Trello) to the most rigid and calcified enterprise process - and anything in between.

For small backlogs and non-technical users, Trello can be effective, but mature software projects tend to accumulate thousands of open bugs and feature requests and things-we'd-like-to-do-better-someday-if-we-ever-have-the-time. Trello's cards aren't skimmable, and you can't sort and filter them by multiple dimensions the way I'd prefer. There's no way to group a bunch of cards into something like an epic. And I still haven't figured out in Trello how to assign a card to one person but have other people subscribe to updates on it. It's ok to be the engineer assigned work via Trello, but it's awful to be the project manager trying to manage a backlog in Trello.

Asana is good for personal to-dos and tiny projects, but it's awful if you need to track the status of an issue through multiple steps of a process. It's a nearly perfect platform for GTD lists. But GTD is not a system for communication among multiple people.

Finally, both Asana and Trello are missing unique, persistent, human-readable issue IDs that can be used to quickly refer to and pull up a specific item out of hundreds or thousands that may have similar keywords. It seems like a small thing, but is a huge deal dealer for me because it breaks communication.

As for Basecamp, which someone else mentioned, I find it effective for communicating about a project with clients, but not for tracking the internal status of a large number of tasks for some of the same reasons outlined above.

<comment><USER3> I've tried Asana, Trello, Basecamp, and JIRA as well. JIRA's issue IDs are worth it alone for me. I use them to name git branches. The one thing I miss about Asana was infinitely nestable tasks. Trello was a mess and Basecamp was too restrictive on how many open projects you can have.

</comment></comment><comment><USER4> We initially used PivotalTracker for managing our development teams, and Trello to get a high level overview of project status as well as for planning. We're currently working on building our own version of PivotalTracker using a fork of CM42 ([https://github.com/Codeminer42/cm42-central](https://github.com/Codeminer42/cm42-central)) for internal use.

</comment><comment><USER5> Tough choice because there's a clash of personal preference, and role preference. JIRA is great for dev management, but it's hostile to business/design folk, and even developers tend to prefer lightweight github issues. Was tired of fighting, so went and built a sync tool to combine/switch Trello, JIRA, Asana, GitHub, etc seamlessly. Maybe it can help [https://unito.io](https://unito.io)

</comment><comment><USER6> Our team uses LiquidPlanner but it requires a lot of training and workshops to start using it right. Devs within the team struggle with the initial learning curve so we integrated Bugzilla and it works really well. The biggest feature we rely on from LP is predictive estimate ranges. For teams relying on the software releases of other teams the managers of each can see different uncertainty estimates and plan accordingly.

</comment><comment><USER7> Started using Clubhouse a few months ago, and finding it way better for software projects than anything else we tried. We're a team of 10 people, and it works well for the developers and product manager.

In the past we've used Pivotal Tracker and Trello, but neither was a good fit. Also looked at Jira, but the interface had too much overhead (slow and required too many clicks to do anything).

</comment><comment><USER8> Basecamp is the least terrible I've used, because it has simple task/todo lists with conversations (comments) on each item, due dates, assignments etc.

Unfortunately I find their ux/ui painful to use, everything is a custom widget, and seems painfully slow from here (s.e. Asia on not fantastic adsl)

</comment><comment><USER9> Visual Studio Team Services is a pretty all-in-one solution. The only thing I'd like it to have a vastly simpler non-technical view. Something like Trello, as a front-end. They try to do this but imo it's not very effective.

VSTS and Jira and basically equivalent in my experience.

<comment><USER10> Regarding VSTS: The swimlaning of items drives me crazy.

I also could not manage to filter for undone items, that are assigned to me or have a parent assigned to me. (the parent thing is the difficulty)

</comment></comment><comment><USER11> One tool that hasn't been mantioned yet is waffle.io, it uses simple Kanban system and comes handy in terms of connecting issues to GitHub. It has the tag system similar to JIRA's one and provides Scrum tools like backlog section and burndown chart.

</comment><comment><USER12> I used to use Pivotal Tracker, was forced into using Jira. Honestly Jira ecosystem is not that bad as long as you don't have people passionate about process customizing everything.

</comment><comment><USER13> Phabricator. We use it for code review. Tasks. Kanban and source hosting. Better than anything else I know

</comment><comment><USER14> We use Asana, and it's wonderful!

</comment><comment><USER15> Trello is the worst. Unusable.

Use Pivotal Tracker.

<comment><USER16> Holy hell, totally forgot about that one. Thanks!</comment></comment>


The time that Tony Fadell sold me a container of hummus - <AUTHOR> https://medium.com/@arlogilbert/the-time-that-tony-fadell-sold-me-a-container-of-hummus-cb0941c762c1#.7psd8f7z7 <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=11423411](https://news.ycombinator.com/item?id=11423411).</comment>


Edge-Notched Card - <AUTHOR> https://en.wikipedia.org/wiki/Edge-notched_card <comment><AUTHOR> Other interesting sources:

[https://kk.org/thetechnium/one-dead-media/](https://kk.org/thetechnium/one- dead-media/)

[https://nevalalee.wordpress.com/2015/11/17/the-book-of- mcbee...](https://nevalalee.wordpress.com/2015/11/17/the-book-of-mcbees/)

<comment><USER2> I recommend a couple of books from around the peak of edge-notched punched- card use:

Casey, Perry, Berry, and Kent, "Punched cards; their applications to science and industry", 2nd ed. (1958), [https://catalog.hathitrust.org/Record/001163217](https://catalog.hathitrust.org/Record/001163217) .

Bourne, C. P. "Methods of Information Handling" (1963), [https://www.worldcat.org/title/methods-of-information- handli...](https://www.worldcat.org/title/methods-of-information- handling/oclc/575438)

Here are the cards I made a few years back - [https://twitter.com/nathanbroon/status/750465911241502721](https://twitter.com/nathanbroon/status/750465911241502721) .

<comment><AUTHOR> wow, thnx.</comment></comment></comment>


Ask HN: Do you think sites like Stack Exchange/Github have led to fewer blogs? - <AUTHOR>

Someone asked today about what the point of blogging was for developers [0]. As I was thinking about it, I wondered whether or not new developers are choosing not to write blogs anymore in favor of a public Github and/or lots of activity on sites like StackExchange. I don't have any way to quantify this though - anyone have a guess or thought? It seems logical - what's easier: creating high quality blog posts consistently, or publishing the work you're already doing? So my guess is that yes, there are fewer people starting to blog.<p>Thoughts?<p>[0] https://news.ycombinator.com/item?id=6858905 <comment><USER2> Don't forget about Twitter!</comment>


Let's Fight Big Pharma's Crusade to Turn Eccentricity Into Illness - <AUTHOR> http://www.wired.com/opinion/2013/05/lets-defy-the-big-pharma-attempt-to-turn-difference-into-illness/ <comment><USER2> I agree with the premise, but this is a terrible article, probably because it's an excerpt from a larger work. It is a polemic with no justification or examples of the excesses of pharmaceutical manufacturers to rely on. Nor is there, at least in my quick perusal, any specific actionable remedy suggested.</comment>


Three biggest Internet companies in each country - <AUTHOR> http://www.economist.com/blogs/graphicdetail/2014/07/daily-chart-6 <comment><USER3> I am Dutch, so naturally I checked the top 3 for the Netherlands. Number 3 (Booking.com) and number 1 (Marktplaats.nl, the dutch craigslist), I can understand because they are indeed big and well-known sites.

However, the number 2, apparently, is a website called "Shapeways", which is supposedly worth $175M. I have never heard of it and I asked some of my colleagues and they never heard of it either. After visiting shapeways I found that it is a 3D printing community site. After some research I found that it is actually founded in the USA, and just happens to have an office in the Netherlands.

<comment><USER4> Hi, WSR team here. Great comment!

The Netherlands have an interesting situation. Even though everyone would say the startup ecosystem is booming, the country has not managed to produce BIG success stories. We selected Shapeways as one of the top 3 companies there. They've raised almost $50M to date ([http://www.crunchbase.com/organization/shapeways](http://www.crunchbase.com/organization/shapeways)) and we put our guesstimate in a range of $150M - $200M. The company is actually founded by Dutch founders and they do have quite a big number of their employees in the Netherlands (close to 50 but should double-check on this one).

With that in mind, it'd be interesting to hear what would you put as the 2nd (or 3rd) most valuable Dutch internet company? Thanks!

<comment><USER3> I'd like to name these companies off the top of my head:

bol.com: originally started in Germany, but head office is in the Netherlands. They are the "dutch" Amazon, with 405 million euros in sales in 2012 [0], the same year it was also sold to Ahold for a reported 350 million.

coolblue: Dutch online electronics store, like newegg. They launched specialized webshops for just about every category of consumer electronics. They did 248 million euros in sales in 2013 [1]. All three founders made it into the top 10 of wealthiest self-made dutch entrepreneurs below the age of 40 [2].

Takeaway.com: takeaway websites, best know for the dutch and belgian websites "thuisbezorgd.nl" and "thuisbezorgd.be", which have a market share of 90% and 70% in their respective countries. They received a 74 million euro ($103 mln) round B this year [3].

[0] [http://nl.wikipedia.org/wiki/Bol.com#Omzet_en_winst](http://nl.wikipedia.org/wiki/Bol.com#Omzet_en_winst) (dutch) [1] [http://nl.wikipedia.org/wiki/Coolblue](http://nl.wikipedia.org/wiki/Coolblue) (dutch) [2] [http://safility.blogspot.nl/2013/08/overzicht-met- internetmi...](http://safility.blogspot.nl/2013/08/overzicht-met- internetmiljonairs-op-de_12.html) (dutch) [3] [http://corporate.takeaway.com/Over+ons/Nieuwsarchief/2](http://corporate.takeaway.com/Over+ons/Nieuwsarchief/2)

</comment></comment></comment><comment><USER5> World Startup Report team here. It's awesome to see our data on HN!

One interesting point to note is that out of the top 7 countries, none of them are from Europe. To put into context, the biggest internet company in Europe is merely 1/40th of the size of Google.

HOWEVER, Europe dominates the unicorn club (companies over $1b in valuation). Nearly half of 30 countries on the unicorn club list are European.

This prompts the question, is European market big enough but fragmented in such way that you can easily build mini-billion dollar companies, but never anything truly massive?

We'd love to hear everyone's thoughts on this.

Also, AndriusWSR (lead researcher behind this research) will be joining us shortly to answer a few questions. Please feel free to ask away.

<comment><USER6> What do you mean by unicorn club?

<comment><USER7> Could be this?

 _1) We found 39 companies belong to what we call the "Unicorn Club" (by our definition, U.S.-based software companies started since 2003 and valued at over $1 billion by public or private market investors). That's about .07 percent of venture-backed consumer and enterprise software startups._

 _2) On average, four unicorns were born per year in the past decade, with Facebook being the breakout "super-unicorn" (worth >$100 billion). In each recent decade, 1-3 super unicorns have been born._

[http://tctechcrunch2011.files.wordpress.com/2013/11/unicorn-...](http://tctechcrunch2011.files.wordpress.com/2013/11/unicorn- graph1c.png)

[http://techcrunch.com/2013/11/02/welcome-to-the-unicorn- club...](http://techcrunch.com/2013/11/02/welcome-to-the-unicorn-club/)

</comment></comment></comment><comment><USER8> Hilariously inaccurate because of the focus on "Internet companies", a vague term at best.

Apple is missing at a market cap today of $578 billion, and whilst a lot of that is down to hardware, they have an internet office suite, the largest number of online registered users with credit cards on their DB in the World and probably shift more data than Facebook just in app downloads.

BT Group is missing from the UK despite a market cap of £30 billion. Without them, there is no UK Internet. They were developing hypertext systems in the 1980s.

Others have pointed out mistakes elsewhere in the data for other countries - <USER2> sense that without context, this data is mostly useless and uncitable.

<comment><USER9> They probably tried to focus on companies that began as internet companies. Microsoft and Apple most certainly did not. Google, Facebook, and Amazon most certainly did.

<comment><USER10> Naspers is not an Internet company, and didn't start as one. Listing Naspers is equivalent to listing Time Warner, Disney, Reuters, or Bloomberg. It's silly at best.

I'd say they filled in weak data points when it was convenient.

</comment></comment></comment><comment><USER11> Britain's biggest three are ASOS (online clothing retailer), JustEat (online takeaway ordering) and Wonga (online short term loans at ludicrous interest rates). A sad state of affairs for a technologically advanced country.

Finland's top three are all Free To Play gaming companies. That's interesting. Is there some sort of tax incentive for gaming companies there?

<comment><USER12> The British list would appear to have some omissions. E.g. online real-estate site Rightmove (LON:RMV - has market cap $3.76Bn) is bigger than JustEat and Wonga.

<comment><USER4> Adam, thanks so much for the information. Indeed, our World Startup Report was not aware of this company. We will update our data (can't promise that the Economist will change their infographic though). Thanks again!

<comment><USER8> How can you allow your data to be cited when you have so little clue about the markets you're talking about?

</comment></comment></comment></comment><comment><USER13> I am shocked that The Economist, a publication I respected in the past, would use a single source without performing further fact-checking.

For example, migme is headquartered in Singapore (and listed on the Australian stock exchange), so it's surprising that they're featured under Indonesia. There are probably more discrepancies to this chart that should be corrected.

</comment><comment><USER14> General observation: Log scale!

Observations regarding Germany: Rocket Internet (#1) specializes in copying foreign companies, like creating the "Zappos" clone "Zalando", which is #2.

<comment><USER4> Great point. We had our concerns about Rocket as well. In the end, we've put them as #1, with Zalando on the list as well. It seems that Rocket does not hold a stake in Zalando anymore ([http://www.reuters.com/article/2014/06/24/rocketinternet- sha...](http://www.reuters.com/article/2014/06/24/rocketinternet-shareholders- idUSL6N0P523X20140624))

</comment></comment><comment><USER15> The data seems pretty inconsistent, for example Skype is included but Supercell isn't (both acquired). Also attribution to country isn't consistent. Sometimes the founding country is used and sometimes the current HQ location is used.

</comment><comment><USER5> Dear All -

World Startup Report team here. There have been many repeated questions in this thread, so we compiled all them into a single long answer for everyone.

At World Startup Report, our goal was to show the world how big of an internet company you can build in each country. We have partnered with Startup Genome, as well as worked closely with Startup Digest and Hackers/Founders network to collect all this data.

As we proceeded, we lowered our goal of covering 100 countries to covering 50 since we aimed to find the most reliable (as well as interesting) data. Our methodology included looking at publicly available data (stock market), online publications from sources like Financial Times, TechCrunch, The Next Web, etc. or sometimes even personal conversations with those companies. The definition of internet companies was: no ISPs, no software development houses (unless they have online products they are selling), no hardware companies. If a company is diversified (as was usually the case) we looked at the revenue breakdown and searched for the highest internet-related revenue streams.

However, we do accept the fact that this information is constantly changing (we had to replace a few companies due to various reasons (even bankruptcy) over the course of our month-long research). At the same time, we are aware that there could have been a few omissions and this is the price we are willing to pay to show the public the best available data there is on the web right now.

One last thing, we've put up our raw data on Silk, so you could play around with it as it is easier to visualize it.

[http://internet-hall-of- fame.silk.co/explore/table/collectio...](http://internet-hall-of- fame.silk.co/explore/table/collection/companies/column/country/column/industry/column/value/order/asc/country)

If you'd like to help us make it better, or contribute with information about your country, please contact us at email@example.com

\-- The World Startup Report Team

</comment><comment><USER16> The graph is misleading. South Africa Naspers owns Allegro (1st Poland). Secondly, Allegro, which is polish Ebay, has almost whole market share in Poland, Russia, Ukraine, Belarus etc. and possibly that contributes to Naspers value.

There is no nk.pl (polish facebook, 50% market share). It was sold for 200m a few years ago.

Hard to compare valuation of private and public companies, especially in different places. Better graph would with revenue, profit, growth.

<comment><USER4> Lukas, World Startup Report team here. We worked together with the Economist putting this together.

We did look at private/public AND also acquired companies (in case of Allegro).

Would you have a source for the acquisition information? Keep in mind that we looked at 3 companies per country in which case it could have only been coincidence. Our goal was to show the relative extent of what is possible in different countries rather than to provide an exact estimate of each company.

<comment><USER16> first google hits [http://techcrunch.com/2010/10/27/poalnds-facebook-nasza- klas...](http://techcrunch.com/2010/10/27/poalnds-facebook-nasza-klasa- rumoured-to-be-for-sale-for-e130m/)

Also onet.pl PLN 1.4 billion (€335 million).

[http://www.digitaltveurope.net/23115/tvn-in-move-to-sell- one...](http://www.digitaltveurope.net/23115/tvn-in-move-to-sell-onet-pl-to- ringier-axel-springer/)

</comment></comment></comment><comment><USER17> Wow, there is entry for Kosovo but not for Bosnia, Croatia or Serbia. They could've summed this whole region under Balkans.

<comment><USER4> Initially, we were aiming at covering 100 countries. However, due to lack of data from some countries we cut it down to 50.

We are working with our global community of contributors and we are looking for people who are willing to help us. If interested, just send us an email: email@example.com

</comment></comment><comment><USER18> For sweden I wonder why not Betsson is included? Its market cap is almost double that of Klarna, the current 3rd company? PaddyPower (another online betting company) is included for Ireland.

It might be more missing, but this was easy to spot since Im both swedish and very familiar with Betsson.

</comment><comment><USER19> The source is here, with the raw data linked at the bottom of the page.

[http://www.worldstartupwiki.org/page/Internet_Hall_Of_Fame](http://www.worldstartupwiki.org/page/Internet_Hall_Of_Fame)

Also answers the question I had about how they figured out the valuation of non-public companies.

> Valuation data comes from: stock market data (highest point in the history > of the company was selected), acquisition value, valuation at the latest > round of investment, or, as a last resort, a guesstimate based on revenues > and industry.

</comment><comment><USER20> Only 4 countries from Africa are listed , South Africa , Kenya , Algeria and Ethiopia , I don't know how they acquired such data , but I can assume the data is not accurate about the companies listed from Algeria (companies I know). Also some big African market are not listed : Egypt, Morocco, Nigeria. Or is it that the internet companies of these countries are many small companies that compete and do not monopolizing the market?

</comment><comment><USER21> I was surprised to see Chile and Peru so far below Argentina. All the news pieces that I see make Argentina sound like a communist dystopia.

Anyone know whether the Startup Chile program (where foreign startups basically get a cash handout to physically relocate to Chile) is likely to have an impact on this chart?

<comment><USER22> Argentina is indeed a strange case, a capitalist society coexisting with a socialist trending communist government.

In practice, most companies manage to navigate ("hack" :) ) the increasingly ludicrous government impositions, and most know (or hope) many will be lifted once the government changes hand (or another crisis explodes, which doesn't seem far off).

Some do quit, it was interesting to read about the entrepreneurs behind Wash.io having started a company in Argentina before, and quitting because it was so much work for so little benefit:

[http://nymag.com/news/features/laundry- apps-2014-5/](http://nymag.com/news/features/laundry-apps-2014-5/)

</comment></comment><comment><USER23> What factors are needed for a country to have start-up success. We know SV comes from defence money, but setting that outlier aside, what's the winning formula?

China's success would suggest that a huge talent pool and protectionism towards the big US internet companies is a winning move. Anything else?

</comment><comment><USER24> Google cache link: [http://webcache.googleusercontent.com/search?q=cache:3TBNlgP...](http://webcache.googleusercontent.com/search?q=cache:3TBNlgPN0XMJ:www.economist.com/blogs/graphicdetail/2014/07/daily- chart-6+&cd=1&hl=en&ct=clnk&gl=us)

</comment><comment><USER25> For the people missing one or two of the top three for each country, they are underneath one of the others because their data points very close with similar valuations (Facebook and Amazon in US).

Use the nifty filter buttons at the top of the graph to see first, second and third companies separately.

</comment><comment><USER26> Living in Ottawa (Canada), I was surprised to see Shopify at no.3 with a 1 billion dollar valuation.

</comment><comment><USER9> Somehow, Nigeria didn't make the list.

[http://arstechnica.com/security/2010/01/victims- lost-93-bill...](http://arstechnica.com/security/2010/01/victims- lost-93-billion-to-419-scammers-in-2009/)

</comment><comment><USER27> Seems like registration is required. Anyone have a registration-free method for viewing?

<comment><USER28> Incognito mode

</comment></comment><comment><USER29> Side note - I was surprised by the number of trackers that ghostery showed on the economist's site! [http://imgur.com/LftipWr](http://imgur.com/LftipWr)

</comment><comment><USER30> "United Kingdom" seems to be listed as "Britain".

</comment><comment><USER31> Shapeways is 2nd in the Netherlands, ahead of Booking.com. I have to say I'm quite surprised; I knew 3D printing was taking off but I didn't know it was that popular.

</comment><comment><USER32> I don't know whether to depressed for Canada or not given some of the other countries relative performance. I didn't expect Argentina to be so close though.

</comment><comment><USER33> I am glad The Economist did the datab visualization in log scale. Otherwise, US and China would be so dominant rest of the countries would be impossible to see.

Very cool data indeed.

</comment><comment><USER34> To bad most Belgian companies move immediatly because of The high taxes.

EG. Drupal moved.. That would probably a top 3 company :-)

</comment><comment><USER35> Log scale seems a bad choice. (Did you gather that US companies exceed the value of all others combined?)

</comment><comment><USER36> There are only 2 companies for a few countries, so that's not "three biggest".

<comment><USER37> Looks like there are only two internet companies in USA

<comment><USER38> There's like half a pixel you can hover over to the left of Amazon which shows Facebook.

<comment><USER20> works only if he have a retina display!

</comment></comment></comment></comment><comment><USER39> Cool India at #3 with Flipkart. Quite a long way away from US n all though...

</comment><comment><USER40> what the hell is a internet company, I could not find a explanation?

For example, in denmark the largest company in their chart is unity. Thats a gaming framework company, not really a internet company.

</comment><comment><USER41> Surprised that Facebook doesn't make it to the top-3 in the US

<comment><USER41> My bad... it actually comes in at #3 and is hidden under amazon. You can filter using the legend to see it.

</comment></comment><comment><USER42> Not exactly each country. Mine wasn't there.

</comment><comment><USER43> Where is Austria?

<comment><USER5> Grexi -

As mentioned in another thread, The World Startup Report team aimed for 100 countries for this research, but realistically we were able to only get good data for 50 countries for this research.

If your country is not on the list, and you would like to join us for the next World Startup Report research as a representative for your country, please email us: firstname.lastname@example.com

We'd love for your help to participate in this community research!</comment></comment>


Remote Work: Why Virtual Work is better than offices - <AUTHOR> http://blog.venturepact.com/3-reasons-why-virtual-reality-will-kill-the-office/

<comment><USER2> In fact, I have a question about running a remote team. How to train new staff in a remote team? I mean for those don't never has experience to work remotely or may be a newbie for the industry.

<comment><AUTHOR> Hi Ben Venturepact focuses on outsourcing work and remote work. Please visit our blogs on exact steps on how you can learn to manage a remote team in the most efficient way Infact they have free guides which give you the ins and outs of outsourcing and remote work - resources.venturepact.com

<comment><AUTHOR> Their blog is blog.venturepact.com

</comment></comment></comment><comment><USER3> " loneliness and social isolation is eradicated."

Your product _eradicates_ the sense of isolation of lacking physical presence?

<comment><USER4> How they'll deal with lack of bandwidth for online meetings will be interesting too.</comment></comment>


Show HN: NGS – programming language intro documentation feedback wanted - <AUTHOR> I'm working on NGS for several years now. It's a new shell (in future) and a programming language focused on systems engineering tasks. The next milestones are documentation and packaging. The documentation is almost ready. I would like to get some feedback on the language introduction documentation: comments here, github issues, and pull requests with fixes are all welcome.
https://github.com/ilyash/ngs/blob/bf1aef195ace588e2d44a648a... <comment><USER2> Here is a serious question I've been wondering about for a while:

Is there any real compelling need for shells to support both a CLI (Command Line Interface) and a scripting language?

As (I assume) most shell scripting languages support #! as the first line of their scripts, why not develop a pure CLI that has no native scripting language?

Edit: to be clear I'm not suggesting the OP (Original Poster) do this, but rather that they need not feel they also need to develop a CLI as well.

<comment><AUTHOR> Here are my thoughts:

You start with a simple CLI, then you figure out you can't do much without variables, ifs and basic loops. At this point you have a language with ugly syntax and problematic semantics because it was never intended to be a language. Then you try add more features (because people a stretching the limits of what is done with the CLI) without breaking anything. This is hard and has even uglier syntax. Not mentioning names here :)

CLI support is needed in NGS because in practice many scripts begin as few lines that you typed in and then copy+pasted to a file. I want to support this mode of work.</comment></comment>


Google shaking up earthquake searches - <AUTHOR> http://googleblog.blogspot.com/2009/03/shaking-up-earthquake-searches.html <comment><USER2> Neat. The Pacific Rim of Fire is such a hotbed of activity:

[http://maps.google.com/maps/ms?hl=en&gl=us&ie=UTF8&#...
Just wish I could have figured out how to get the little markers to be different colors for earthquakes and volcanoes.</comment>


Skype IP Lookup - <AUTHOR> http://skype-ip-finder.tk/ <comment><USER2> Ok, so I'm develop this.

It based on deobfuscated Skypekit runtime that write clear debug log.

Wrapper just make vcard refresh from p2p skype network and then parse debug log.

Here is the sources of python wrapper <https://github.com/zhovner/Skype- iplookup/>

<comment><USER2> Lol, skype banned my account.

<comment><USER3> Why banned?

<comment><USER4> Why do you think? This probably violates a _few_ terms of use.

</comment></comment></comment></comment><comment><USER2> It is work for you?

<comment><USER5> Please don't downvote this. This is the actual developer asking for failure reports etc. English is not his first language, either, so please don't downvote because of brevity or poor grammar, either.

<comment><USER6> English may not be his first language but he seems to know the basics. <http://i.imgur.com/ADxK3.jpg>

</comment></comment></comment><comment><USER7> Skype is at its core a p2p idea, so this is expectable. That's sort of the same thing that was done for bittorent users, except with a single centralized authority.

The interesting thing is that they do this without making a call. They only request contact information. This could be avoided.

Skype can mitigate this, but in the end, there is little more to be done. If you want a p2p network where anyone can be reached, at some point, you _will_ need ips.

<comment><USER8> What they could do is have contact requests go through Skype master servers, not p2p, that way you could only look up the IPs of people you are connected to. But is it a big enough issue that they will make such a big change? I doubt it - and I'm not sure they ought to have to do it, either.

<comment><USER9> Yes there would have to be master servers to close this hole, but I can't imagine how it can be done without everybody upgrading to the new client, so we can assume that every Skype user's ip is known or will soon be known. The current state will last for a while.

You don't have to be even logged in for this to work(!) according to some already published research.

</comment></comment></comment><comment><USER10> Really scary.

I wanted to see if i could find someone. Went onto twitch.tv. Picked a random stream. Got email. Looked up Skype id from email. Searched for skype id which gave me the IP and the small town where they currently reside.

Its worrying how easy this makes it to find someone.

<comment><USER11> Honest question, why is it scary?

My IP resolves to a location ~20 miles away. I don't see why having a Skype contact and knowing a 20 mile radius where they live is anything to worry about?

<comment><USER12> Most residential internet connections don't have any sort of DDOS protection, so privacy issues aside, at the very least you are open to a simple denial-of- service attack. This was a huge problem for the popular progamer "Destiny" in the Starcraft 2 community.

<comment><USER11> So is it also really scary that the mods/admins on the Starcraft 2 forum could also see his IP address?

The risk of being DDOSed when you share a contact on Skype and they find out your IP address is hyperbole.

<comment><USER12> There is a pretty substantial difference between a few Blizzard employees knowing your IP address and the entire public knowing your IP address.

</comment></comment></comment></comment></comment><comment><USER13> Here [1] is an interesting paper regarding P2P networks and privacy --- "Exploiting P2P Communications to Invade Users' Privacy"

[1] <http://cis.poly.edu/~ross/papers/skypeIMC2011.pdf>

</comment><comment><USER14> Not sure why people are surprised by this.. what did you think P2P meant?

<comment><USER15> that calls/communication would be p2p (direct connections) but not that looking up my nickname would disclose my current ip.

</comment></comment><comment><USER16> Could you somehow scrape all users and get an IP address -> skype name mapping? You could then know the Skype usernames of all visitors to your website.

<comment><USER2> No this not possible. Only skypename -> IP, and only email -> skypename. You can parse whole skype network and store all IP's if you can handle so many data.

</comment></comment><comment><USER17> Cool, my router lacks decent DynDNS support, but I have skype signed in at home, so I can always check what my IP is and VNC myself in :D

</comment><comment><USER18> If you're not currently logged in it still discloses the last IP you used. I can't think of any good reason for it to do that.

<comment><USER19> It doesn't work if you're not logged in.

<comment><USER18> I was logged out for over 5 hours when I tested it and it showed my IP.

</comment></comment></comment><comment><USER15> [http://skype-open-source.blogspot.de/2012/04/skype-user- ip-a...](http://skype-open-source.blogspot.de/2012/04/skype-user-ip-address- disclosure.html)

</comment><comment><USER20> So yeah, this has me more than a little perturbed. I generally don't have a problem sacrificing some privacy in return for functionality (the terms of service of several popular social networks come to mind), but this... is a bit of a different situation.

Does anybody have a good short-list of Skype alternatives? I don't know that its possible for me to stop using it altogether, but I'd certainly consider cutting back...

<comment><USER21> I would point you toward Jitsi: <http://en.wikipedia.org/wiki/Jitsi>

But, it doesn't support the Skype protocol, and it runs on Java, with which some people have an issue (but also allows for cross-platform compatibility).

</comment></comment><comment><USER22> should be easy to do file sharing over skype when you have the receiver's ip and an open udp port through the firewall. maybe someone will release an app. can the mpaa sue microsoft?

</comment><comment><USER23> Something worth 8.5 billion got to be a little more secure.

</comment><comment><USER24> Any insights into the exploit? Obviously the bug here is that they got the IP without any confirmation from me; ideally Skype should be popping up the "new buddy request" dialog, but it's not.

So is this a fixable leak, or something core to the protocol (i.e. do you request a buddy P2P too?)

</comment><comment><USER25> It's interesting that I can lookup people at my company who are behind the same connection that I am, but my account doesn't give away my IP. They also seem to get a lot more SPAM calls whereas I get fewer. I wonder if it's a privacy setting that I setup in the past or just the fact that my account is older.

Either way, it's great to know that this is possible.

</comment><comment><USER26> Reasonably impressive and scary.

<comment><USER27> Yeah, now you can obtain an IP by name by searching for their name in the contact search of skype to get the username, then using this tool.

<comment><USER2> Search by email also work.

<comment><USER27> This isn't exactly patchable by skype, is it? Obviously skype could turn off some printfs from the log, but the fact the client needs the IPs and Ports to attempt connecting locally, and then over WAN, makes me think that a tool like this can exist forever.

</comment></comment></comment></comment><comment><USER28> That's why Google didn't bought Skype, their P2P is not state of the art. Your client is also a server for someone else, they obviously need your IP address and a proxy would not reduce traffic for Skype.

Why the heck did MS pay so much for it?

<comment><USER29> > Why the heck did MS pay so much for it?

Skype has a huge userbase. They can always migrate that userbase to a different technology later if they think it's worth it.

</comment></comment><comment><USER30> it even show my local 192.168... weird

BUT HOW?

<comment><USER2> Skype announce both your IP's into network.

<comment><USER19> Presumably for LAN efficiency? If you have two people on LAN using Skype it goes via LAN IP?

</comment></comment></comment><comment><USER31> This is more informative description. [http://nickfurneaux.blogspot.com/2012/04/skype-ip- addresses-...](http://nickfurneaux.blogspot.com/2012/04/skype-ip-addresses-in- clear.html)

</comment><comment><USER32> Using the IP is for instance possible to locate, roughly, where the user is, that is already a big privacy concern...

<comment><USER33> Skype is P2P. No way to fix it, you can only hope to mitigate it.

</comment></comment><comment><USER34> "This domain and website have been suspended because of abuse or copyright reasons."

</comment><comment><USER35> Can it be used like the invisible scanner for Yahoo Messenger? (see who's invisible)

<comment><USER2> No, after disconnect it still show IP few hours

</comment></comment><comment><USER22> this is not an "exploit". as the man says, your IP is being sent out to the network. others on the network are using your machine's resources. that's how skype works. he's just showing you this fact.

</comment><comment><USER36> technikboy04

</comment><comment><USER37> Well this is scary for Skype users and very embarrassing for Skype developers/owners aka. Microsoft.

I sure hope they fix this before they get sued into oblivion for this blatant privacy breach.

<comment><USER38> Why is that? You get the same thing with emails / IRC / some IM protocols / VoIP. What's so "scary" about someone knowing your current IP?

I mean - it's one thing if Skype was advertising itself as a privacy protecting, identity hiding service... but they don't. They provide convenient A/V connections.

<comment><USER39> Let's say A wants to find B's IP address. In the case of email, A would need to trick B into replying to an email (and also use an email service that adds the client IP header). In the case of most IM servces, B would need to accept a friend request federated from a server. If I'm understanding this correctly, with Skype, A merely has to query B's status to get B's IP address.

<comment><USER40> In the case of email, the easiest way to get a user's IP is to have them load an external image.

<comment><USER41> Not true if you use a secure/intelligent email client, like Gmail. It will prompt you with a yellow bar above the email before loading any images.

It also implies that they'll open the email, which most average people won't do unless they know the sender or are otherwise expecting an email.

</comment></comment></comment></comment></comment><comment><USER42> I am firing our security consultant for not telling us about this. Our entire organization is exposed. We have just learned that the man behind Skype is the same person who was behind Kazaa. And he knew this all along.

<comment><USER43> Or maybe you could resign for being an uninformed CIO. P2P is 1990s technology.</comment></comment>


Flutter – Build native apps for mobile, web, and desktop from a single codebase - <AUTHOR> https://flutter.dev/ <comment><USER2> Can't wait for this to be deprecated in a few years. As a mobile dev, this doesn't solve any problems for my team. Perhaps another victim of Google's constant flow of ad money so projects don't need to actually prove their value.

Any cross platform tool like this is almost immediately out of date as iOS, Android, and the web continue to move forward quickly. It just doesn't make sense.</comment>


The Economics of Clean Code - <AUTHOR> https://frederickvanbrabant.com/post/2020-02-07-the-economics-of-clean-code/ <comment><USER2> Most people have never worked on a long term project applying SOLID principles and DDD and therefore cannot fathom how efficient a team can be when it is applied.

Have you ever worked at a company where you join and there is a God class (or two or three) and none of the business people and developers talk the same language. The code does things but you couldn't in a million years guess why or how you came about it without having a huge history lesson on the company and its codebase.

Now imagine how amazing it is to join a team where efforts are constantly made to name meaningfully and that there aren't 8 concerns mixed into a single god class. New devs join and they immediately understand what's happening in the business because the code translates directly to the reality. They don't have to learn two languages (business and dev speak).

Now imagine that dev having to add a grandfather clause to an old account. Where should he put it in the `Account`, `Plan`, `User`, `Subscription` or `Business` class? When the distinction between concepts are clear in the code it's easy to determine where the code should go and where logic of different kinds should reside.

<comment><USER3> I worked for several years on a team that championed SOLID and DDD, and while it was better than the multi-process, shared-memory, stringly-typed horror that it replaced, efficient is not the word I'd use to describe it. The single responsibility and open-closed principles created a Cambrian explosion of tiny classes and the ratio of boilerplate to interesting code skyrocketed.

Maybe we were just interpreting things wrong, but it was very difficult to agree on what those principles meant in practice.

Liskov's substitution principle is also rather complex. I'm not sure I correctly understand it, but I think it is widely violated even by good code. If I have it right, the principle means the result of your program cannot change, no matter what subtype you substitute.

<comment> safety-third LSP just says that derived classes should behave similar to their base classes.

        class Base {
            virtual int size() { return size_; }
        ...
        class Derived : public Base {
            virtual int size() { return rand(); }
        ...

Here we see an issue. Derived is overriding Base's size method, which has a straightforward implementation, with something wild. If a Derived is sent to a method expecting Base-like behavior, something bad is going to happen.

Derived should act like a Base with slightly different implementation details. This is all LSP is. It's a fancy phrase for a very simple concept.

<comment><USER3> Not just similar. All provable properties must be the same.

As I understand it, Java's Object.toString() is an example of an LSP violation because different subtypes of Object return different strings.

<comment> safety-third No, it is very much LSP compliant. The purpose of toString() is to give a string representation of the object. Most overloads of this do exactly that.

An LSP violation of toString() would be something that returns a string that doesn't represent the object. If you were to return the current time as a string for an object that has nothing to do with time, that would be an LSP violation.

<comment><USER3> I'm very confused. The definition of LSP is:

> Subtype Requirement: Let ϕ(x) be a property provable about objects x of type > T. Then ϕ(y) should be true for objects y of type S where S is a subtype of > T.

Why is the exact value of the string returned not a provable property? And, to your example, if a provable property is that the returned string represents the object, how did you know it was a provable property? And how do you prove it?

The rule seems very formal, but your notions seem very informal, and I don't know how to reconcile them.

<comment><USER4> With the caveat that LSP is still violated in the given example, I think it's important to note that when talking about "all" instances of a given class you might not have much information about the exact value of a string.

Their notions are informal, but on some level it's just the experimentalist's interpretation of LSP -- much how some physicists (loosely) argue that if you can't make measurements to prove a theory wrong then the theory doesn't matter, it might similarly be reasonable to ignore LSP with respect to properties that you don't care about (where that definition is fuzzy and hard to pin down but should represent a definitive class of things within any given single program). E.g., most people don't rely on toString() doing much more than giving a bit of human intuition into the type and properties of an object, so any implementation which respects that behavior satisfies a realist's LSP.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I think the problem is that it's difficult to articulate what clean code "looks" like. Unfortunately, this is precisely the medium ("looking") through which many developers learn best. Yes there are books, and rules, and this, and that explaining which properties clean code must exhibit, but for many these rules are simply too abstract when the rubber meets the road. So we start to emulate the "look" of clean code (example are everywhere!) instead of the intent. And you know what happens... a mess.

For those of us who have finally made it to the other side of the above process, clean code is more of a "feeling" than a "look". Of course we can point to pain points in the code and explain why this or that might need to be refactored in order to be more "clean", but our spidey-sense is our guiding light _not_ some internal catalog of "unclean" code snippets to avoid.

For me the most important part of writing clean code is making sure it can be understood (which means it can be changed). And to this end I think Flow Of Control tends to be an important consideration because I have realized it's less about "looking" at the code and more about "seeing" the program.

<comment><USER6> Spot on. Too many people think of clean code as adherence to some arbitrary rules of the method length or stylistic concerns. In reality it's all about reducing the complexity to the absolute minimum and the flow of control being as flat as it can be.

</comment></comment><comment><USER7> There's a difference between a super-experienced, super-senior developer "keeping their code clean" and a junior one doing the same thing.

Juniors just thrash around from one design pattern to the next, never really achieving anything other than learning what doesn't work.

A much more experienced developer will have an understanding about what clean code looks and where it's necessary. They will recognise when there is a huge amount of uncertainty, for example, so spend less time writing loads of fantastic code before they've firmed up the requirements.

So it really depends on the nature of the project and who you have on your team as to whether you need to worry about 'clean code'.

<comment><USER8> I've had a few arguments with junior developers about clean code. They want to hyper-abstract everything because that's what they learned in school.

Then I point out that, if they just refactor to a single method that's 20 lines, they can read it from beginning to end and it makes sense.

<comment><USER9> I assume what you're arguing against is using small functions with descriptive names as documentation. If that's the case, I think the term "hyper-abstract" is a massive overstatement.

In any case, I think the core issue is really how much faith you have in the proficiency of your teammates. If you can't trust the developers in your team to actually only write functions that do what they say in the name (without nasty side-effects), then I can see why not having all the logic in front of you in one giant function can be annoying - you have to jump into all the definitions and manually double check to be sure what's happening.

<comment><USER10> When I read it, what I thought of as 'hyper-abstracted' is more the mistake of building a set of generic objects to then compose your functionality out of, rather than just composing your functionality out of direct function and method calls.

I've been thinking about this a lot lately actually. At some level, when you create a hierarchy of classes and/or a collection of objects, you're deciding that some logic is best implemented with that set of objects and the way they talk to each other as the fundamental building block. It's very much like designing a language; you're designing the lego bricks and then putting them together to make something. The hope is of course that you're going to be able to use those lego bricks in other situations by composing them in different ways.

Where I think we can go wrong is in getting stuck on the one abstraction type; particularly in this case it's falling into a mindset where the only way to compose software is by comnposing objects. Yet at some level, you're going to be composing your logic out of function calls (or what essentially look like them). You need to know at what level you're building and viewing the system. Sure, you can build a set of objects that you can then use to build some other logic that's implemented by their composition and collaboration, but sometimes maybe all you need is a method that implements this logic more directly, using function calls and their results. From far away, it's OOP with objects collaborating via messages; from up close, it's just procedural (or even functional) code with restrictions on the state it has access to.

This mistake I think is embodied in a sentiment I used to pick up on a lot at the tail end of my CS education (around the time Java was really starting to come into fashion). It was a sentiment I'd describe as something like "OOP has superceded procedural programming". To which I'd always want to ask the question "but what about inside your objects?"

<comment><USER11> I think it's more about recognizing that structure is like cement in that once it's laid down, it holds things in place and can be a pain to pull up and change.

For this reason, it's better to prefer as little structure as you can reasonabley get away with, not more. Now, this is a nuanced view, a senior person can absolutely insist on more structure up front and avoid issues, but they'll have a good reason for doing so that doesn't involve "it's clean code".

But in general, you want as little structure as you can get away with. It's a lot easier to change something that hasn't been abstracted to death with guesses about what the future is going to hold.

I think part of the issue is a perspective thing. If I spend a day throwing something together and it sits for 6 months, great. I got ROI from that code. If 6 months in new requirements come in and I decide I need to rewrite it, who cares. It worked day in and day out for 6 months off a days worth of effort.

Too many people view code as needing to be long lived and unchanging.

<comment><USER10> I totally agree. It's hard because management relentlessly pushes you to get things 'done', to move onto the next thing. That thing is done already, why do you want to touch it? Why is this thing going to take so long to do, didn't you do those other parts already? Sure, you can have some maintenance time later.... Maybe, I guess. No sorry this new feature is a higher priority. Also why aren't you quicker?

There's a lot of social pressure that pushes people to view code as a thing that's either done and permanent, or not done, unfinished and therefore unacceptable.

</comment></comment></comment></comment></comment></comment><comment><USER12> From my experience a good thing to do is to set up strong static code analysis (like eslint, TypeScript strict mode, IntelliJ inspections, Sonarqube, ...) when the project begins. This helps to avoid some endless discussions and some bugs. Another upside is, that the rules are enforced automatically what is better than to remind your colleagues each and every time when the break the rules. With a set of rules written down as a config file for a code analysis tool, there is a definition of clean code (even if not a complete one).

Starting with overly strong rules and relaxing them later is better than starting with loose rules and tighten them later, because it would require much refactoring to introduce a new rule, whereas dropping a rule is a thing of a few seconds.

</comment><comment><USER13> Keeping code clean doesn't mean architectural perfection. It means architectural consistency. So, if your controllers talk directly to your database, great! Just make sure it's easy to do and doesn't involve too much boilerplate.

<comment><USER14> Clean code means architectural perfection where it matters. Should the controllers talk directly to a database or have an abstraction? I can make either argument, which is right depends on your problem. Plan to switch databases (for testing, you don't trust your vendors, or your customers demand different ones), then the abstraction is required. If everything else is locked into the 40 year old database (which isn't normalized because that concept was just an academic idea with no real world use back then) then there is no way you will change anyway so maybe you don't need it. Or maybe it is the other way around - good sql "should be" portable to any database, while the non-normalized database needs the abstraction to ensure all the constraints are kept sane. I just put forth 4 different arguments for a simple choice, but before you decide which is right for you need to figure out if this isn't some other consideration my arguments didn't cover.

<comment><USER15> There's also more than one way to carve up the architecture. I do think that we humans need slices in order to mentally compartmentalize and be able to work with manageable bits. But there's no reason I can think of to systematically prefer vertical slices or horizontal slices.

Horizontal slices give you something like the classic monolithic three-layer architecture, and vertical slices give you more of a component-based approach.

The big trick is to know which approach you're using, and stick to it. In a layered architecture, you absolutely do not skip layers, but it's generally fine to have one layer talk to pretty much any part of a neighboring layer. In a component-oriented architecture, it's really not a big deal IME to let controllers talk directly to the database, just so long as you never let one component directly access another component's schema. You get data out of other components by talking to their public interfaces.

As long as you color within those lines, things won't get too tangled. If you're really worried, I suppose you could try doing both vertical and horizontal splits, but my impression is that that always places the application at risk of collapsing under the weight of its own bureaucracy.

<comment><USER14> I generally think you have several levels of architecture.you might go vertical at the high level and then delegate each slice to more junior architects who do different things in their slice. Of course this depends on the size of the project too.

</comment></comment></comment></comment><comment><USER16> I used to think that clean code was short lined straightforward functions in a nlayer app with logical services ( in general)

I can write decent code that is easily readable with that flow.

But ever since I integrated DDD and event driven design for splitting up modules for their bounded context, the old code seems not that clean anymore. And I love it, although it caused a lot of refactoring and it is slower to develop, aside that... the code became way more flexible / future- proof/performant.

Even integrating with legacy code-bases is more clear and straightforward. I recommend every Junior to read "preserving domain integrity".

Ps. You don't need 4 layers for every bounded api, just use it, when it's appropriate ( the smaller the logic, the less you split up) and if you need a quick intro then DDD quickly is ok.

<comment><USER10> Can you recommend any open-source codebases that are designed around this style of architecture? I'd really like to see what a good example of this looks like.

<comment><USER16> Mmm, i would say eshoponcontainers ( Microsoft/microservices ) or Pacco ( devMentors).

Both are for microservices, but just replace microservice with module and it's the same thing. Just less of an devops overhead since it's in one application.

Please take time to familiarize yourself with the concepts first.

Domain events ( = broadcast important changes. Eg. PayPalPaymentConfirmed, CustumerEmailChanged ). Tip: this is important for having a lovely coupled legacy integration ( eg. For an anti-corruption layer )

Cqrs instead of inserts and edits in one IService/ILogic.

Handlers and Mediator ( c# library)

Events for combining logic ( something like Nats supports 5 million messages/ second)

correlationId and excellent logging should be your number #1 priority.

DDD is better for a NoSql backend than a Sql one. Although I prefer MartenDb though, using it by default as NoSql ( BSon) and using duplicated properties for performant searches, so I don't need a Search Service, NoSql allows you to quickly store your Bounded Contexts.

Accepting duplicate data on different domains and handling it with replaying events.

Database per service ( or at least table), do not integrate as you would do before in SQL.

Clean architecture is a good fit ( domain.core, domain.infrastructure, domain.application and if you want a microservice, add domain.api )

Event Storming for discussing new projects with domain experts.

If you want to read about it, try DDD quickly, it's quick to read.

There is one downside and that is that there are a lot of patterns. But coming from a guy that hated the word ( but applied the concepts), it becomes very quick to communicate with other teams and discovering their entire architecture within 10 minutes.

That's just my 2 cents though, since it's literally adapted to fit my needs.

<comment><USER10> Awesome, thanks for the recommendations.

<comment><USER16> Your welcome, minor typo though

lovely coupled legacy integration, had to be loosely coupled :)

</comment></comment></comment></comment></comment><comment><USER17> This article sounds much more clever than it actually is. Admittedly it does take time to actually know how to write clean code, but if you can, I'd argue it takes less time to write clean code than anything else. Especially if you have a great senior engineer who can architect all of the inheritance and fan out the implementation of the adapters to more junior people.

</comment><comment><USER18> The problem with the word "clean" is that it is a very ambiguous term.

It can refer to indentation, identifiers, coherent types, cyclomatic complexity, encapsulation, coupling, modularity, configurability...

<comment><USER19> In a sense these pertain differently to clean code only by degree. Poor indentation is some dust on the six windowsills in your home; small issue, easy to address. Poor coupling for a large, long lived project is guano all over the carpet.

The ideal clean code of course has proper indentation, self-explaining identifiers, coherent types, minimal cyclomatic complexity, perfect encapsulation, perfect coupling, perfect level of modularity and perfect level of configurability. To which degree we want to achieve the ideal and to which degree these individually factor into it varies from project to project.

</comment></comment><comment><USER20> I don't feel this article brings too much new information to the clean code discussion table. As always, the advice is to strike a balance according to your best judgement.

The summary says it well:

> don't over-invest (financially and technically) but also don't try and > outrun the liabilities

</comment><comment><USER21> I think the author mistakes messy code for technical debt. Even with clean code, you will have technical debt because as the business evolves, your code becomes stale. For instance, your UI might start out simple so you start with just jquery. The code is clean because you didn't write crazy long methods, etc. Business keeps adding features to the page and after a while jquery becomes unmanageable. Now you have technical debt.

<comment><USER22> Yeah.

I think people conflate clean code (readability) with code refactoring. For the sake of readability I don't think having clean code matters much... but refactoring I think can be important depending on the complexity you're dealing with. But even then, I'd only worry about refactoring when it comes time to worry about it. Usually I find that's when the scope of the software grows by some factor, or when you foresee it growing by some factor and you find it cumbersome to add simple features, yet a simple refactoring would make the addition of features much easier.

So IMO, the importance of "clean code" depends on the complexity you're dealing with. Always having clean code just for it's own sake seems unnecessary...

<comment><USER19> Maybe you experience that conflation of concepts because other people have a different idea of what clean code means. IMO readability is just a side effect of clean code, and refactoring is part of the process of achieving it.

</comment></comment></comment><comment><USER23> I think a lot of people forget the last part of, _ship the first thing that works_ : it has to "work" for some reasonable expectations of fitness for purpose.

Our short iteration times in software are the envy of many engineering professions but it's the fitness for purpose part that nips some of us.

I don't necessarily believe _Clean Code_ is the silver bullet to avoiding difficult to maintain code but some kind of standard is important. There are principles and patterns of design that are known to be effective which can be useful in guiding a project through the tactical phases from cascading poor short-term choices that lead to long-term technical debt.

The _economics_ seem like they should include many more factors. There's a time and a place where the effort for a correct-by-construction approach costs too much and the risk tolerance of introducing errors or incorrect behaviors is tolerable to the people funding the project. In such cases it's _time to market_ we care about and nobody is going to lose much sleep if you lose 0.0005% of your SLOs over a 3 month window.

</comment><comment><USER24> > But I'm sure you would agree that before you can have a maintainable > product, you should first strive to have an actual product.

Actually, no. The goal is to have a sufficiently _profitable_ (or for non- profit use cases, worthwhile) project.

It is entirely possible, easy even, to ship a product and gain revenues, but in an unsustainable way that is a net negative to stakeholders, users, or other relevant parties.

In the case of "unclean" code, it might not be as bad as ignoring significant security considerations, but it could sink entire business plans, causing negative side effects for people you are notionally supposed to be looking out for: teammates, partners, collaborators, etc. In a for profit business, that often involves wasting investment in the process.

</comment><comment><USER6> The problem that I observe at my work place is that the spaghetti has moved a level up. The "code" which sits inside individual microservices is mostly fine. However the topology of how those interact is a convoluted, intractable mess.

<comment><USER25> That's just taking the trash from under the sofa and hiding it under the carpet. That happens quite a bit

</comment></comment><comment><USER26> One of the things that has almost disappeared from these kinds of discussions, is pedantry and feuding over formatting and naming styles. The ubiquity of automatic linters has saved millions of hours of useless bikeshedding.

</comment><comment><USER27> I'm not sure I buy the "clean code" dogma anymore. If the purpose is to keep the code clean for the sake of the language I think you have missed the point. I think the code should be clean with regards to what it is trying to solve not wrt what language or style you have chosen. Code that is obvious what's business solution it solves, no matter how messed up that case is is a win.

I think it has conway's law written all over it. And as soon you try to fight that you have lost that battle.

Code for the sake of Keeping code clean is wrong, but pretty.

</comment><comment><USER28> PHP community is here a funny example. Basically an example what happens when you bully coders that their languages sucks. They went for fullblown corporate style clean code rules (slow), for a language used in places where speed is crucial. This language currently is completly suboptimal for business if you apply clean code rules.

I've worked in 2 companies that used PHP, where php programmers formed a "clean code religion". One company died, another lost a lot of money. It was directly connected to the clean code rules - they went over the deadline, by a lot, they created overbloted code(but ok with the rules) that was pain in the ass to work on. "Code is documentation" was repeated like a mantra, which is a pile of bullshit by the way and is not making stuff easier (and I ended up with my own docs anyway). Clean code rules are cool if you don't know what you're doing and you want to hide it. It's a way to say "its not my fault, look I followed clean code rules, my work if flawless".

And coders in those companies didn't even noticed that there is something wrong. I've noticed when it was too late. In the second company, on my last day (half the company was sacked cause client got pissed and cut the money), we where in a restaurant eating and talking about programming stuff. Guys (who weren't sacked) where discussing a new web page they where working on. The main frontend guy, said he spend 2 weeks perfecting a dynamic menu cause he had some problems with loading time. The guy was rendering the menu in JS, on frontend, record by record. I asked him "if making dynamic menu is such a problem, why don't you have it prerendered in a text format, and then load that text when page loads, you won't need to render anything?" He replied that this would be against the rules and the code would have to use hack or something. I don't know any fucking rule that wouldn't allow me to do such a thing. I recognize eyes of a fanatic when I see them, so I've shut up. They solved the problem of menu by displaying users a loading gif when the code waited for menu to be rendered

After that day I decided I wont do any PHP gigs anymore. Nor work with something similar in syntax to PHP.

<comment><USER29> It's not just clean code, it's also things like microservice migrations or complete rewrites (preferably in a trendy framework or language) that makes programmers think they finally have the solution to all _their_ problems (not those of the business, mind you), so they spend a bunch of time infrastructuring themselves down a hole they'll never escape, and bring the company down with them because they're "doing the right thing" or "fighting tech debt" or "breaking up the monolith".

Programmers should not have the responsibility to decide these things on their own; it should come from the companys risk assessments and help with the goal of the company, not the goal of the programmers (which is to put neat things on their CV.)

This is spoken as a programmer, by the way.

</comment></comment><comment><USER30> Part of the problem is that nobody agrees what "clean code" looks like. The only objective definition is "code that somebody else can understand as easily as if they had written it themselves". Which never happens.

Follow good rules of thumb like keeping methods short, reuse code rather than cutting and pasting, and write unit tests (and, of course, use spaces and not tabs). Otherwise, all code is as clean as all other code.

<comment><USER31> > Follow good rules of thumb like keeping methods short, reuse code rather > than cutting and pasting, and write unit tests (and, of course, use spaces > and not tabs). Otherwise, all code is as clean as all other code.

You can find people who'll disagree with you on every point in this list. So yeah, nobody agrees what "clean code" looks like.

<comment><USER15> FWIW, at least according to Hillel Wayne's summaries of the state of our knowledge on this stuff (www.hillelwayne.com), all three of those have been studied, and the only one that's been shown to be clearly beneficial is unit tests.

(Not TDD, mind. It apparently doesn't matter much whether you write tests first or second, just that you write them at all.)

</comment></comment></comment><comment><USER32> I agree, I tend to find myself assuming everything not "clean" is technical debt - putting things in these three buckets has helped (YMMV).

1\. If you don't have users, you don't have technical debt (you might have lot's of #2 though). You could frag the entire app and the only thing of value (not potential value) lost would be your job. Debt implies value was quickly received in exchange for a flexible re-payment schedule (of time in this case, not money); if the code is not actively being used to save/spend/gain some resource then that value exchange has not happened yet.

2\. Correct Code* that is unclean and could be improved in <= time that it took to write is just bad code. Fix this code now.

3\. Correct Code that is unclean and would take significantly more time to improve than it took to write is technical debt (but only if you have users). This is where a balance needs to be struck between business needs and development needs. Manage this code carefully.

*code that correctly implements business logic, incorrect code is always bad - no matter how long it took to write.

</comment><comment> awinter-py I mean, code _less_. I'm fine landing in 3k lines of garbage that makes perfect use of some great libraries and platform features. Much better that vs taking ownership of 30k lines of great code that duplicates a lot of stuff that should be imported.

Of course, more likely case is that bad code + bad factoring comes together

</comment><comment><USER33> The problem underlying is fundamentally a bargaining and expectations issue. Sorry for the plug but you should check out my post about time estimates: [http://kyleprifogle.com/dear-startup/](http://kyleprifogle.com/dear-startup/)

</comment><comment><USER34> > But I'm sure you would agree that before you can have a maintainable > product, you should first strive to have an actual product.

The assertion that proponents of clean code make is that the fastest way to the end goal (in the ~6 week window) is with high internal quality[1]. If your project is <6 weeks, then do whatever. If you think you'll be around longer than 6 weeks, then make it clean.

[1]: [https://martinfowler.com/articles/is-quality-worth- cost.html](https://martinfowler.com/articles/is-quality-worth-cost.html) \--> Not Robert C. Martin, btw.

</comment><comment><USER35> I have Malcolm in the middle look on it... (senior dev)

There is business reality - parents (expect miracles, but don't put enough effort pushing it to Malcolm, because he is smart) There is developers reality - Reese (they think everyone else is stupid but not them) There is testers reality - Dewey (they trust developers too much) There is customers reality - Francis (business had high hopes for them but it turns out they were wrong)

How does it come to clean code? In reality there is no clean code as we would like there to be. There is only messy reality. Uncle Bob is a salesman selling dreams and promises.

<comment><USER36> "In reality there is no clean code as we would like there to be"

Sure there is. You want clean code, here you go:

[https://en.wikipedia.org/wiki/Clean_(programming_language)](https://en.wikipedia.org/wiki/Clean_\(programming_language\))

</comment></comment><comment><USER37> Fancy title, with content everyone knows. Meh!

</comment><comment><USER38> Simple trade-off: the more "clean" your code is, the more it will benefit when others/future-you reads it. If it's a quick one-off or if it's just for you, the value of "cleanliness" is far less than the value of speediness and responsiveness to client.

</comment><comment><USER39> Has there been a post-2000 company that has succeeded with no one complaining about tech debt?

</comment><comment><USER40> Its likely wrong to apply a template Rule to every single project. For a small project, no this would not necessarily apply. An experienced lead knows When to apply what and not just go by single principles

</comment><comment><USER41> Cool metaphor of "well balanced and nutritional dinner" vs "fast food."

</comment><comment><USER42> "We are in too much of a hurry to do a good job."</comment>