Abandoned and little known airfields - <AUTHOR> http://www.airfields-freeman.com/ <comment><AUTHOR> "As a pilot, a particular interest of mine has always been the abandoned airfields that dot the landscape of much of this country. Both for their potential safety value to a pilot in an emergency, and also for their sometimes fascinating history, this particular topic has always held my curiosity. When I'm a passenger on commercial flights, I've always found myself looking out the window, constantly looking for airfields below. When I fly as a pilot myself, I've always tried to land at as many airports as possible, to learn a little about each one."—Paul Freeman, website creator</comment>


Meet the Law Firm That Acts Like a Startup - <AUTHOR> http://www.fastcompany.com/magazine/128/caffeinated-aggressive-amp-brash-esq.html <comment><USER2> Is this firm really acting like a "startup"? I'd say they're just acting "different".

* 100+ partners at $3million in revenue each? Not exactly bootstrapping (though it sounds like they used to).

* Working late hours? I highly doubt that's any different than any other group of business litigation lawyers.

* Agressive approach? Again, it seems as if they are known as more aggressive since they only do litigation.

* T-shirts, jeans, Starbucks in the office? Sure, that's a startup stereotype now.

I would argue that they're a highly focused firm that's a bit relaxed in their actual office environment, and a bit more collaborative than their peers. I don't think that's exactly acting like a start-up.

</comment><comment><USER3> In many ways I find this article both interesting and scary.

The author suggests that Quinn Emmanuel are shaking up the legal practice, but their method seems like a corporate version of the ambulance chasers methodology.

A no win, no fee approach seems to make law both more accessible and less accessible at the same time. The problem is it moves the availability of lawyers from something based on need and cost, to something based on chances of winning. Winning a case doesn't necessarily imply the moral imperative.

That said since they are doing solely corporate law this is less of an issue with me, and I'm very happy to see someone disrupting the legal profession.

Like YC's free legal documents for A-funding this kind of thing is probably a step in the right direction to make the law more accessible to smaller companies.

<comment><USER2> "the firm takes some cases on contingency"

The key word here is "some". Who knows what the real percentage is, and that is the number that correlates with bottom-feeder lawyers.

<comment><USER4> It says in the article, "Quinn Emanuel's contingency business makes up less than 10% of total hours..."

I don't think that qualifies them as seedy.

</comment></comment></comment><comment><USER5> [http://www.quinnemanuel.com/media/2078/blitz%20hyperlink%20c...](http://www.quinnemanuel.com/media/2078/blitz%20hyperlink%20cd%20item%2014.pdf)

It looks like the author of this _Fast Company_ piece lifted a lot of material from their _American Lawyer_ profile.

</comment><comment><USER6> the only way they are acting like a startup is cultivating an aggressive, edgy, hip culture. better example is a law firm that IS a startup: axiom legal (<http://www.axiomlaw.com>). backed by benchmark (kagle) and panorama. and yes, they too cultivate the edgy and hip.

</comment><comment><USER7> I read this article on a plane last week and it made me reconsider getting a J.D. (for 2.3 seconds, anyway).

</comment><comment><USER8> To me, a Law firm that has 3m revenue per employee sounds a lot like a symptom of a system that's broken.

A real startup, to quote PG, would be the law firm that turns this multi- billion dollar market (Im just guessing here...) into a multi-MILLION dollar market.

Disclaimer: I don't like lawyers.</comment>


Ask HN: How do foreign angel investors invest in Chinese companies? - <AUTHOR> Do you have any advice on how a foreign angel investor should proceed to invest in an early-stage Chinese company (first seed round)? Can you recommend law firms who specialize in providing legal advice for this type of situations? <comment><USER2> You might find some stuff here:

[https://forum.basic-capital.com/search?q=chinese](https://forum.basic- capital.com/search?q=chinese)

Disclaimer: I run the forum, but there has been a lot on conversations about china and investing

</comment><comment><USER3> I am Chinese, if you want invest in startups in China market, I can help you. Email: email@example.com</comment>


Prostitution: is there anything wrong with selling sex? - <AUTHOR> http://www.bbc.co.uk/guides/ztkpcdm

<comment><USER2> Is there anything wrong with trolling hacker news?</comment>


Rclone – rsync for cloud storage - <AUTHOR> http://rclone.org <comment><USER2> Reading the docs, this seems to be targeted towards personal data backups for individuals. References to photos, interactive usage, support for consumer cloud storage backends, etc.

Thus it surprises me that a tool for personal data backup on the cloud has a fair bit of community support (1651 stars on github) when the encryption features remain a vague notion after 4 years of development. Nor is there any recommended encryption workflow using an external tool.

Does our culture still find it acceptable that, in 2016, personal data, and almost certainly in many cases very sensitive private data, is being seen unencrypted by cloud providers?

I think that, while the norm is to not think twice about letting a private entity have practically unlimited access to your personal data, we as community need to focus on tools that keep an individual's data private by default.

</comment><comment><USER3> Any plans to add encryption?

<comment><USER4> It is on the road map : [https://github.com/ncw/rclone/issues/219](https://github.com/ncw/rclone/issues/219)</comment></comment>


Y Combinator's Paul Graham: We're Looking For People Like Us - <AUTHOR> http://techcrunch.com/2011/05/24/y-combinators-paul-graham-were-looking-for-people-like-us/ <comment><USER2> This is probably the single most discouraging thing I've ever read about startups, but at least it's honest. Entitlement? "Naughtiness"? I think after Google, the idea got out there that it's possible to succeed by just being _good_. Technically and morally. This sounds like a return to status quo. Not saying he's wrong. He's almost certainly right, it's just depressing.

<comment><USER3> Following all the rules does not make you a good person. In fact, rule following and obedience to authority is what enables large scale evil. See <http://en.wikipedia.org/wiki/Milgram_experiment> for a famous demonstration.

<comment><USER4> Conversely, breaking all the rules almost always makes you a bad person.

<comment><USER5> Nobody can ever break _all_ the rules - the laws of physics might have something to say about it.

If you limit your statement to "all the rules of the society in which you live", I'm not sure your statement is true. What do you think of Oskar Schindler? Womanizer, cheat, Nazi, fraud, and traitor. Yet he saved the lives of hundreds of Jews during the holocaust, and ended up as the hero of a movie.

</comment></comment></comment></comment><comment><USER6> It's interesting to see pg's opinion about what is important in founders evolve over the years. When I applied to YC in late 2008, I was told by alumni that YC was "looking for smart people." Although he's talked about discipline and determination as early as May 2004 in his essays those words were most commonly found next to the words "talent," "skill," or "smart," as if the two qualities were equally important.

Now it seems that YC has learned empirically that determination is the more important predictor of success (see intro to The Anatomy of Determination).

A concern for YC might be: with this new emphasis on determination, it might become the next thing applicants try to "fake" to get accepted?

<comment><USER7> Maybe they've figured out that there are plenty of smart people, but not as many truly determined people. Determination then becomes the limiting factor once smartness has been established.

<comment><USER8> This reminds me of Outliers when Gladwell talks about concert violinists.

"All of the violinists had started playing at around age five, and they all played about two or three hours a week during the first few years. However, around the age of eight, an important difference began to emerge in the amount of hours they each practiced. By age 20, the stars in the group had all totaled 10,000 hours of practice over the course of their lives; the "good" students had totaled 8,000 hours; and the future music teachers just over 4,000 hours.

What the research suggested was that once you have enough talent to get into a top music school, the thing that distinguishes one performer from another is how hard he or she works."

Being in Silicon Valley, I meet smart entrepreneurs all the time. Many of them come from places like Stanford. I think many pass the basic threshold of intelligence. In fact, this is more than passing considering that it doesn't take an elite education to create a good company IMO.

Obviously, not all these people succeed and so the other factor behind success is likely to be what you said: determination.

</comment></comment></comment><comment><USER9> > "YC has invested a total of around $5 million"

It's incredible to think of the value that has been added to so many companies for the price of a single large series A.

<comment><USER10> It's amazing how much you can do when you start unbreaking things.

Edit: That was excessively brief. So many parts about the whole investment cycle were broken. Some are marginally less broken now. Having a negotiation between a fresh engineering graduate who does not know what "pre-money valuation" means and the principal of a firm with 9 figures under management, and expecting that negotiation to produce an equitable or efficient outcome, is broken. Contacting angels serially is broken. Using who has attended a dinner party with your buddies as the most efficient screening method available for predicting skill with conversion rate optimization is broken. Investment outcomes where the company succeeds and founders do not end up rich is broken. The work culture in Silicon Valley is _insanely_ broken. etc, etc

YC has unbroken some of these. It turns out that an application process and a few weeks with a team scalably works as a decently efficient proxy for success. It turns out founders can be taught what pre-money valuation means and when they know this they get screwed less often. It turns out that spending half of one's time raising money is, as expected, just a deadweight loss.

<comment><USER11> Your comment made me look at YC as an extended extremely thorough onsite interview, and it really clicked. But then I remembered that YC companies pitch demo day to a bunch of relative strangers-to-the-teams, not the YC investors themselves. Or do Demo Day investors get quality time with the teams during the season?

Of course YC is overall a mix of interview and internship and summer camp and summer classes and more. The above is an attempt to think through one of the threads.

<comment><USER10> The angels get one extraordinarily significant bit about all presenters prior to the Demo Day presentation: _they were in YC_. That is a very significant bit relative to another similarly situated twenty-something which a gleam in their eye and prototype on their MacBook.

It used to be implicit that some angels were saying "If you're good enough to be in YC, you're good enough to get investment from me." That is now 100% explicit for at least one deal. The vetting is getting outsourced, streamlined, and productized.

</comment></comment></comment></comment><comment><USER12> Video: <http://www.ustream.tv/recorded/14928956>

<comment><USER13> Thanks. What about the PG "office hours" that was supposed to happen? It sounded like it'd be really interesting to watch.

</comment></comment><comment><USER14> "The total value of YC companies is now around $3 billion — YC has invested a total of around $5 million."

Damn, that's a good return, if you assume all positions were held and an 8% stake taken then that should yield $240 million, or an ROI (CAGR) of 116% since 2005. (This assumes the 5 million was all invested in 2005).

Anyone have a good metric to factor dilution from future rounds?

<comment><USER15> We assume (probably conservatively) that we'll end up with 2% after dilution.

<comment><USER16> Given that you can achieve 12x return on equity within YC, the obvious follow- on is: can YC itself scale, or does it depend on the few individuals currently running it for its success?

I know other YC-a-like organisations have started up elsewhere: have any of them been running long enough to get any idea of long term success yet?

</comment></comment></comment><comment><USER17> Hey, there's a nice photo of the interviewer and interviewee _shoes_ in there !

</comment><comment><USER18> Dropbox, the startup that most easily came to pg's mind, began with a single founder, who didn't already have a relationship with his co-founders. It was also a great idea, well-worked out from the beginning. Not undermining the five points, just saying that they're more _guidelines_.

It's crucial to look at the founders, because that's what does the work. Just as Catmull says of movies, a successful startup is made of many creative ideas; also, many implementation challenges, flexible adaptations and tests of determination that is very hard for one person to handle.

A startup is an on-going process, not a one-off event.

</comment><comment><USER19> So at roughly a stake of 6% which YC takes, at a total $3 billion valuation, YC's stake is worth $180 million, from an investment of just $5 million. Not a bad payoff, surely to make a lot of Angels and VCs very envious.

<comment><USER20> They have less than 6% of most of the most valued companies. They suffer dilution when these companies raised money. YC doesn't do follow-on rounds.

Then again the companies will probably be worth even more by the time they reach liquidity.

</comment></comment><comment><USER21> I think what Mr. Graham is saying is not only natural, but inspiring. Firstly success and opportunity generates itself, and the best way to generate that is to look for patterns. So if people like us are successful, then in looking for more success, we should look for people like us. Secondly, the fact that 'naughtiness' is one way to look outside of the status quo, doesn't diminish all the other ways of looking for solutions. Mr. Graham celebrates 'naughtiness', other 'like us' traits could include tenacity, perseverance, team oriented, data driven, and humility. So this is not about following the rules versus not following the rules, it's about being able to distinguish between necessary, even essential rules and problematic rules. Today Mr. Graham exhorts us to celebrate naughtiness in our quests, tomorrow we can celebrate mischievousness. There's plenty of time, and plenty of traits to success.

</comment><comment><USER22> Consider the stats at the end of the article for a moment.

The total value of YC companies is $3 billion. While, the total amount invested by YC is $5 million.

Very impressive results when you consider that YC takes about a 6% stake for its initial investment. Congratulations to all involved.

</comment><comment><USER18> Determination, Flexibility, Imagination, Naughtiness, Friendship

[http://www.forbes.com/forbes/2010/1108/best-small- companies-...](http://www.forbes.com/forbes/2010/1108/best-small- companies-10-y-combinator-paul-graham-ask-an-expert_print.html)

<comment><USER18> ndiff

</comment></comment><comment><USER23> Everyone loves to hate on MBA's it seems. Have there been any yc companies started by mbas?

<comment><USER24> yes - there are a few. See Custora and Fivestars Card

</comment></comment><comment><USER25> 5 million seems like an incredibly low figure. Just goes to show the power of smart money.

</comment><comment><USER26> Meh... Y Combinator is a potential source of start-up funding. Just as important, Y Combinator is not exclusive of any other source of funding. The difference between YC and other sources of funding is that YC funds a lot of companies twice a year rather than on an as-needed basis so the whole process is very eventful.

As YC funds more companies, the value of the "We're a YC company" branding diminishes faster. Whatsmore, there's some curious economics in how YC companies do business with other YC companies. If the bulk of customers of YC companies are other YC companies, then you what you have is basically just a pyramid scheme. It's also kinda lame to hear Paul Graham play favorites and talk about how great Sam Altman is all the time.

<comment><USER27> I think you're just being bitter because you got rejected by YC, and now trying to deal with it by saying "Well, YC's not that great anyway".

With the value of YCs portfolio companies over $3 Billion, it's ridiculous to make the allegation that YC is some kind of pyramid scheme.

</comment></comment><comment><USER28> Would love to hear more about things you've learnt about rejecting companies which later go on to be successful beyond rtm marking harshly.

</comment><comment><USER29> "we're not looking for people who did what they were told in life." seems like a useful heuristic beyond just start ups.

</comment><comment><USER30> I like that idea of treating raters as candidate black-box predictors.

</comment><comment><USER31> PG!!! Socks & sandals? Nooo... ;)

Aside from the visual violation, nobody should hide their digits under socks in spring/summertime. All feet look good; nothing a good pedicure can't fix.

</comment><comment><USER32> is there a video of this interview?

</comment><comment><USER33> Is the sandals with socks thing some sort of deliberate middle-finger? In NYC on a stage, no less.

<comment><USER34> Birkenstocks with socks is okay: <http://www.gq.com/style/style- guy/shoes/200309/birkenstocks>

<comment><USER33> Birkenstocks are never OK.

<comment><USER35> I use my footwear as a test. If you don't like me simply because I'm wearing comfortable sandals, then I wouldn't have liked you either and I've saved us both a spot of trouble.

<comment><USER36> He didn't say he didn't like him. He just doesn't like a facet of his fashion. I don't like Crocs or Uggs. I don't think people look good while wearing them. But that doesn't mean I don't like them.

</comment></comment></comment></comment></comment><comment><USER37> I like the video every time Paul Graham says "I dont know" "I dont know". Seems like a good guy. He's a kid himself, I like it.</comment>


Ask HN: got a proposal to relocate from Europe to SF - <AUTHOR>

I'm currently living in Strasbourg, east of France, near the german border. I've started Novelys, a small Ruby/Rails shop, nearly 6 years ago.
I've just got a proposal to get hired and relocated to SF. The proposal is valid for me and my team (we're 5).
Difficult choice : be an entrepreneur in Strasbourg or a software engineer in SF.
Have you ever encounter a similar choice ? What did you choose ? Any advices ? <comment><USER2> If anyone ever offers you to come live and work in another country for a while, the answer should always be yes.

Going to a different country will teach you things both about the place you move to, and about your home. It will give you new perspectives and experiences that you can't get any other way. You will be a better person for it.

And if it doesn't work out, you can always move back.

<comment><USER3> the 'no two ways about it'-ness of your comment struck a chord with me. I was wondering if you had a story?

This is something I've thought about a lot, partially because I feel fortunate in the opportunities in my life presently, so when there's a chance to up and go some place I'm forced to weigh opportunity cost. Correct me if I'm wrong, but to me it sounds like you're saying that the opportunity to work in another country is almost always a greater opportunity?

<comment><USER2> Only anecdotal, but of all my friends and acquaintances that have worked abroad, either for a limited time, or permanently, none of them regretted it, even those that went to weirder places like Armenia or Mocambique.

Of course there is an opportunity cost, and if you have family and kids it might be too high, but if I was in that situation, I'd try to take my family with me. I have other friends and acquaintances that lived elsewhere for a few years as a kid, and all of them only had positive stories to tell of it.

The cornerstone of intellectualism is the ability to imagine the world from different perspectives, to realize that not everyone is the same, and nothing teaches you that like traveling or moving to a different country, and it will make you a better person.

<comment><USER3> thanks for the anecdote, could not agree more. first thing I did upon graduating college was pack a bag and buy one of those around the world tickets till i was broke.

for the last several years of my life since I did it, it's been one of my cornerstone experiences.

</comment></comment></comment></comment><comment><USER4> "Difficult choice : be an entrepreneur in Strasbourg or a software engineer in SF."

Being an entrepeneur is not only about being the boss of your own company. I think many people get this wrong. Entrepreneurship should be in the blood. The hunger, the curiosity, the will to change the daily-job status quo.

I used to run my own 2 companies with 2 partners, but I decided to change something and try another approach. Currently I have a well payed job which allows me to save money for peronal business experiments. The main reason why I decided to give up my previous 2 companies was that I did not like the enviroment. Don't get me wrong, my partners were good guys, but I felt no chemistry and no inspiration.

My suggestion: go for it. Being a software engineer in SF will open new gates for you and if entrepreurship is in your blood, you can not fail. ;)

</comment><comment><USER5> I can't claim to know anything about your own personal life but I would say one thing - whats the worst that could happen?

I moved from the UK to Japan nearly two years ago (with g/f of 7 years). Sometimes being away form home sucks, as does the frequent feeling of isolation and knowledge that if the work life sucks you have to leave the country. Sometimes its amazing - I love the country (and my work) and the people I have met. My overriding feeling is that even though I really miss a lot of my UK life, (including the company I worked for on the odd occasion) I am glad I took the leap, for no other reason than I got to experience this.

YMMV

<comment><USER5> I should just add to this - I took a step down career wise, (Tech Lead of a good UK agency to a developer position) so I could make the move, so my perspective may be very different to yours as we actively wanted to move abroad (and specifically to Japan) for a while.

</comment></comment><comment><USER6> It really depends on if you have family/kids. That sort of move will require a lot more thought and planning if you are to move your whole family. Compared to if you are single, you only have yourself to look after and provide for. I have just immigrated to England from New Zealand with my wife without the certainty of work. Luckily we have a family friend who is housing us while we look. I would say that the chance to move over to SF with the certainty of work is something that might not come up very often. If you did decided to go I would definitely try to arrange to keep your company in France going.

</comment><comment><USER7> Stay in France. Novely is one of the rare awesome agencies here and SF already has a lot of brains. Don't put everybody in the same place.

<comment><AUTHOR> Thanks for your kind words :)

</comment></comment><comment><USER8> Short: don't hesitate a second (though negotiate hard).

Long: How many times can this happen? Honestly?? How big is the startup? How much press do they get ON A DAILY BASIS? How much equity would you get? How big is their market?

You can always come back to (beautiful!) Strasbourg. You won't have many other similar opportunities.

<comment><USER8> Also: what about leaving your comp in France, with some trustworthy guy heading it, and leaving to SF with the guys from your team that want to follow you? That way, you keep you Co and can always come back to it - if need be.

<comment><AUTHOR> Well, that's one of the many plans :)

</comment></comment></comment><comment><USER9> I think it depends what you want for your life in the next 3 years.

It's always a good opportunity to save money and see in 3 years where you are and decide which way to go (continue to SF or come back in France). It could be a good stimulant for your entrepreneurship and intellectual skills as well.

But your current position has a lot of good points too.

I'm always thinking about what I want in my life, this is what is really important here.

</comment><comment><USER10> france is better for your family in the future.. My opinion.. You work like 4 days and a half (if I am not wrong), free school etc.. Europe: you work to live SF: you live to work

Choose what you think is best for you..

<comment><USER10> how about the future? what do you think about free studying? I think is a big deal.. But.. maybe I am just subjective because I prefer europe over SF...

<comment><USER11> He also could rellocate and send his children in France for their studies, he certainly have family there who will be happy to host them :-).

</comment></comment></comment><comment><USER12> Why don't you discuss this with them? If you're still single/no kids, I think you should go even if to get to know another culture.

</comment><comment><USER13> Get the opinion of your whole team. Whatever all of you would agree upon (and I am sure that everyone would have the team's betterment in perspective), then you decide.

</comment><comment><USER14> How did this happen? What about visas? Tell us more!

<comment><AUTHOR> I think that we are pretty "visible" in the Ruby/Rails landscape in France, because of our tech and social activities (we organize several barcamps, railscamps, Agile stuff and speak at a lof of events) and we worked for some visible startups too. And a guy eventually came accross my LinkedIn profile, our company website and my personnal website.

We didn't speak about visas ATM.

</comment></comment><comment><USER15> Do it.</comment>


Evaluating Bazel for building Firefox - <AUTHOR> https://blog.mozilla.org/nfroyd/2019/10/28/evaluating-bazel-for-building-firefox-part-1/ <comment><USER2> Hermetic declarative build systems like Bazel feel exactly like sound statically typed languages to me. It's _really_ hard to get all of your dependencies precisely specified declaratively. The urge to hack in a little imperative code or jam in a build step that you just "know" needs to happen in a certain order is always there and it can be very difficult to satisfy the taskmaster that is the build system. When you have weird cases like a script that produces a variable set of output files based on the _content_ of some input file, it's tough to get that working in the build system.

But... if you climb that cliff, there are many rewards at the top. Like the article notes, you can reuse intermediate build artifacts between developers (because it's not possible for those artifacts to accidentally depend on developer-specific state), you can automatically parallelize (because the build system can tell declaratively which tasks do no depend on each other) and you can ask it interesting queries about the dependency graph. That sounds an awful lot like the runtime safety, performance, and static analysis static types give you.

The challenge is that for small programs, dynamic types are just easier to get going with. And _every_ build script starts pretty small. So you have a plethora of simple, hackable build systems like make that work fine at first but then get more and more painful as the program grows. With software, there is at least some customer-visible pain that can enable you to justify a rewrite in a statically-typed language. But build infrastructure is always a hidden cost so it's really hard to get the resources to migrate to a different build language.

Maybe the lesson here is to bite the bullet and start with a hermetic build system at first.

<comment><USER3> Except the Bazel syntax is really good. Compiling a few C++ files into a binary is just:

        cc_binary(
          name = "app",
          srcs = glob([ "*.hpp", "*.cpp" ]),
        )

That's more concise than most build systems AND it's cross-platform.

<comment><USER4> I guess but this is also portable and more people know how to extend it:

        $ cat Makefile
        SRCS = foo.cpp bar.cpp baz.cpp
        OBJS = $(SRCS:.cpp=.o)
        PROG = app
        EXT  =

        .PHONEY = all clean

        all : $(PROG)

        LDLIBS = $(OBJS)

        $(PROG) : $(PROG:$(EXT)=.cc) $(OBJS)

        clean :
                rm -f $(PROG) $(OBJS)
        $ make SRCS="`echo *.cpp`" clean all
        rm -f app a.o b.o c.o
        c++ -O2 -pipe -c a.cpp -o a.o
        c++ -O2 -pipe -c b.cpp -o b.o
        c++ -O2 -pipe -c c.cpp -o c.o
        c++ -O2 -pipe  app.cc a.o b.o c.o -o app
        $

<comment><USER5> I love this example, but more because it shows just how obtuse make is even for simple programs. There's one self-explanatory line in this whole program (`SRCS = foo.cpp bar.cpp baz.cpp`), and everything else is magic you'd just have to cargo-cult forward.

I _think_ that it's also broken, if I copy-paste it: your comment renders with spaces in the `clean :` stanza, but I believe make requires that to be a tab character?

While certainly simplistic, the bazel example shows one obscure feature (glob) that's both still fairly obvious, and unnecessary for a direct comparison to your example. The rest reads clean, and could be replicated/modified by someone with no clue fairly straightforwardly.

Don't get me wrong, bazel BUILD files will often hide a whole lot of magic. But the benefit is, for a newcomer the files they have to interact with on a day-to-day basis are friendly. Take tensorflow, one of the most complicated bazel repos I know - browse to a random leaf BUILD file and you'll probably find it quite readable. (I randomly clicked to [https://github.com/tensorflow/tensorflow/blob/master/tensorf...](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/sparse/BUILD) , seems pretty clear - especially when I consider it's compiling kernels for GPUs, which I know nothing about.)

(Disclaimer: Googler, work closely with the bazel team. I like bazel.)

<comment><USER4> The `SRCS = foo.cpp bar.cpp baz.cpp` was my fav part. I like to put every file used into a Makefile instead of using globs, but my example also showed how without editing the file someone can build with globs instead ;) Similar approach if you need the program to be named winApp.exe instead... That's another 'beauty' of make, you don't have to edit the Makefile.

There's really not much cargo cult in my example. Everything would be in the most rudimentary doc or tutorial, certainly less reading than if you needed to use git for the first time.

And yes there is supposed to be a tab there, some copy-paste thing munged that.

</comment></comment></comment></comment></comment><comment><USER6> > The typical solution is to become more conservative in how you build things > such that you can be sure that Y is always built before X…but typically by > making the dependency implicit by, say, ordering the build commands Just So, > and not by actually making the dependency explicit to make itself. Maybe > specifying the explicit dependency is rather difficult, or maybe somebody > just wants to make things work. After several rounds of these kind of fixes, > you wind up with Makefiles that are (probably) correct, but probably not as > fast as it could be, because you've likely serialized build steps that could > have been executed in parallel. And untangling such systems to the point > that you can properly parallelize things and that you don't regress > correctness can be…challenging.

We had a particularly "fun" instance of this sort of Makefile weirdness back when we used Make for Rust... [https://github.com/rust- lang/rust/blob/efec34a95a76212b2324d...](https://github.com/rust- lang/rust/blob/efec34a95a76212b2324d98f3f6d94a1397c2544/mk/prepare.mk#L44-L51)

(Discussed on HN: [https://news.ycombinator.com/item?id=13655081](https://news.ycombinator.com/item?id=13655081))

</comment><comment><USER3> Before it comes up: Bazel ships with its own copy of the JVM so you do not need to install Java to use it.

<comment><USER7> Is this supposed to be a good thing?

<comment><USER8> Is it a bad thing?

That might make the installed size large, but if it's isolated to Bazel, managed by Bazel, updated by Bazel, etc, then why does it matter whether it's a JVM, a Python binary, a JS VM, or anything else?

<comment><USER9> > Is it a bad thing?

Yes. It makes verifiability much harder.

E.g. Debian put a lot of work into making a more trustworthy build chain by introducing reproducible builds. There's no Bazel on Debian. And not on many other distros. Because getting Bazel to be built itself is a complexity nightmare. "Here, download this big blob where you have no idea how it's been built" doesn't exactly help.

<comment><USER10> Could the Bazel folks better define the composition of their blob? That way they can distribute their blob, but someone could substitute for another instance of the JVM. I'm assuming ownership of this lies with Bazel and this is more of a political/motivation problem than a technical one. Or, is that incorrect?

<comment><USER9> Sure, this is not impossible.

But there's a simple fact: The more complex your build chain is the more difficult this is. And Java adds a whole bunch of complexity.

Read into the bug report to get an idea what a nightmarish task this is: [https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=782654](https://bugs.debian.org/cgi- bin/bugreport.cgi?bug=782654)

</comment></comment></comment></comment></comment></comment><comment><USER11> Firefox will currently build on more platforms than Bazel does. Getting fed up of the endless list of new build systems.

<comment><USER12> I agree, and inflicting Bazel's horrible Java dependency on Firefox would be a tragedy.

<comment><USER13> What's wrong with the Java dependency? There's even a single-binary Bazel executable[1] that brings its own embedded OpenJDK. My company is using Bazel and the Java dependency has never been an issue.

Even if you write custom rules, you use the Python-like Skylark language and never interact with Java code.

[1]: [https://github.com/bazelbuild/bazel/releases](https://github.com/bazelbuild/bazel/releases) (the single-binary distribution is bazel-1.1.0-linux-x86_64, it's only 40MB).

<comment><USER14> When using a source based distro or aiming for reproducible builds you'd need to pull in Java to produce Bazel.

<comment><USER15> And the C compiler springs out of thin air into existence?

<comment><USER14> No, that's generated also, but is highly reusable whereas some people get along completely fine without Java (unless you make them pull it in for Bazel for Firefox).

<comment><USER15> So a matter of opinion and language religion.

<comment><USER14> Well, no. Reproducible builds are a security concern and a source base distro is highly optimizable and configurable. Just because you do not see the purpose does not mean one is absent.

<comment><USER13> But you can still do reproducible builds with Java. GP refers to wanting to avoid Java for no good reason, not reproducible builds themselves.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Of all the build systems I've used, Bazel/Blaze has sucked the least.

</comment><comment><USER17> Bazel is excellent on Linux and macOS, but it's pretty bad on Windows. I'm not sure what (if anything) they're going to do about that. Maybe they'll fix it on Windows though. That'd be pretty cool.

<comment><USER18> Microsoft internally uses something pretty similar to Bazel. I'm not familiar enough with the two to fully understand motivations for the divergence. It supposedly initially ran poorly on Mac, just due to differences in what is cheap on different platforms. I wonder what kind of inherent performance differences you would find in something "Windows first" vs "Linux/MacOS first" [https://github.com/microsoft/BuildXL](https://github.com/microsoft/BuildXL)

<comment><USER5> The differences between bazel and BuildXL are less about platform and more about philosophy. Bazel is about opinionated builds - declare everything, and you get fast correct builds. Hard to adopt, but super powerful. BuildXL is more about meeting codebases where they are - take an existing msbuild|cmake|dscript build with its under-specified dependencies, and figure out how to parallelize it safely. This delivers quick wins, but comes with real costs as well (notably: no caching; labour-intensive magic to guess an initial seed of deps, with a performance cliff when something changes).

(Disclaimer: Googler, work closely with the bazel team. I like bazel; I like BuildXL for expanding the space of build ideas, but have long-term concerns it settles in a local maxima that'll be hard to get out of).

</comment></comment></comment><comment><USER19> I wonder if they considered build2[1]? It seems to tick most of their boxes. In particular, it has first-class Windows support and, in the upcoming release, even native Clang-targeting-MSVC support (not the clang-cl wrapper)[2]. While some of the features they are looking for (like faster build times which I assume means distributed compilation and caching) are not there yet, we are working on them (and would welcome help)[3].

[1] [https://build2.org](https://build2.org)

[2] [https://stage.build2.org/?builds=&cf=windows_10-clang*](https://stage.build2.org/?builds=&cf=windows_10-clang*)

[3] [https://github.com/build2/README/blob/master/roadmap.md](https://github.com/build2/README/blob/master/roadmap.md)

<comment><AUTHOR> One of the important parts in the post seems to be that it is not just a C++ build system, there are many other tasks executed through the build system. In that sense, it seems like build2 isn't a great fit.

<comment><USER19> On the contrary, build2 is a language-agnostic, general-purpose build system. There is the bash module[1], for example. And now that we have support for dynamically buildable/loadable build system modules, we can develop support for more languages, code generators, etc., without bundling it with the build system core. I myself am itching to take a stab at Rust. Hopefully will find time after the release.

[1] [https://build2.org/build2/doc/build2-build-system- manual.xht...](https://build2.org/build2/doc/build2-build-system- manual.xhtml#module-bash)

<comment><USER20> The frontpage starts with "build2 is an open source (MIT), cross-platform build toolchain for developing and packaging C and C++ code."

My impression about the modules you linked to: A secondary feature because many C/C++ project need some additional scripting.

<comment><USER19> See my reply to a sibling comment.

</comment></comment></comment></comment></comment><comment><USER21> I'm surprised to see no mention of Tup [1] in the discussion. Verifying the dependency graph for maximizing parallelism is its major feature.

[1]: [http://gittup.org/tup/examples.html](http://gittup.org/tup/examples.html)

<comment><USER22> Does Tup do more than C? Firefox needs to build some Rust things too.

<comment><USER23> It's a very general tool. IIRC from playing with it, it doesn't give a fig about whether it's running a compiler at all. I think I was using it for a toy compiler+nasm, actually...

</comment></comment></comment><comment><USER24> The problem of Bazel is the JVM requirement. Why not to use something native and more lightweight?

<comment><USER15> You can compile Java to native code.

And in the case you don't want to, it is hardly any different from shipping a bunch of .so/.dll with the application.

</comment></comment><comment><USER25> I'm trying to wrap my head around whether Bazel is worth looking into for the kind of work loads I typically work in. There doesn't seem like that much benefit if you have single language code base and especially if you already have a single build.

I suppose I see the benefit of this setup if you keep many libraries and want to pin to the latest instead of, an explicit lib version. If you're in a multi-repo system you're probably not doing this but I can see how Bazel could actually make this possible.

Can someone shed some light on the CI story? Can Bazel do code deployment as well? Is that a smart thing to do with Bazel?

<comment><USER13> Bazel is worth looking into as soon as you have dependency graphs that your language's native build system can't deal with efficiently, or you have multiple languages that have dependencies on each other's artifacts.

A pure Go codebase? Not worth it.

Personally, I use Bazel even for small projects as soon as they involve things like generated code or gRPC.

Yes, there are multiple rulesets for deployments, like rules_k8s[1] and rules_docker[2]. Of course, you can easily build your own custom deployment pipeline.

[1]: [https://github.com/bazelbuild/rules_k8s](https://github.com/bazelbuild/rules_k8s)

[2]: [https://github.com/bazelbuild/rules_docker](https://github.com/bazelbuild/rules_docker)

</comment></comment><comment><USER26> Is meson not good?

<comment><USER3> Meson does not have the same feature set as Bazel. Most notably sandboxing and remote execution.

<comment><USER20> Other build systems (CMake, Meson, etc) should be able to gain the sandboxing feature. The remote execution feels more fundamental to me and not so easy to replicate.

</comment></comment></comment><comment><USER27> TIL Thunderbird is still a thing.

<comment><USER28> It's still one of the best IMAP clients IMO.

<comment><USER29> mbsync/isync changed my email life.

[http://isync.sourceforge.net/mbsync.html](http://isync.sourceforge.net/mbsync.html)

<comment><USER30> I what way?

What do you use it with?</comment></comment></comment></comment>


Why Facebook co-founder Eduardo Saverin is a schmuck - <AUTHOR> http://www.zdnet.com/blog/government/why-facebook-co-founder-eduardo-saverin-is-a-schmuck/11263

<comment><USER2> When you reach a certain level of wealth, you'll begin to view your government more as a service provider than a community to which you belong (you're hyper- mobile so the world is your community). You can certainly afford to shop around, if you're willing to take the rough with the smooth (e.g. lower taxes under one government but perhaps a higher cost of living).

A strange but (I reckon) valid analogy: imagine if your first ever laptop had been a Dell. Using this laptop you made a fortune by starting a tech company, and with your newfound riches decided to buy a MacBook.

Should Dell be angry with you because you used their product to make a boatload of cash and then left them high and dry? No. There was a contract in the first instance which didn't specify a lifetime commitment, and you never stepped outside the bounds of that contract. You gave them their money when you bought the first laptop, and that was all you owed them.

In terms of governments, Eduardo Saverin had been paying US taxes for his entire working life. The system provides a strategy for opting out, but he's now paying an exit tax and he's lost any benefits that US citizenship and residency brought (like TSA patdowns and pepper spray incidents).

If you believe in making citizenship irrevocable, coupled with the global US tax burden (US citizens have to pay US tax on their worldwide income regardless of where they live), you'll put off swathes of future investors from coming to the USA. You're basically sending out a message that says "we're so paranoid that you'll leave that we're going to imprison you here"—like glassmakers on the island of Murano.

</comment><comment><USER3> One of my favorite quotes about patriotism, comes from Mark Cuban:

 _The Most Patriotic Thing You Can Do: Bust your ass and get rich. Make a boatload of money. Pay your taxes._

So I certainly get the sentiment behind the article, but this is too much.

I cringed at the very end, with the blatant attacks on Singapore that made this piece seem more xenophobic than I could tolerate.

What an unbelievably unprofessional piece. I realize this is a personal blog, but I still wouldn't expect to see it on zdnet.

The fact of the matter is - whether you agree with his decision or not - Eduardo is a Brazilian who lives in Singapore, and has lived in the United States.

Who are we to decide where he belongs? Is he paying taxes to Brazil? Should he?

</comment><comment><USER4> Corporations are tax efficient, billionaire investors are no different. Eduardo Saverin is a Brazilian, who has settled in Singapore. The only reason he'd retain US citizenship one presumes would be for patriotism or the safety of living in a developed nation. Neither are relevant to Eduardo Saverin.

This piece raises a point raised in Europe a lot regarding tax avoidance (not evasion). Sadly this piece is pathetically vile and borders on xenophobic. It paints the author, zdnet and Dell (the sponsor) in a poor light. It's the sort of comment I'd expect in right-wing reader comments on UK sites like the Telegraph or Mail :-(

</comment><comment><USER5> Brazil and Singapore could also make a case that they've done a lot for Eduardo Saverin and that he owes them something. Should he pay taxes in all three countries?

</comment><comment><USER6> Don't US citizens still have to pay taxes on their income (over a certain amount) each year even if they claim residency status in another country?

<comment><USER7> That's why he's renouncing his citizenship.

</comment></comment><comment> jack-r-abbit Why David Gewirtz is a schmuck. This.

Eduardo Saverin owes me nothing. His father moved him here for safety not wealth. It seems he (via his father) already had wealth. He went to Harvard. Harvard is a private school and someone paid for that... doubtful it was our tax money. Is the Government really subsidizing Harvard educations? Doubtful. Sure he made use of our legal system to get his due share of the company he helped found... so what? As a US citizen he was entitled to have his case heard in the court. And now he has decided to move to another country. So what? People leave the US all the time.</comment>


How To Create a Conference Call in 3 Lines of Code - <AUTHOR> http://www.twilio.com/conferencing

<comment><USER2> This seems really, incredibly powerful, but I'm having a hard time thinking of great applications for it. Their examples are very interesting:

<http://www.twilio.com/docs/howto/>

\- Phone menu, where Twilio handles the call and listens to DTMF tones and/or voice input, then sends the request to my web server, which then responds with text, audio clips, or prompts for further input.

\- Voicemail transcription, where I initiate a call to my voicemail box through Twilio, and then use their text-to-speech conversion to transcribe my voicemails.

... and more. What would you do with an API that replaces PBX programming with XML exchanges over HTTP?

The best idea I have at the moment is for an online store, where a customer could enter the number and click to complete their order over the phone. When they submit their number, the web server records their order number and contents to pass on to a call center representative.

<comment><USER3> We're using Twilio at the moment to provide our paying customers a way of tracking incoming calls from their customers as part of our analytics package, and it's working really well for that. It's a neat system, and it's easy to work with.

</comment></comment><comment><USER4> I don't want to sound negative but this is getting ridiculous. The article is about an allegedly easily configurable conference call product, but the title imples some sort of cool, smart code that programmers would be interested in. Surely, the code backing the application is not three lines long but more like measured in tens of thousands.

This is not very different from posting an article with the title "How to solve the halting problem in one line of code" and then have

      SuperLibrary.SolveHaltingProblem()

as the code. Don't get me wrong, I'm sure Twilio is a great product and that it is very easily configurable or usable, but I think the title is simply misleading. Sorry for the rant but this is getting more and more epidemic on HN.

</comment><comment><USER5> Cool, working with a company now who is going to use Twilio for some SMS stuff; the API seems very simple and straight forward. But please fix your copy:

        ...and a *ding* somebody people enter and leave.

</comment><comment><USER6> Whhhhhhhhhhhhy XML? When are people going to realize that XML is quite possibly the bulkiest way to write data?

[edit] Posting doesn't keep returns or spaces? :(

<http://pastie.org/712151>

<comment><USER7>
      Preface every line with two spaces to preserve
      newlines.

</comment></comment><comment><USER8> Thanks for bringing the nice t-shirts to Startup Weekend!

</comment><comment><USER9> These phone systems in the cloud are truly awesome. I wonder what kind of telecom hardware they are running on....

<comment><USER10> I'd say it's highly likely they are using open-source Asterisk

<http://www.asterisk.org/>

<comment><USER11> A better alternative to Asterisk: FreeSWITCH - www.freeswitch.org

<comment><USER12> We're slowly migrating most of our PBX/IVR apps from Asterisk to FreeSWITCH. I agree FreeSWITCH is higher quality code, but unfortunately there is a _much_ smaller developer/support/hardware ecosystem with FreeSWITCH right now.</comment></comment></comment></comment>


"Until age 7, children believe that birthday parties CAUSE aging." - <AUTHOR> https://mobile.twitter.com/degenrolf/status/940957370586468354 <comment><USER2> I'm wondering how they figure out what the children really thinks. Having a birthday party, as well as defining age in terms of years, are both defined by human beings. With that logic and lack of background of the weight of the "cultural importance" in each of birthday party and definition of years, I don't find it difficult to believe a child could think a 40 year old could define herself as a 29 year old if other people would hold that birthday party for her.

What I'm saying is - are the children aware our definition of age in terms of years is linked to the physical state of the human body?

</comment><comment><USER3> How much of this is language? In a child's mind, is the word "age" for example tied to being "X years old", while that may still intuitively understand the concept of "age"?

I assume they took language into account but can't access the article. Does anyone have more info about the methodology?</comment>


Google+ is good, but don't switch [from Facebook] to it - <AUTHOR> http://jiaaro.com/google-plus-is-good-but-dont-switch-to-it

<comment><USER2> The argument seems to be that competition is good and will force facebook to be better. But using the competing service will give Google too much power, so don't do that.

Cognitive dissonance if I ever saw it. How can one mind hold both those arguments at the same time without redefining "competition"?

</comment><comment><USER3> Interesting take---not at all what I expected from the title. The notion seems to be to preserve competition rather than running from one side of the boat to the other. I'm not sure that 2 makes for sufficient competition, but it certainly beats one.

<comment><USER4> > I'm not sure that 2 makes for sufficient competition, but it certainly beats > one.

This is a very interesting point.

Competition only benefits consumers when there is sufficient choice to subvert collusion. Given the examples of US politics, US car manufacturers and the like, I would surmise that this likely requires more than 3 relatively equal competitive actors to be meaningful.

</comment></comment><comment><USER5> I have yet to see a post that tells me what sites to use and what sites not to use that actually had a good reason. This one is no different.</comment>


China's CO2 emissions have been plummeting lately. What's going on? - <AUTHOR> http://www.vox.com/2015/5/22/8645455/china-emissions-coal-drop

<comment><USER2> Good news for the planet. Bad news for the dirty coal industry. Still don't trust the chinese tough.</comment>


Amazon's colorful new towers will put a bold stamp on Seattle's skyline - <AUTHOR> http://www.geekwire.com/2012/images-amazons-colorful-towers-put-stamp-seattles-skyline/

<comment><USER2> For an article that's just repeating words from the official document[1], very little is said.

tl;dr: Amazon's planning on building a new building and it will be green and orange.

Those that are interested should look at the official document linked below. Note that the PDF is around 28MB. The interesting bits that the article briefly mentions are on page 8 and on.

[1] [http://www.seattle.gov/dpd/AppDocs/GroupMeetings/DRProposal3...](http://www.seattle.gov/dpd/AppDocs/GroupMeetings/DRProposal3013154AgendaID3744.pdf)

</comment><comment><USER3> Interesting contrast to what Apple is doing to expand their campus. Colorful towers v. a giant doughnut. I can't imagine Apple's campus ever being a skyscraper. Allegedly Apple's new campus is only 4 stories high to give it a "human" scale. Now I understand what that means.

<comment><USER4> Spacious buildings can be a problem. You decrease the density of engineers / square foot, which reduces collaboration.

Of course, skyscrapers can also be bad, as it limits mixing. People only tend to interact with people on the same floor.

<comment><USER3> I'm not sure if that's the case. Pixar's campus is another example of a large, low building and it's central atrium is specifically designed to encourage random encounters among employees.

</comment></comment></comment><comment><USER5> Nice building. However -- I've watched renderings like these come out for years, as well as the final results (in person). Thing is, glass, and especially tinted or "specially treated" glass meant for display purposes, are very very hard to render beforehand. Actually, it's very difficult to tell how the glass actually looks until it starts coming out of the factory to be hung up.

My fear with tinted glass is that it often appears darker than intended. A lot of the tinted glass in NYC, although colorful enough up-close, becomes dulled a mile or more away.

But we'll have to see how this one turns out. Each glass curtain wall is different. Unique, like a snowflakes (if that's even true).

<comment><USER6> In 1991, the first time something I drew was fabricated (20 kips of prestressed double tee for a parking structure), I thought, "So that's what it really looks like."

I still have the same sensation today, when exposed to built work. The only difference is that I am aware of the gap between representation on paper and presence while I am designing.

The image is not the building. The rendering, like any drawing, is just a communication tool.

<comment><USER5> Agreed. Just like renderings I do for website projects, they're communication/brainstorming tools and only that.

On a somewhat funnier note, every time a new massing model or rough sketch of a new building is released in NYC (for example the early World Trade Center massing models created back in '02 or '03) there's always a small, but hysteric faction of architecture enthusiasts crying out about the bad design, not realizing what they're even looking at.

</comment></comment></comment><comment><USER7> Other than the fact that they are going to block my view of the space needle, it's really going to be an improvement for the area. The area right now is a bunch of parking lots, old junky buildings, and a car dealership that seems out of place.

</comment><comment><USER8> This is so much better than the suburban office park crap that plagues the tech industry. Beautiful.

</comment><comment><USER9> Reminiscent of Central St. Giles in London:

<http://www.centralsaintgiles.com/building-gallery>

And in fact, roughly the same three colours: red, green and yellow.

</comment><comment><USER10> Do you really need a Grand Staircase in 2012? Why make special accommodations and a separate ADA entrance for the special wheelchair people? If you're building from scratch, why not a unified, inclusive design that's accessible to all?

<comment><USER11> Because ramps are uncomfortable and accident prone for most people to walk on?

</comment></comment><comment><USER12> I wonder how they'll look ten years out, when they're dirty and faded.

<comment><USER13> Depends from their maintenance.

<comment><USER14> Maybe not. I lived in Brussels for two years (which has a very similar climate to Seattle) and my wife and I both remarked that "Brussels needs a good scrubbing" compared to Paris. All the buildings looked just a tad dingy, even the glass boxes over at the European Commission.

</comment></comment></comment><comment><USER15> I was about to come on here and call those colors absolutely awful, especially since the monitor I was looking at them on was the most color-accurate monitor I have; but ... then I remembered I have Flux turned on on my screens. I turned it off; and ...

... it's not so bad, I'll admit.</comment>


Artist uses 99 phones to trick Google into traffic jam alert - <AUTHOR> https://www.cnn.com/style/article/artist-google-traffic-jam-alert-trick-scli-intl/index.html <comment><USER2> A wonderful thing, the main discussion is here:

[https://news.ycombinator.com/item?id=22216821](https://news.ycombinator.com/item?id=22216821) (simonweckert.com, >360 comments)

Other submissions from various sources, most now marked as duplicates:

[https://news.ycombinator.com/item?id=22218181](https://news.ycombinator.com/item?id=22218181) (3 comments)

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

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

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

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

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

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

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

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

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

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

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

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

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

<comment><AUTHOR> Ah, well. Maybe will reach 99 submittals!

</comment></comment><comment><AUTHOR> The little red wagon full of phones! Hahahaha.</comment>


Ask HN: What were you doing around the age of 18 – 20? - <AUTHOR> I'm currently a 2nd Year Uni student at a relatively prestigious University in the country I live in (Ireland), studying a mix of Computer Science with business, as I enjoy both (more so the technical aspects). I recently built and deployed my personal website, using self taught full stack technologies, something I'm thoroughly proud of. Languages I would use mostly are the regular web technologies and frameworks(JS, Vue, React etc), Python as the main language I would use and Bash (eh) for maintaining a project I'm working on. I have dabbled in Java before and I'm making it my 2019 goal to learn C++. I'm also trying to get a summer internship with one of the big tech companies here. While also trying to do all this, I'm also working a full time job (20-30hr/week) in a retail position for the last 3 months (is my first job) Despite all this, I feel my priorities are all mixed up, or I'm unintentionally slowing myself down in some area. 2019 is here and I want it to go down a different path. Thing is I've heard a couple final year students doing my course say they've been looked down upon as having lackluster technical ability compared to full CS students, which worries me as I enjoy programming but want to set up my own business at some point in the next 2 years. Just looking for some advice on how to move forward with everything, maybe I have a little too much on my plate? <comment><USER2> Can't speak for your country, but when I look at entry level job candidates, I look for people that have a personal project and passion. Portfolios are good, but I like adding people that can show they dabbled at home, even if it's a personal file server, or game server.

Full CS people probably have a leg up on you, but it's not unsurmountable. Many full CS candidates I've seen only have education portfolios and no personal projects. Again here, I found people who do full stack work on their own projects are easier to train and bring on board.

Your milage will vary -- most of what I said above means nothing if your resume is only read by a computer.

So my advise is maintain a personal project or three -- even small ones. Don't go too wide on languages, focus on 1-2 main languages and go deeper. It's easier to side step to a new language later (most of our new hires don't know Typescript, sometimes only barely JavaScript, but if they know ably programming language well, they tend to pass our open-internet code challenges)

<comment><AUTHOR> Gotcha, that was on the plan so appreciate it!

</comment></comment><comment><USER3> I studied and worked in parallel and really enjoyed the parallel work and grow my career in CS.

Still I would say, if you have the possibility/luxury to work less and finish your studies faster with more focus, I would go this route as in my opinion you will gain more time in the long run to focus on your next steps after studies.

If you are not overwhelmed by the 20-30 hour/week work/studies schedule and can keep up, then Inwould continue this way.

Either scenario should involve side projects.</comment>


Impending kOS (2014) - <AUTHOR> http://archive.vector.org.uk/art10501320 <comment><USER2> "As the code base improved, kdb+ releases became faster – and smaller."

This is what I always strive for. Although I've only met Arthur a couple of times, he has been a huge influence on me as a developer. Besides some shared personal interests, his development philosophy that simplicity and consistency produces performance and malleability (to be able to constant add, subtract, or write).

He's on the top 3 developers I try to model myself after. While he's a god among men, his products (A+, K, KDB, Q, and now Sakti) make others mortal also gods among men by just learning to think and use his tools. My co-workers I'm sure get annoyed at my code-reviews ("delete this", "rthisewrite fir first with that then delete the second", "delete all this and return this",. ...) where I consistenly call for deleting a remodeling code to be as minimal as needed. I'm brutal about it - as I learn from K and it is partially Arthur's fault (and another dev I look up to). Maybe now they know where I picked part of it up.

[https://shakti.com/](https://shakti.com/) is his new distributed database project that is still somewhat hush hush, (and he not the kind of person that plays buzzword bingo - so I assume he has something special planned). I cannot wait to see how that turns out. I don't know if he's ever produced a bad product.

<comment><USER3> Remember that as a reviewer, you always have an advantage over the coder: as the coder, you need to crack the problem and find an algorithmic solution. It's easy to have a couple of false starts with this. These do stick around through iterations and changes. Eventually, you submit something that works, but you're overlooking that the code could probably be less convoluted in places, because you know the solution and it is perfectly reasonable.

The reviewer who gets to read the code gets to walk the shortcut to the solution after the trail was blazed for them: they get to think purely about the working solution without the intermediate steps. And they naturally will find places where the original developer was thinking in terms of his failed earlier attempts.

I bet that if I gave you a non-trivial problem to solve in a reasonable amount of time I could do the same kind of review on your code, forcing you to shorten it. And I _will_ find something. Guaranteed. That is just how these iterations work.

<comment><USER4> _I bet that [..] I could do the same [..] And I will find something. Guaranteed._

Why are you framing this as though it's adversarial and the parent comment is stating some kind of superiority, and you're here to turn it around and put them in their place?

Isn't teamwork all about doing better than one person working alone?

<comment><USER3> My take on the parent comment is that it has some adversity and feeling of superiority to it. And I don't like that. I agree that in the end it is not a competition, I didn't think that I would have to point it out.

In fact I am in the middle of fixing up code that I wrote as novel research because the powers that be want it in a production system. The code review I got was detailed and - frankly - embarassing at times because all the uncertainties and meanderings of research had me change pieces of code over and over and over again to a point where remnants of old approaches didn't stand out to me anymore and where I had at times built on top of bad decisions because they were meant as a temporary hack and experiment, but worked well enough and stayed in. And by the time I submitted the code for review I had become blind to these mistakes. I know how to write good and clean code and I get through code reviews easily _when I know what I am doing_. Not this time, though.

</comment></comment></comment></comment><comment><USER5> APL and the culture surrounding it is what you get if you assume that programming languages are, like human languages, meant to be learned and fully exploited, unlike the lowest-common-denominator dumbing down that's more common in mainstream programming languages. I find it very interesting how much people can learn if they try.

<comment><USER6> What in particular stops you from learning and fully exploiting the C programming language?

<comment><USER5> The notion that code should be dumbed down --- it's not as prevalent in C as it is in C# and Java, but definitely still there.

</comment></comment></comment><comment><USER7> Wish there was an open source version of kdb and q.

Kdb is fantastic as an app server framework. The q language is just enough syntax help on top of cryptic apl to make it useful to a mass audience.

We need a free and open project that replicates this functionality.

<comment><USER8> I don't like the fact that it is closed source but not having source code does not stop me from utilising it on a personal basis. I think it makes sense to use it in this capacity and learn the language as best one can in the event that an open source option besides kona does someday become available. k is one of the very few closed source programs I use.

It is interesting how the closed source issue is consistently raised on HN with respect to k when there are numerous other examples of closed source software used by HN readers where I never see this issue raised. In those cases it does not seem to be important. For some reason however, it seems availablity of source code is important to some folks in the case of k.

I am curious; What would you do with the source code? Is it an issue of verifying what the software is doing, or perhaps being able to modify the software or make "fixes"? Is it something else? Maybe you simply want a free option for commercial use. If the later, please disregard my curiosity.

For me the issue I have with k being closed source has always been ports, i.e., limited OS support. They used to have a FreeBSD port many years ago, but today there is no support for OS other than Windows/Solaris/Linux, e.g., NetBSD.

<comment><USER9> I'd never use a closed source programming language because it makes me dependent on the vendor. With FOSS, if the original company goes away I can pay someone else to keep the software running on a modern computer. With closed source software I don't have that option.

<comment><USER8> Not disagreening with you, but in addition to the more recent versions, I run an old version of k from around 2000, and it keeps running even with the latest kernels and hardware, thanks to availablity of legacy Debian libraries.

<comment><USER9> At some point in my career I was forced to use a closed source compiler from the early nineties. With each new version of Windows it got harder to keep it running. We also discovered bugs in the compiler and had to rewrite our code to avoid them. I quit that job eventually, but I imagine that in one or two more Windows iterations the developers will be forced to compile inside a VM.

</comment></comment></comment></comment></comment><comment><USER9> I too wish we could get rid of all the bloat and use the marvelous machines at our fingertips to their full potential. But I seriously doubt that you can write a bloat-free OS that runs on multiple brands of laptops with a bloat- free webbrowser that allows me to read most websites with a small team in reasonable time, no matter how brilliant the people involved are.

<comment><USER10> As others have mentioned, a bloat-free web browser is impossible currently because the web itself is far too bloated.

However, I'm not convinced that our OSs can't be much, much simpler. You can, almost reasonably, use DOS as a daily driver still. I have very fond memories of DOS because it was simple. Even as late as the early 2000s, if you wanted something like a MAME cabinet you'd often use DOS. You just plop some application and data folders onto a disk with like 4 system files and you were pretty much done.

Where is today's DOS? I suppose it's Linux, which is orders of magnitude more complicated (especially once you start talking about a GUI) and even Linus admits it has become quite bloated. I personally think we can do a lot better and I've been toying with the idea of putting something together because I'm just so sick of modern computing's bullshit.

PS: If anyone is aware of an organized effort towards this goal that already exists, please let me know.

<comment><USER11> Interested. I have been stumbling around on this for years. Old comment, [https://news.ycombinator.com/item?id=6972431](https://news.ycombinator.com/item?id=6972431)

I like your rule-of-thumb that you should not need a package manager.

Muratori has a theory that USB has made the OS scene complex ([https://www.youtube.com/watch?v=kZRE7HIO3vk&t=1350s](https://www.youtube.com/watch?v=kZRE7HIO3vk&t=1350s)).

Two other things - the browser and TCP/IP.

Goal: a system where you can fit the whole stack in your head, yet participate in a networked world.

Approach A. Outline a reference hardware platform. Port NetBSD or minix3 or plan9. Then simplify. e.g if unix, get rid of users and groups, get rid of x, get rid of package mgmt, get rid of nfs. You could bootstrap this in qemu.

Approach B. Establish an alternate browser. Something like gopher, but with async events between the 'page' and the user. This allows for chat and form manipulation. You can send non textual content through this async link - video, audio. Codecs are a trap, they lead to pkg management and complexity. How to stop proliferation?

<comment><USER10> I think Casey hit the nail on the head here. We used to have hardware with standardized ABIs, some of which had extensions (like Tandy graphics compared to CGA). That made it relatively trivial to make OSs, which is what PC booter games did really. DOS itself barely abstracted anything at all, because you didn't need drivers for standardized hardware ABIs.

Unfortunately the only way to deal with that is to give up on the idea of running on a majority of existing PC hardware and target only a small subset of commodity hardware. Ideally it would all be open, to ensure it isn't going anywhere for a while, but sadly there is no such system.

I'm glad to see I'm not the only one who thinks Users and Groups are the wrong abstraction for systems like this.

</comment></comment></comment></comment><comment><USER12> Here is a text editer written in k

        \l view.k

        /key(return back ^delete)
        kx:kr:{u,:,(j,j+#x;*k_a);e[k]x};kb:{$[=/k;J j-1 0;];kx""};cd:{J j+!2;kx""}

        /edit(undo cut paste)
        e:{a::?[a;x;y];J(*x)+#y};cz:{$[#u;e/_`u;]};cx:{kx cc`};cv:{kx@9'`}

        /save
        cs:{n::$[#n;n;0'""]1:a;r::a}

[http://kparc.com/$/](http://kparc.com/$/)

It's not something I find appealing, personally. Then again I am a python guy, which is about as far from this as you can get.

<comment><USER13> [http://kparc.com/lisp.txt](http://kparc.com/lisp.txt)

Is he saying k is a lisp? I'm sure there are important differences here, but I don't know enough to say what they are. (There is a question implied there.)

<comment><USER14> It's a comparison to Lisp.

</comment></comment></comment><comment><USER15> Previously (in 2014) [https://news.ycombinator.com/item?id=8475809](https://news.ycombinator.com/item?id=8475809)

</comment><comment><USER16> Found this demo of kOS [https://www.youtube.com/watch?v=kTrOg19gzP4](https://www.youtube.com/watch?v=kTrOg19gzP4)

</comment><comment><USER17> For those who want to see it in action, there's actually a talk about kOS on YouTube: [https://www.youtube.com/watch?v=kTrOg19gzP4](https://www.youtube.com/watch?v=kTrOg19gzP4).

The talk is by the fourth member, Geo, who also frequents HN (geocar).

</comment><comment><USER18> so, what happened with kOS since 2014?

<comment><USER2> [https://shakti.com/](https://shakti.com/)

the new project. Arthur has a tendency to turn mid stream sometimes. I'm sure much of that code was used in this new DB he's working on (db's and os's are quite similar).

<comment><USER19> I thought this refers to a RISC-V processor ([https://shakti.org.in/](https://shakti.org.in/)), which would've been quite a turn indeed.

</comment></comment></comment><comment><USER20> Wow, that's... terrifying? I feel vaguely terrified. It makes me feel like a big dinosaur about to be supplanted by tiny birds and mammals.

</comment><comment><USER21> I'm guessing kOS will be released at about the same time as the first article about K that actually says how it achieves the performance.

<comment><USER22> Besides Whitney being being very good at finding and sidestepping bottlenecks (like writing his own memory management because the OS one is too slow), the entire interpreter, db engine and 3rd party software fits into L1 or at least L2 cache. This is a marketing blurb saying that as well [https://kx.com/discover/in-memory-computing/](https://kx.com/discover/in- memory-computing/) . But when you read about and try out Whitney software you will see that terseness in every way does makes things faster.

<comment><USER21> I've heard about the cache thing, but that doesn't explain much. How is it different from machine code or VMs? Does it remove the need to read program's _data_? How much time does a non-K program usually spend moving the code from memory? Why wouldn't generations of programmers make the same optimizations―or just copy them from K? Or what are the tradeoffs, considering that K programs are essentially bytecode?

Also, there are plenty of memory allocators to choose from, and every runtime that doesn't use the libc has to ship its own (if it does memory management, of course). The OS only gives you big chunks to use as you please, and you can't sidestep the syscall. So that's not a super novel thought.

<comment><USER22> > I've heard about the cache thing

It's very optimized for in memory use, so assuming the db is all in working memory and the code operating on the data is in L1/L2, and for the type of data in the column store (Kdb+), you usually pull related chunks into the Lx data cache on which you filter. I would say k is fast for the use case where column memory based storage is a good fit, so relatively small data sets that live in memory and where the operations on the data fit column stores well; I would bet almost all k programmers (including myself) mostly have experience with those datasets or have shoehorned less suitable cases into that case because it did not perform otherwise.

There is obviously no magic, besides, for many 'new' programmers and for current standards, the incredibly small binaries for so much functionality. And that helps with always staying in cache vs almost every other software you will use these days where there is continues chunks of instruction data going to and from cache. That's why C (and maybe Rust some time in the future but the binaries were too large when I last checked) is still important if you really want to get to that point.

Ofcourse in that 200something kb k/kdb+/q binary there is no room for much optimizing, that is why it absolutely falls down for cases it was not optimized for. And when you use a lot of k you know how (and automatically do) to shoehorn basically anything in those cases.

It is not magic by any means, but it comes closer to magic for many as it is alien like assembly compared to JS or C# or something like that I guess. And the speed comes from keeping to your niches.

> Also, there are plenty of memory allocators

As I understand it, he did it because he did not find the Windows memory allocator efficient enough specifically; not sure why he didn't check for other allocators; I guess because he was optimizing a runtime, he just rolled his own instead.

</comment></comment></comment></comment><comment><USER23> The original MacWrite fit on a 400 kb floppy.

<comment><USER15> WordStar 1 fits in about the size of this page with a few comments and that gargantuan 7k favicon.</comment></comment>


Ask: Webapp related - Free and Paid seperate sites - <AUTHOR>

Hi,
  I have a web application that is very easy to deploy (php+mysql). It is easy for me to run couple of live sites using this application.
currently I provide free access on my main site. When I have all the stuff ready to collect payments, is it a good idea to direct users to a different domain for paid access.
for e.g Free access remains at mockuptiger.com
and when users want paid access they go to someothersite.com
Users can easily export and import their data from the free version.
Most of the paid sites do offer the free access on the same domain and as part of the same instance.
I want to discuss the pros and cons.
Pros: I can focus on paid users to provide better site performance and support
What are the cons of this approach?
Has anyone done this before?
Thank you Nilesh <comment><USER2> There doesn't seem to be any advantage really to having it on separate domains. Is there any reason you'd think it's easier to focus on paid users if it's on a separate domain?

There's other options, a private support forum (or forum section) for paid users, priority support (just highlight tickets or emails from paid users).

While it might be "easy" to export and import your data from free to paid, it's still an extra step, and much more annoying than just automatically having the new version available.</comment>


We need a major redesign of life - <AUTHOR> https://www.washingtonpost.com/opinions/we-need-a-major-redesign-of-life/2019/11/29/a63daab2-1086-11ea-9cd7-a1becbc82f5e_story.html <comment><USER2> We need to make life worth living.

<comment><USER3> Heh. Good one :)</comment></comment>


NetworKit – Large Scale Network Analysis with C++ - <AUTHOR> https://github.com/kit-parco/networkit <comment><AUTHOR> Companion paper with more details about NetworKit architecture and comparisons against Igraph and Graph-tool: [https://arxiv.org/abs/1403.3005](https://arxiv.org/abs/1403.3005)</comment>


Semgrep: Lightweight static analysis for many languages - <AUTHOR> https://github.com/returntocorp/semgrep <comment><USER2> I work on Semgrep; there are a bunch of examples at [https://semgrep.live](https://semgrep.live) if you're curious about what the syntax looks like.

For context, Semgrep started as a Facebook open-source project inspired from a Inria project named Coccinelle, which has has made a couple thousand or so automatic patches to the Linux kernel over the years using a semantic patch language ([http://coccinelle.lip6.fr/sp.php](http://coccinelle.lip6.fr/sp.php))

<comment><USER3> Impressive work!

Are there any plans to include C# or F#?

<comment><USER2> C# is high on the list, F# isn't a priority at the moment though. Behind the scenes, we've recently changed to use tree-sitter as the parser library; if there is a good F# tree-sitter library integration becomes quite easy. I don't see one at [https://tree-sitter.github.io/tree-sitter/](https://tree- sitter.github.io/tree-sitter/) but perhaps there's one maintained elsewhere.

</comment></comment></comment><comment><USER4> We've been using semgrep for Zulip's python codebase for the last few months; here's our configuration:

[https://github.com/zulip/zulip/blob/master/tools/semgrep.yml](https://github.com/zulip/zulip/blob/master/tools/semgrep.yml)

I really appreciate the semantic checks. They're especially nice for security- sensitive lint rules, but really it removes the hacky regular expressions feel of adding lint rules to a codebase. It's also been useful for some codebase migrations (semgrep is more precise than e.g. `git grep -w` for finding "All the places we use code pattern X that we want to stop doing").

My main complaint about it is performance -- it's too slow per unit rule for us to replace the regular expression based system that we run on our whole codebase (so we can't happily convert our other ~100 regular expression-based lint rules to semgrep ([https://github.com/zulip/zulip/blob/master/tools/linter_lib/...](https://github.com/zulip/zulip/blob/master/tools/linter_lib/custom_check.py)).

But performance has been improving a lot over time, and I think there's potential for it to be faster (E.g. mypy, the Python type-checker, has gotten way way faster in the last year or two). Because semgrep is getting active investment from a venture-funded company that I imagine will improve the performance, I expect semgrep to be a tool that most projects serious about code quality are using in a few years.

I should add that performance may also be less important to others than it is to us; we run all of our linters (currently 20 distinct linters, including eslint, prettier, pyflakes, isort, shellcheck, etc.) in parallel using [https://github.com/zulip/zulint](https://github.com/zulip/zulint), with the goal of being able to lint the entire codebase in <30s or changed files in under 1s (obviously time depends on number of files changed).

<comment><USER5> I wonder if this could be improved by extracting fixed strings from the pattern and only actually parsing the files that could possibly match. I think the major issue would be alias support but even that should be possible for most languages as your fixed-string extraction would notice the alias itself.

<comment><USER6> Great idea! Will do that.

</comment></comment></comment><comment> stephen-bunn Just went through the examples. Seems really intuitive and looks like it would be a good approach for homegrown linters. Would also love to see some plugin support for editors.

<comment><USER7> Agreed. What editors do you have in mind?

I filed a ticket for VS Code support because I've seen it mentioned in a few of the other comments: [https://github.com/returntocorp/semgrep/issues/1329](https://github.com/returntocorp/semgrep/issues/1329)

<comment> stephen-bunn VS Code and vim would be the ones I would be most concerned about as I typically jump between the two. Although a pre-commit hook is great and something I will definitely use, having this hook reporting issues in a more live manner would be a huge bonus.

</comment></comment></comment><comment><USER8> Semgrep's pretty slick. I tried out a demo and I was pretty blown away by how I could essentially just guess my way to a signature.

</comment><comment><USER9> Regexes are such a horrible thing to deal with when you're just trying to parse code quickly and don't want to deal with AST. I've always wished for a library of regexes that just work.

</comment><comment><USER10> Cool stuff! Seems to hook into tree-sitter?

Love seeing OCaml (or any functional language) :)

</comment><comment><USER11> I've always wondered if we could leverage the vast amount of GitHub code - that assumably all compiles without error or undefined behaviour on their master branches - train some sort of neural net to better catch syntax errors.

Has anyone done something like this, or am I riding the 2016 neural net hype train still?

<comment><USER12> This isn't specifically for syntax errors, but Jacob Jackson released TabNine [0] last year, which is an autocompleter trained on files from GitHub [1].

TabNine was acquired by Codota earlier this year [2].

[0] [https://www.tabnine.com/](https://www.tabnine.com/)

[1] [https://www.tabnine.com/blog/deep/](https://www.tabnine.com/blog/deep/)

[2] [https://techcrunch.com/2020/04/27/codota-picks-up-12m-for- an...](https://techcrunch.com/2020/04/27/codota-picks-up-12m-for-an-ai- platform-that-auto-completes-developers-code/)

<comment><USER11> Pretty amazing, and congrats to Jacob Jackson. (I may be a little envious) ;)

</comment></comment></comment><comment> dorian-graph I only recently came across Semgrep and then after that, Comby ([https://comby.dev/](https://comby.dev/)).

Has anyone compared the 2? They seem similar (structured find/replace, with registries of rules).

<comment><USER13> Comby seems more like "parenthesis matching + search" (they don't implement a full parser for the language, just some basic required constructs to make a basic AST. I imagine this limits the resolution of the search?

Semgrep uses an AST that's equivalent to the parser of the language itself so it's much higher resolution in terms of what you can match.

<comment> dorian-graph Ah yeah, that is a strong distinction. Comby seems have a little nicer UX, but then as you've said, it would have a lower matching resolution.

That explains why too that Comby supports so many languages so easily, and how easy it is to add your own DSL.

</comment></comment></comment><comment><USER14> Nice to see more work in this direction. I used coccinelle a lot for automating changes/bug detection and I immediately missed it when working on anything that is not C.

</comment><comment><USER15> Looks neat. Are you considering a flake8 extension like bandit for easy adoption (in CI and in VS Code)?

</comment><comment><USER16> pip3 install semgrep fails on windows 10 with Python 3.7.8 and pip 20.1.1 and the error seems to be an invalid path separator char.

error: can't copy 'XXXXXXXXXXXXXX\Local\Temp\pip-install-cq40rzma\semgrep- files/semgrep-core': doesn't exist or not a regular file

Anyone here know how to fix that?

<comment><USER7> Semgrep should work on Windows Subsystem for Linux (WSL). Mind filing a ticket for myself and the other maintainers to help debug?

[https://github.com/returntocorp/semgrep/issues/new?assignees...](https://github.com/returntocorp/semgrep/issues/new?assignees=&labels=&template=bug_report.md&title=Invalid%20Path%20Separator)

<comment><USER16> Done</comment></comment></comment>


Apple Has a Vladimir Putin Problem - <AUTHOR> https://www.fastcompany.com/90456530/apple-has-a-vladimir-putin-problem <comment><USER2> Apple should balk and just pull out of Russia over the whole thing. At $3 billion market size for iPhones (according to the article they were not clear if $3B was TAM or rather the iPhone segment of a broader mobile market), that means somewhere between 3 and 6 million Russians are going to be forced to abandon their iPhones. Nothing is more pitiful than watching a long time iPhone user try to operate an Android device. Thats how you end up with a Russian Spring kind of situation right there.

<comment><USER3> iphones will not cause a russian spring of any kind whatsoever. russia is not even directly connected to the internet.

<comment><USER2> Thanks for this piece of information - the full extent of internet censorship in Russia never really crossed my mind - so I did some googling ([https://en.wikipedia.org/wiki/Internet_censorship_in_Russia](https://en.wikipedia.org/wiki/Internet_censorship_in_Russia)) to get up to speed. If there are any better reads on the subject please let me know. Thanks for teaching me something!</comment></comment></comment>