Live data from Hacker News

Questions

patrickcollison.com

161–170 of 493 posts

Re: Questions

#161

Earlier quoted context omitted.

I travel to Hong Kong every few years to visit family. Each time, there are more MTR stations--and on some occasions, entirely new lines. The MTR is just as complex as BART, if not moreso. I think it's worth considering why some places can build things like a metro fast, but others can't.

before they build a new station.... do they do environmental impact studies? was enough time given for the study to complete and people to challenge the results? possibly with another study? are there community meetings to discuss the impact? does everyone in the area have a chance to voice their opposition at an open hearing? do all workers on the construction team have strict safety regulations? require certified t…

All this might explain maybe cutting the pace in half or 1/3. Instead, the pace in America is almost zero. ZERO.

Re: Questions

#162
post #112
post #83

Earlier quoted context omitted.

Israel doesn't have long dark winters and yet they're the pioneers of innovation and start-up culture.

I'm an Israeli and it comes from a few factors: 1. Israelis basically have no choice. If you want to make a good income, working hard in a technology startup(we have very few big tech companies) is one of the very few good options. 2. The army: at a very young age,a decent percentage of Israelis who join the army lead, in high value, high risk situations. That creates a sense of responsibility and strong ambition at…

>and possibly higher intelligence

Interesting what would happen if this is said about any other country

Re: Questions

#163
Why are programming environments still so primitive? In different ways, Mathematica, Genera, and Smalltalk put almost every other programming environment to shame. Atom, Sublime Edit, and Visual Studio Code are neat, but they do not represent a great improvement over TextMate circa 2007. Emacs and Vim have advanced by even less.

Why pretend IDEs don't exist? For my C++ development I couldn't be happier with Qt Creator (which happily manages non-Qt projects too), which does a lot of nice things to speed up my coding and code understanding.

I only use text editors like the ones mentioned when I have to and IDEs whenever I can.

Re: Questions

#164
post #106

> Why are programming environments still so primitive? Because we as an industry made a strategic decision in the late 20th century to value run-time efficiency over all other quality metrics, a decision which has manifested itself in the primacy of C and its derivatives. Everything else has been sacrificed in the name of run time efficiency, including, notably, security. Development convenience was also among the co…

>> Why can't I debug a function without restarting my program?

> Because you use C or one of its derivatives instead of Lisp or one of its derivatives. In Common Lisp you can not only debug a function without restarting your program, you can redefine classes without restarting your program. It is truly awesome. You should try it some time.

There is no technical reason why it shouldn't be possible in C, if you are willing to do without many optimizations. One approach is to make a function stub that simply jumps into the currently loaded implementation. A more efficient but more convoluted way is to patch the address of the currently loaded implementation at all call sites.

The problem is that in general you can't simply replace a function without either restarting the process or risking to crash it. In general functions have some implementation-dependent context that is accumulated in the running process, and a different implementation does the accumulation in a different way. I'm not a lisper, but there is no way this is different in LISP. (And it is not because in C you often use global data. "Global" vs "local" is only a syntactic distinction anyway).

If you're willing to risk crashing your process that's okay. It's often a fine choice. And you can do it in C. The easiest way to implement approach #1 is to load DLLs / shared objects.

Re: Questions

#165
post #35

> Why are there so many successful startups in Stockholm? Several reasons. First, you need to recognize that any Sweden-based startup will, when it gets to be known internationally, have a Stockholm-based office. So it's not about a city of 1 million inhabitants, it's a country of 10 million that's the true number here. As an example, I believe Spotify opened their original offices in both Stockholm and Göteborg more…

Good observations! You forgot one major thing. This goes for all of Finland, Sweden, Norway and Denmark. The winter is horribly dark and boring. (Unless you're super rich). Therefore most turn inwards, staying indoors, thinking deeply at problems, spending endless afternoons and nights on things. Be it software development, game development, car tuning, car engine work, engineering, knitting or just reading loads of…

I believe to have read somewhere that this is also the reason why so many Russians (and people born in the USSR) are great mathematicians and chess players. Math and Chess are both indoor activities and also absolutely unpolitical, which is a huge plus in an authoritarian regime.

Re: Questions

#166
post #123

Earlier quoted context omitted.

I agree regarding the symptoms, but am less convinced that run-time efficiency is the sole (or perhaps even major) cause. If it were, I'd argue that we'd see less usage of, e.g. , Python. I don't know the true cause -- I wish I did. But I do do see a trend towards an ever more "hands-off" style of software development: large volumes of automated (especially unit) tests in preference to interactive approaches (or hybr…

This decision was made and become deeply entrenched long before Python came along. Python is pretty good, but even it is constrained by the decisions that went into the design of C, since Python is implemented in C. Its underlying data structures are C data structures. Its memory management is C memory management. The GIL is there because C.

> The GIL is there because C.

Oh please.

Re: Questions

#167
> Why are certain things getting so much more expensive?

People have become better at capturing value for themselves.

> Why do there seem to be more examples of rapidly-completed major projects in the past than the present?

Culture, competition and selection bias. There are still a lot of successful projects being built, just less so in culture that don't do cooperation well at this point in time. See previous answer.

> How do you ensure an adequate replacement rate in systems that have no natural way to die?

Reform(s).

> How do we help more experimental cities get started?

It has become common to cite those cities as successes without actually having spent much time there and especially not on a "grassroots" level. Chances are that it is actually both better and easier to reform existing cities or areas.

> How do people decide to make major life changes?

Like most things people do things when they are easy. Best way to make a major life decision is to make it easy to do so. Very few people are e.g. moving to countries they know nothing about.

> Why are there so many successful startups in Stockholm?

Stockholm is less worse than many other places, especially so in the end of the 90s, early 00s. Most places in the world are really quite petty and idiotic.

> What's the successor to the book? And how could books be improved?

Multimedia like Microsoft Encarta and An Inconvenient Truth. (There is more to it of course, but that is the direction).

> Could there be more good blogs?

No, journalism has a low enough barrier to entry now that blogs as such are largely obsolete.

> Why are programming environments still so primitive?

Because the stakes are low and there is enough low hanging fruit elsewhere.

Re: Questions

#168
post #137
post #129

Earlier quoted context omitted.

Maybe the reason for this has more to do with the type of development structure that helps a language get scale. The rich powerful development environments you've described exist primarily in proprietary, integrated environments. If you want to integrate the editor, debugger, OS, and language, it helps to be able to coordinate the design of all those components. On the other hand, languages that have gotten to huge p…

Both Scheme and Common Lisp have been open standards since their inception. And both have excellent IDEs available, both commercial and open-source (Clozure CL for Common Lisp and Racket for Scheme). I did my masters thesis in 1986 on Coral Common Lisp on a Macintosh Plus with 800k floppies and 1 MB of RAM. It had an IDE that would still be competitive today, indeed is in some ways still superior to anything availabl…

Lisps are great. Why do you think they haven't been at the forefront of any big trends in application development? Things like the web, mobile apps, data science ...

My guess at an argument here is that the languages popular in the 80s drove the curriculum design of most Computer Science education, and the relative absence of the Lisps (to today) makes the languages seem less approachable to practicing programmers than they really should be.

On the other hand, you can find a lot of Lisp's influence in something like Python (though obviously with many differences both superficial and deep). So in that case, why are Python IDEs so much worse than what you'd see in Lisp? (And is that even the case? Maybe there's just more Python devs and thus more IDEs and like anything, most are crap; but if there one or two great ones then does Lisp really have an advantage there?)

Re: Questions

#169
post #106

> Why are programming environments still so primitive? Because we as an industry made a strategic decision in the late 20th century to value run-time efficiency over all other quality metrics, a decision which has manifested itself in the primacy of C and its derivatives. Everything else has been sacrificed in the name of run time efficiency, including, notably, security. Development convenience was also among the co…

> Development convenience was also among the collateral damage. Don't you find that web & javascript are pretty much a straight denial of your argument ? They're "secure" (meaning we let anyone's javascript code just run in our browsers, even embedded in other people's code, and seriously expect no ill effects) They're extremely inconvenient to develop with. Especially compared to those "run-time above all else" envi…

> They're extremely inconvenient to develop with. Especially compared to those "run-time above all else" environments you mention. For one, you need to know 5-6 languages to use the web.

I'm not sure how this is a denial of lisper's argument. You've picked an environment which you admit has major flaws, but those flaws are independent of the issue at hand.

I've worked in runtime-perf-above-anything programming environments which required the use of many different languages even for the simplest program. It's terrible there, too. That has nothing to do with dynamic languages. In fact, due to the ease of creating DSLs, most of the dynamic languages I've used allow one to get by with using fewer languages.

> On the web, you can't [do this other thing you can do in Lisp], because ...

Indeed, you've picked the one modern dynamic environment which lacks most of the features lisper is talking about. That's not an argument against having those features. I think it's mostly an observation that this particular environment picked a different attribute (runtime security) to optimize for above all else. You'll note that JS-style security is fundamentally incompatible with many of the concepts in OP's original question.

> I think you'll find that pretty much any environment allows this. Even without debug symbols you mostly can do this for C, C++, ... programs.

Can you give an example? I've never heard of a C++ system that let you redefine classes at runtime without debug symbols. I can't imagine how it would work. How would you even inspect the classes at runtime to find out what you're redefining?

Re: Questions

#170
post #106

> Why are programming environments still so primitive? Because we as an industry made a strategic decision in the late 20th century to value run-time efficiency over all other quality metrics, a decision which has manifested itself in the primacy of C and its derivatives. Everything else has been sacrificed in the name of run time efficiency, including, notably, security. Development convenience was also among the co…

I agree regarding the symptoms, but am less convinced that run-time efficiency is the sole (or perhaps even major) cause. If it were, I'd argue that we'd see less usage of, e.g. , Python. I don't know the true cause -- I wish I did. But I do do see a trend towards an ever more "hands-off" style of software development: large volumes of automated (especially unit) tests in preference to interactive approaches (or hybr…

Sometimes I do work this way in the repl - usually when I have little confidence I even understand how to fit together a new library or API call. But if you spend more time in the repl building a data structure and interactively iteratively testing your function, when it is all finished all you have checked into source control is a function, not the tests. You have to then write the tests. In a lot of cases its faster to just write the tests and interact with the code through those. In some language environments this is not exclusive of using a repl - in Haskell for instance it is pretty easy to interactively run a module and tests saved to disk in the repl.
Post reply on HN