Writing Python inside Rust - <AUTHOR> https://blog.m-ou.se/writing-python-inside-rust-1/ <comment><USER2> I know this project may just be for fun, but with WASM targets for all sorts of languages, I'm hoping we get to a future where mixing and matching different languages for different parts of your program will be seamless. Imagine starting a project in an easy language, then migrating pieces to a faster "bare metal" language as needed in a super piecemeal way. Same with moving pieces to a safer language as the project grows, slowly expanding the boundaries of the safe bits as appropriate.

<comment><USER3> Just like the JVM and CLR I guess.

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

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

[https://www.graalvm.org/docs/](https://www.graalvm.org/docs/)

<comment><USER4> _> Just like the JVM and CLR I guess. (List_of_JVM_languages, List_of_CLI_languages)_

I don't see JVM & CLR even with the dozens of language choices on top of the virtual machine runtimes as giving you ways to do "bare metal" programming. I guess one could arguably squint and say Java's JNI or C# P/Invoke and "unsafe{}" gets you some "bare metal" capabilities but that's a stretch.

I go back to the gp's sentence: _" Imagine starting a project in an easy language, then migrating pieces to a faster "bare metal" language as needed in a super piecemeal way."_

For example, JVM/Java doesn't have value types[1] (yet) and that's required for programmer's control of exact and efficient memory layout for many bare metal domains. It doesn't matter what flavor of JVM language you use because you're ultimately limited by the JVM's capabilities which causes excessive pointers to pointers which is inappropriate for some high-performance code.

In C#, some future tech like CoreRT might open up some more "bare metal" programming possibilities but that's not production yet[2]. I remember you couldn't even develop a Windows Explorer right-click menu shell extensions in C# because it was a bad idea to load up 2 different versions of the NET Framework runtimes (until NET 4.0). That's not even that low a level of programming and yet C++ had no such limitation.

I use C# as much as I can but I still have to do 50% my projects in C++ because JVM/CLR are not "bare metal" enough.

[1] [https://en.wikipedia.org/wiki/Criticism_of_Java#Compound_val...](https://en.wikipedia.org/wiki/Criticism_of_Java#Compound_value_types)

[2] [https://github.com/dotnet/corert#user-content-net-core- runti...](https://github.com/dotnet/corert#user-content-net-core-runtime- corert)

<comment><USER3> Since when is WebAssembly bare metal?!?

Apparently you missed the Windows 8, 8.1 and 10 train regarding your "bare metal" compilation from C# and VB.NET code.

.NET 4.0 was released in 2008 and I have been able to use C++ as .NET language since 2001, so ....

In fact one of my first .NET projects, in 2002, was to integrate C++ RPC library into Managed C++, long replaced replaced by C++/CLI with .NET 2.0 release.

Going back to Java, IBM, Aicas, PTC, Gemalto will happily sell you Java compilers that generate AOT native code for embedded deployment targets, not to mention what is running on my phone, where 95% of the OS APIs are exposed only via Java and where your beloved C and C++ code needs to use JNI to access them.

<comment><USER4> _> Since when is WebAssembly bare metal?!?_

Not sure what that is referring to.

 _> C++ as .NET language_

We seem to be talking about 2 different things. Using "C++" style syntax (C++/CLI) in a _managed language with GC_ is not what many systems programmers call "bare metal". I thought it was clear from context that my mention of C++ is traditional "real C++" such as gcc/clang/MSVC and not the C++/CLI.

 _> Going back to Java, IBM, Aicas, PTC, Gemalto will happily sell you Java compilers that generate AOT native code_

But that's not the _JVM_ runtime though. The JVM is what you originally wrote and that's the scope of what I was replying to: ( _" Just like the JVM and CLR I guess. (List_of_JVM_languages ...)"_)

The _JVM_ doesn't really give you low-level bare-metal programming and it doesn't matter what flavor of JVM-language you choose to run on top of it.

And at the risk of further muddying up the discussion with the tangent subject of Java AOT... do any of those Java compilers give true value type semantics or is still references with pointer chasing? I'm not familiar with those compilers.

 _> and where your beloved C and C++ code _

"beloved"?!? Can we tone down this down a bit? I'm just trying to clarify that JVM & CLR really don't span the entire spectrum of programming all the way down to "bare metal" in the way low-level programmers are typically using that phrase. I thought I was making a _neutral_ and factual statement. I.e. I'm not interested in an emotional flamewar.

<comment><USER3> Maybe the tone wasn't be best one, but I would like to know how WebAssembly is bare metal programming to start with.

Also would like to know in what way compiling natively to machine code has to do with having value type semantics on the source language.

<comment><USER4> _> , but I would like to know how WebAssembly is bare metal programming to start with._

We are getting into "splitting hairs" territory but let me attempt to untangle this thread because it seems to be hung up on what _" bare metal"_ means.

Yes, if we're using "bare metal" to only mean real semiconductor chip, WASM is not that. It's an abstract virtual machine. So yes, in that strict sense, WASM is analogous to JVM and CLR.

But.....

I'm _charitably interpreting_ gp's comment (6gvONxR4sf7o) and he's using WASM as his _relative_ (not absolute) perspective of _that_ being "bare metal". Ok, if we play along with that, WASM is _not_ analogous the JVM/CLR because it is lower level[1]. Thus a non-managed language like C++ can more easily target WASM-flavor-of-bare-metal for high performance rather than a managed-C++/CLI targeting .NET CLR.

Yes, it's a subtle difference. WASM is more "bare-metal-ish" than JVM ... relatively speaking. I just don't think JVM languages can really do the same thing as WASM as the Google/Mozilla/Apple/MS specifically engineered Web Assembly to be a target for low-level-bare-metal languages like C/C++. In contrast, Sun & James Gosling deliberately didn't engineer JVM Java byte code to be a compilation target for low-level C/C++.

This means something cpu-intensive like AutoCAD or possibly Adobe Premiere Pro can hypothetically be written to target WASM and will perform better than if those apps were re-written in Java to target a Java web browser plugin. E.g. Java's JVM doesn't have value types and that architecture choice is very unfriendly to storing/manipulating millions of 3d points for a CAD program. In contrast, WASM's architecture opens up a few more "bare-metal-ish" programming domains.

The various choices of JVM languages like Kotlin/Clojure/JRuby/etc actually don't address what WASM is attempting to accomplish.

[1] [https://www.quora.com/How-does-Java-bytecode-compare-to- WASM...](https://www.quora.com/How-does-Java-bytecode-compare-to-WASM-code)

<comment><USER3> Yet, GraalVM compiles LLVM bitcode and WASM bytecode just fine.

[https://www.graalvm.org/docs/reference- manual/languages/llvm...](https://www.graalvm.org/docs/reference- manual/languages/llvm/)

[https://www.graalvm.org/docs/reference- manual/languages/wasm...](https://www.graalvm.org/docs/reference- manual/languages/wasm/)

A JVM and respective JIT compiler all written in Java.

And I still doesn't understand what WASM does for C++ that CLR doesn't do, given that I can write straight C89 or C++ with C++/CLI, just like using gcc or clang doesn't force me to use their language extensions.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> So, at first I thought this approach is doomed, because you lose comments, and what looks like a comment to Rust may not look like one to Python. Example:

      x = y // 2 # floor division

But then I decided to look at the docs:

[https://doc.rust-lang.org/proc_macro/struct.Span.html](https://doc.rust- lang.org/proc_macro/struct.Span.html)

And I noticed source_text, which "preserves the original source code, including spaces and comments"!!!

Why not just use this from the start then?? Seems like the easy way out, no?

(Disclaimer: I don't know Rust, can't even write hello world.)

<comment><USER6> The author likely just barely missed its introduction. While the article is written recently, the implementation it talks about was published first in early April 2019, right about when source_text was first introduced into nightly.

<comment><USER7> I am the one who contributed Span::source_text to rust. My motivation for doing that was exactly the same as the author of the blog post, and was to help implementing the cpp! macro which embeds C++ within rust just like this python! macro. [https://docs.rs/cpp/](https://docs.rs/cpp/) However, I still can't make use of it today because it is not stable yet, and even proc_macro2 does not implement it (and this is not trivial to implement there)

<comment><USER5> Wow. The fact that you care about this being stable implies that you plan to use this "for real"; the fact that you actually implemented this implies you care enough to put in some real work. So you must have a use case in mind, and I am not imaginative enough to guess what it might be. Is it just about convenience so you don't need to bother with putting your C++ code in a different file? Or is there more to it?

<comment><USER7> I'm using this to write Qt bindings: [https://github.com/woboq/qmetaobject- rs/](https://github.com/woboq/qmetaobject-rs/)

> Is it just about convenience so you don't need to bother with putting your > C++ code in a different file?

Yes, mostly. I find that having the code in place makes a big difference. I do not like useless levels of indirection and context switches while coding. This way is much better then having to edit three files (the .cpp, the ffi module, and the caller) each time I want to do a call into C++ while making sure they are in sync.

<comment><USER5> That actually makes sense! Cool!

</comment></comment></comment></comment></comment></comment><comment><USER8> Using Span to get the token location is exactly what I needed! Thanks. I wrote a blog post[0] the other day about making a css macro that compiles into rust for the use in Yew, a front end react like framework.

> However, in rust, there's no way to differentiate .a.b with .a .b

Now I know that the above is incorrect. I would have never thought of spans so I thank you again

[0] [https://conradludgate.com/posts/yew-css/#what-are-the- downsi...](https://conradludgate.com/posts/yew-css/#what-are-the-downsides-of- yew)

</comment><comment><USER9> The blog post shows two Python snippets starting with "if True:" and different indentation and says the snippets "have a different meaning". However, in this case the difference between the snippets is mainly in their syntax and not in their meaning. The example would have been better if "if True:" was replaced by "if False:" or "if foo:".

            if True:
                x()
            y()

            if True:
                x()
                y()

<comment> m-ou-se Good point! Updated.

</comment></comment><comment><USER10> What is the use case for embedding Python code in a Rust program?

<comment><USER11> That's exactly what I thought when I read the title. It's very frustrating how many landing pages, project readmes, blog posts, etc that don't answer the question "why?". I usually need to know that before going further when I come across something that I've never heard of before. If they don't have the "why?" somewhere easy to find I just close the tab.

<comment><USER12> It's a bit of a guilty pleasure for me to read these kinds of weird things with no practical application. It's just a little refreshing to read about something technically possibly, but frivolous (no offense meant to the OP, of course) just because it can be done.

<comment><USER13> "Because it can be done" is a very solid answer to "Why?"

</comment></comment></comment></comment><comment><USER14> At FOSDEM there was a talk about boosting Python with Rust [1]. Might be interesting for the people checking this.

[1] [https://fosdem.org/2020/schedule/event/python2020_rust/](https://fosdem.org/2020/schedule/event/python2020_rust/)

</comment><comment><USER15> Is it common to embed one language's code directly inside another language like this?

Lua is often used tightly-coupled to C, and it doesn't have the significant- whitespace issues that Python shows here. Even so, I've only ever seen it used in separate `.lua` files, never embedded directly within `.c` files.

<comment><USER16> I don't think it's common nor it's a best practice as you can't apply static analysis on your embedded code. But it's really cool Rust allows that and it can be a ad-hoc solution when you need to write a piece of code fast inside of rust

</comment></comment><comment><USER17> While I've seen people doing this, I've never done it. I've done the opposite in a small open source project of mine(arguably abandoned at this point due to lack of time and contributors). That said, there is a huge potential here - your code may require some small operation that is cheap to execute but would take you 2 minutes to write in python while it would take you an hour of doing the same in rust. I can think of some use cases for this. Nice article!

</comment><comment><USER18> Why call python from Rust? I think calling rust from python would make more sense. Use it to optimize python functions like how python libraries do with with C (i.e. numpy)

<comment><USER19> Suppose I'm building an application in Rust that processes a lot of data, one of the steps in processing that data I maybe want to run through a Python tool like SpaCy or Flair.

How would I go about doing that? I could put the Python code behind a little http API and call it that way, but that's a bunch of overhead and extra stuff to maintain just to analyse some text. If I embed said Python tools in my Rust code then I can call those tools with significantly less overhead and complexity.

<comment><USER20> Why does it have to have a little http API? Why not just spawn the python tool?

<comment><USER19> And communicate with it how?

If you're suggesting spawning things over shell/cmd line I'm of the opinion that this a generally bad idea.

<comment><USER20> Just fork and exec. Or if you fancy, posix_spawn a separate process. Then communicate over pipes, or if you have a lot of outputs from these tools, collect results from the file system.

Really, where does this fear of spawning things come from?

<comment><USER21> Python module loading tends to be quite slow. Loading Tensorflow on our Heroku production environment takes 10 seconds (5 on my laptop). A client of mine running Rust and Python on Embedded Linux device found that loading numpy/pandas modules took over 5 seconds (laptop was under 1), and their computation took just x00 milliseconds. 10x overhead...

So the spawning of a short-lived subprocess approach has massive overhead, only suitable for multi-second workloads.

</comment></comment></comment></comment></comment></comment><comment><USER22> I wrote this [0] up a couple of weeks ago, which is a hack to put shell code in your rust, with reasons why you would want to.

[0]: [https://neosmart.net/blog/2020/self-compiling-rust- code/](https://neosmart.net/blog/2020/self-compiling-rust-code/)

</comment><comment><USER23> I'm having issues seeing the whole post, when I scroll down i just see white, and when I click the subject headers from the menu it jumps down half the page and the mouse wheel scroll gets locked. I'm using Chrome on MacOS.

</comment><comment><USER24> Lua is a better fit for Rust, because it doesn't have the threading restrictions of (C)Python. With Lua you can run a thousand parallel vms in the same process if you want.

But the macro hacks are impressive!

</comment><comment><USER25> So I am not the only one with questions regarding its use case? I cant seem to conjure any.

<comment><USER26> Quickly introducing battle-tested data science frameworks, snippets and patterns without having to replicate them in Rust.

</comment></comment><comment><USER27> There's a typo where stringify! is referred to as strinfigy!

Cool article btw!

<comment> m-ou-se Thanks! Updated.

</comment></comment><comment><USER28> Am I the only person having trouble reading this blog? That color scheme makes my eyes bleed.

It seems like it's a light gray background with a slightly (not much) darker gray text. The contrast and thin font weight is terrible.

And the pink is practically vibrating on the page.

At least the blue is okay.</comment>


Explanation of Macintosh II's memory limit - <AUTHOR> https://68kmla.org/forums/index.php?/topic/27558-explanation-of-macintosh-iis-memory-limit/ <comment><AUTHOR> I wonder why nobody wrote "Undocumented Mac OS" books. This is an issue where the confusion lasted for years thanks to Apple's documentation.</comment>


2008 Cybercities report: New York is #1, the Valley is #3 - <AUTHOR> http://www.thestandard.com/news/2008/06/24/aea-releases-cybercities-report-2008

<comment><USER2> For once, I would love to see a bit of a global perspective on one of these articles. US cities would still fare well, but to mention Omaha without even bothering to include cities like London, Copenhagen and Vancouver is pretty useless.</comment>


A Tragically Comedic Security Flaw in MySQL - <AUTHOR> https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql

<comment><USER2> From user command line:

for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

Confirmed it gets in easily on:

Ubuntu 11.10 (GNU/Linux 3.0.0-14-server x86_64) mysql 5.1.62-0ubuntu0.11.10.1

Does not seem to apply to: 5.1.58-1ubuntu1

</comment><comment><USER2> Quick way you can check for the memcmp issue in your libc:

<http://pastie.org/4064638></comment>


Tech to Detect Misinformation Will Be More Expensive Than Tech Which Produces It - <AUTHOR> https://sourcedfact.com/blog/tech-to-detect-misinformation-vs-to-produce-it <comment><USER2> Super interesting. I love the point about "journalism's proof of work".

Very excited to see developments in this area directly tackling systemic problems in journalism and reporting.

</comment><comment><USER3> Getting to 90% is always easier than that last mile of perfection. This is spot on for content</comment>


A Woman's Life in Search Queries (2006) - <AUTHOR> http://www.pentadact.com/2006-08-09-aolol/ <comment><USER2> Hosted search history: [http://www.pentadact.com/711391.htm](http://www.pentadact.com/711391.htm)</comment>


Microservice Architecture Book (OReilly) available for free now [pdf] - <AUTHOR> https://www.ca.com/content/dam/ca/us/files/ebook/microservice-architecture-aligning-principles-practices-and-culture.pdf <comment><USER2> No study, no numbers, no arguments, but principles, quotes and opinions.

Ideologs are out of their bag again.

</comment><comment><USER3> Part of the sales strategy from CA.

[https://www.ca.com/us/products/apim/microservices- architectu...](https://www.ca.com/us/products/apim/microservices- architecture.html)

There is also a "Securing Microservices" free ebook in there.

I'm OK with companies promoting their technologies by means of books. But with straight-ahead technology books, as in "Programming Windows" and not with books that are mostly superficial concepts thrown together to try to persuade the buyer.

Create the tech. Show us what it can do. Let us buyers decide.

</comment><comment><USER4> Any idea what license it has? I can't any CC references.

</comment><comment><USER5> has o reilly really sunk this low? this is sad. i owe my career to o reilly , in significant measure.</comment>


React: Finally, a great server/client web stack - <AUTHOR> http://eflorenzano.com/blog/2013/01/23/react-finally-server-client/ <comment><USER3> Am I the only one that kind of thinks most websites should just be static pages? Like, I get pretty irritated when I go to read a blog post on Medium or wherever and it loads a header and a blank page, and then loads a bunch of javascript (mostly tracking and analytics frameworks), and finally goes out and gets the actual content. And then if I scroll down, it has to load some more garbage from Disqus or something.

PLEASE JUST GIVE ME A STATIC PAGE WITH YOUR CONTENT.

I really do not care if the comments don't refresh live.

<comment><USER4> Not all use cases are equal. Static pages might work great for static content, but what about something like GitHub? Wouldn't it be nice to see the issues list refresh live when somebody else closes one?

<comment><USER5> What are the cases for that feed role?

Why not deliver an RSS/Atom feed with the page and a standard feed reader within HTML that could present the content, polling at specified intervals.

In the same way that HTML finally standardized on HTML5 semantic page markup (not that HTML1.0 was grossly inadequate), and we're finally getting integrated video / multimedia support (though lacking the ever crucial "off" switch), once you dig through all the bullshit and hype, most of Web 2.0 corresponds to "we can update the page you're looking at while you're looking at it".

Some client-side capabilities to sort and filter content would finish off about 90%+ of the use cases. Good enough.

And you'd end up with far fewer monstrosities such as Facebook, Gmail, G+, etc., in which _a simple content stream_ has a client-side footprint of 1-2 GB. SRSLY?

Yes, the standard problem of having users upgrade their client software to support the featureset remains, but there are still huge numbers of what are effectively Web 1.0 sites (Craigslist comes to mind) that are phenomenally useful and successful.

I've had a very late and passionate come-to-Jesus love affair with RSS/Atom feeds. Taking Craigslist, for example I can get an RSS feed of any given category search:

[http://www.craigslist.org/about/rss](http://www.craigslist.org/about/rss)

Remember "Web agents", you know "a personal online assistant that would scour the Internet for you"? Well, this is it.

Combine that feed with rsstail and multitail, and you can track items of interest in a console window. Find something particularly useful? Fire off an email alert to yourself.

[http://www.reddit.com/r/dredmorbius/comments/1udv6i/further_...](http://www.reddit.com/r/dredmorbius/comments/1udv6i/further_adventures_in_rss_chrome_reader_extension/)

I've got Chromium running on my Thinkpad T520i, sucking down about a gig and a half of RAM. newsbeuter tailing 85 feeds is around 300 MB (a single Chromium browser tab), and rsstail weighs in at about 145 MB resident. Since they're only intermittently active, they swap out with very little performance overhead.

The existing Web design model is a fucking trainwreck waiting to happen. The browser-as-app-platform metaphor has its advantages, mostly in rapid development, though that's also a weakness (users _HATE_ change), and it's a bastardization of two competing uses (content vs. app).

Much of the design and feature set serves advertisers and NSA water-carriers far more effectively than it does users. Sadly, that's where the funding comes from, so it's no real surprise. Be careful what you incent for, you'll get it.

<comment><USER6> With the amount of inane FUD you're spreading I can't work out if you're genuine or a troll. Your text only/image minimal feed reader is using less RAM than a browser designed to load hundreds of images and get the most out of the RAM available to it? Shock and horror! And this "train wreck" you're referring to... I don't see it. I see happy clients that can pay once and get an application that is useable on any platform, from anywhere in the world, is as fast as a native application, and can be seamlessly scaled up to meet demand. Where is the downside in that? Game over, purely native apps, you lost the war (except for specific things that need to operate locally). Sure there are native phone applications, but they are essentially thin clients for web applications anyway.

<comment><USER5> You're absolutely correct that browser-based applications offer some very compelling advantages: they're run-everywhere (or at least, many wheres), they're rapid-deploy, they're particularly well-suited to data presentation and interaction tasks (which constitutes a large fraction of all apps), and rather importantly for small development shops, they offer a compelling path out of legacy support hell. These are all true.

So are my critiques. In particular, that the Web alternatives _aren 't_ as fast or light as native apps.

Purely native apps _haven 't_ "lost the war". They _are_ the battleground for the most part on mobile devices, as you note, though you omit the observation that these typically operate via an API, which is in fact the direction I'm leaning as a hybrid browser/app model. Fully native apps retain crucial advantages in many spaces.

I'm curious as to what aspects of this you consider to be FUD? I'm reporting actual memory utilization for apps doing comparable tasks, at least as far as rendering raw information is concerned. If you want to consider graphical presentation, I've also got a number of PDF files open using xpdf and evince, both of which perform full graphical rendering including images. The maximum RSS for these is 14 MB, and the 20 or so processes running here have far less system impact than my chromium child processes.

The train wreck I'm describing is precisely that. Light websites are generally not an issue, but the full-fledged app instances, again, Google+, Gmail, and the like, cause wild amounts of swapping and instability, to the point that I make minimal use of them, and where possible find alternatives. The RSS/Atom readers I mention aren't doing the full work of a Web browser, but that's precisely the point: for keeping me informed of an information stream, they're far more than sufficient, and require far fewer resources. I can open an item in a console-mode browser (and yes, that's old-school and an acquired taste), _or_ pop over to a browser and read the item. It's far less overhead than keeping the stream in my browser at all times, and as I noted, the RSS readers offer hooks to perform other local actions if I choose.

I've written recently of the frustrations I'm increasingly having with browsers in general: they serve neither the needs of application users nor of content readers particularly well. Quoting myself:

"It's neither a good reading environment -- for that you'd want something like Readability, Pocket, Instapaper, or an eBook management tool such as Moon+Reader, Kindle, or (bad as it is) Calibre -- nor a decent applications environment: it's bloated, crash-prone, slow, full of security holes, and underfeatured relative to native applications.

"However in both cases the browser's ability to load and display or run arbitrary content makes it convenient."

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

I see a few possible directions things could head:

⚫ Continue down the current path. This is the course of least resistance.

⚫ I don't know where the HTML working group(s) are headed, but continuing the pattern of HTML5 of offering highly semantic markup and leaning in the direction of an API model of HTML rather than a designer model (or in addition to) could be useful.

⚫ We now have <header> <article> <aside> and <video>. How about a <stream> as I described, and perhaps native <plot> features which could present graphics based on realtime data updates? Again, a huge class of applications now essentially consists of "poll regularly for new data, update stream, present graphics, respond to user inputs".

⚫ A content-oriented browser which strips out virtually all distractions, and provide vastly improved content management and referencing capabilties (see: zotero). Readability, Instapaper, Pocket, etc. approach this. I presently have a local "unstyled.css" stylesheet which I apply to many sites. It works best on bare-naked pages (without any native styling or table/frame based page layout) but works pretty well on most minimally-styled pages. And it is, for my purposes at least, almost always a _huge_ improvement over native presentation. In other cases I've extensively modified how pages present themselves. See: [http://www.reddit.com/r/dredmorbius/comments/1tniu3/user_sit...](http://www.reddit.com/r/dredmorbius/comments/1tniu3/user_site_restyling_multicolumn_vs_fullwidth/)

⚫ An application-development platform based on (mostly) standard APIs and an HTML/SHTML transport back-end. This would be the area you're most interested in.

I'm not convinced this is the way things should go, but it seems it would resolve some of the present tensions in Web development and use.

</comment></comment></comment></comment></comment><comment><USER7> If you used this with Backbone, could you throw Backbone's entire View object away and use this instead?

<comment><USER8> Yes, and that's a great use case for it.

But you can also use your existing Backbone Views (if they have some nice, say, formatting or data-munging-for-display logic in them) and simply replace your _render_ function with React.

The next step you can take is replacing your HTML templates with React's JSX templates, if you'd like...

<comment><USER7> Thanks for replying and for your work on CoffeeScript and Backbone. I might give this a try as I love Backbone's Model layer. I think I like the second approach you suggested better. That might almost turn the Backbone.Views into ViewModels, right?

I'm still up in the air on how I feel about the whole JSX thing but I'm willing to give it a try.

<comment><USER9> Fwiw JSX is totally unnecessary, and more verbose anyway. Using React without JSX feels almost like using HAML or something for your HTML.

</comment></comment></comment></comment><comment><USER10> Wouldn't this make it even more difficult for search engines to index your pages?

Also, I'm not sure we want a full rendering on the server. That will make the page appear to have a longer loading time rather than the other way around. Unless I'm misunderstanding what you're trying to say.

It does sound interesting though. I'm looking forward to your follow up posts.

<comment><USER11> Various companies (in one famous case, Twitter) have found that server rendering beats client rendering for initial rendering speed. React is designed so that if you care about server rendering, you can have the best of both worlds -- using Node you can render a component to HTML on the server, then pick it up the prepopulated DOM in client-side JS once your page loads. Since the server sends down plain HTML, search engines are happy too.

<comment><USER12> Exactly this. Serving fully formed html and picking it up by a client-side framework is great for crawlers and also great for performance. In addition to React, you should check out Rendr ([https://github.com/airbnb/rendr](https://github.com/airbnb/rendr)) - it's a really cool library for doing this via server-side rendering of Backbone views.

<comment><USER13> Downloaded rendr, fired up the first example simple_00, opening links - <USER2> and Repos, was painfully slow. With server MVC frameworks at least there is an indication by the browser that page you clicked on is currently loading. With client-side MVC frameworks pages usually load instantly and data arrives shortly after. In rendr, maybe it's just a terrible example, you wait 2+ seconds for a page to load and there is zero indication that page is loading.

</comment></comment></comment></comment><comment><USER14> Can someone explain to me what "isomorphic" means in the tagline for the linked Director library[1]? I have no idea how isomorphism is supposed to play into all of this?

[1] "a tiny and isomorphic URL router for JavaScript [http://github.com/flatiron/director"](http://github.com/flatiron/director")

<comment><USER15> It means that it can be used on client and server. Its a term coined by (I believe) the nodejitsu people in this article [0]. Airbnb also used the term to describe their rendr library [1] which aims to allow exactly that: rendering on both client and server

[0] [http://blog.nodejitsu.com/scaling-isomorphic-javascript- code...](http://blog.nodejitsu.com/scaling-isomorphic-javascript-code/)

[1] [http://nerds.airbnb.com/isomorphic-javascript-future-web- app...](http://nerds.airbnb.com/isomorphic-javascript-future-web-apps/)

<comment><USER14> While I like the idea man do I her hate that term. You can't just be isomorphic: you must be isomorphic to or with respect to _aomething_.

It's like McDonald's named their new hamburger the RESTful Patty.

</comment></comment></comment><comment><USER16> > You can choose to use this, but after getting over my initial distaste for > it ("Ack! Who got markup in my code!"), I could never go back to not using > it.

Or you could just use HTMLbars/Handlebars. Seems like "JSX" is just a more complicated version of a Mustache-esque logic-less template.

<comment><USER17> The big difference is that Handlebars always produces strings that your browser has to parse as HTML. Handlebars also doesn't know how to mutate between states, meaning if you add a class 10 levels deep in the template the best you can do is re-render the entire thing.

JSX + React produce functions that return React's representation of the DOM, their "virtual DOM", and React knows how to make small mutations based on state. If a change in state only needs to add a class 10 levels deep in the hierarchy, that is the only change that happens in the real DOM; it doesn't have to re-render the entire template.

<comment><USER18> HTMLBars is rendering to DOM instead of to string, to enable React-level performance: [http://jsfiddle.net/Ut2X6/10/](http://jsfiddle.net/Ut2X6/10/)

<comment><USER17> Thanks for the demo link; I hadn't heard of HTMLBars.

It makes for a good demo I suppose, but I prefer React in a couple places: there's no separate template, style construction is done with an object and not a string (constructing that style string for HTMLBars seems error prone), and the connection between the values on the Ember object and how they will be used in the DOM is guessed only by naming convention. You could use `this.set('hotdogs', count % 255)` and reference 'hotdogs' in your template in place of 'color'.

<comment><USER19> There is a very nuanced set of performance (mem and cpu) and usability tradeoffs you make when adopting a dirty checking vs change tracking system. I'm working on coming up with a reasonable talk about it.

</comment></comment></comment></comment></comment><comment><USER20> I come from an Ember.js background and its router / nested layout management is the best I have used. I like react, and have been diving into OM as well in my free time, but I'm not sure of the best way to approach routing / page transitions.

When I start an app, I do not think from the bottom up, which is the react way. I want to start with the login page and redirects, or get the major page transitions down. I'll be interested in seeing how you approach that.

<comment><USER21> I don't think react speaks to that, nor does it care to speak to that. It only addresses the view component of the app.

</comment></comment><comment><USER13> I would be interested to know what exactly React solves when we already have so many options - Ember, Angular, Backbone to do the same thing.

Why would one want to increase the complexity of the application by introducing "yet another new thing" on an already complex architecture.

I am just not sold on React. If someone could show a demo of why should we use React instead of, Backbone.View for example, then we can talk.

<comment><USER22> I'm just reading about React now, but it seems it might be appropriate when you have a lot of stuff that needs to be reused

Then again, Knockout would also be pretty good at this, so I dunno. There are a lot of criteria for evaluating a framework... development speed, maintainability, simplicity, functionality. And a lot of it is better evaluated experientially rather than theoretically.

<comment><USER23> Knockout.js is slow. React seems fast thanks to their virtual DOM. It matters when you want to develop a web app that caters for mobile clients too.

</comment></comment></comment><comment><USER24> The lack of understanding and amount of hatred against web applications (different from web pages) is both sickening and rejuvenating. It is sad because the article is fairly clear, it describes the future of most computing (since most "human" computing will happen on the web) and it really shouldn't be hard to understand. But I am glad that most of the top commenters here instead focus on hating "webdevs". It means these people will stay on the desktop and won't create clones of desktop applications in the browser (see google docs for a missed opportunity of a better office system). History will show which way things shifted, no need to flame about it here now.

</comment><comment><USER25> This is confusing. [http://www.reactjs.com/](http://www.reactjs.com/), which I believe predates this other react.js

<comment><USER16> Not sure anyone actually cares about that older lib since Facebook's ReactJS is what powers Facebook.

</comment></comment><comment><USER26> [http://www.ractivejs.org/](http://www.ractivejs.org/) is another similar client-side view framework that uses a shadow DOM.

I don't know how suitable it would be for server-side rendering though.

</comment><comment><USER27> I am learning how to make desktop apps with Reactjs + Backbone + PouchDB and Brackets-Shell just for fun and learning purposes, so far it has been a very exciting experience.

<comment><USER28> I'm doing angular.js + node-webkit for my desktop app, not bad. How is your Brackets-Shell experience?

</comment></comment><comment><USER28> Any demo? Or I guess it's at the end of the series.

<comment><USER29> You can see a little demo of React + Express + Browserify + server side rendering + routing with History API — [https://github.com/andreypopp/react- app-express](https://github.com/andreypopp/react-app-express)

<comment><USER30> This deserves its own blog post.

You can probably skip explaining client.js (which seems to be stuff one can learn from React's docs) and just dive in to server.js and the npm packages that you wrote that this app uses.

I've been uninterested in React but really like the idea of server-side rendering for js-heavy apps. Besides Rendr, do you know of any other similar libraries/frameworks?

</comment></comment></comment><comment><USER31> Can anybody explain to me how to use react.js without their "guard" feature. I need my app to throw the error natively and not wrapped by the framework.

Thanks ([http://stackoverflow.com/questions/21040538/how-to- disable-t...](http://stackoverflow.com/questions/21040538/how-to-disable-the- guard-feature-in-facebook-react-when-working-with-pure-java))

<comment><USER11> Can you be more specific with the problem you're seeing? An example jsfiddle/jsbin would help. If you're referring to the fact that React sometimes catches and rethrows exceptions making it harder to debug, that's something I'm planning to try to fix soon. In the meantime you can use the blue stop sign in Chrome's Sources panel to catch the error as soon as it's thrown.

<comment><USER31> yes, that's the problem.. I don't like too much the blue because hangs all the time on jquery on page refresh...

</comment></comment></comment><comment><USER32> God I am sick of the passive-agressive "Finally, we have something GOOD! for X" titles that disparage everything that already exists for X.

I saw a reddit article yesterday about "Finally a way of doing X that doesn't suck" despite there already being libraries to do X.

This casual dismissal and disparaging of existing work is the kind of thing that causes people to give up on stuff (WhytheLuckyStiff for example)

It also causes me to be instantly antagonistic towards said new library / feature. It raises the bar that I expect them ot reach. "Oh? You are the ONLY good way to do something? Prove it"

<comment><USER33> You are making the same sort of evidence-less dismissal that you accuse the OP of (whereas the OP actually explains the reasoning behind his assertion).

If you want to question the post's premise, at least point to some of these libraries that you believe are on par with react. Personally, I'm not aware of any that have nearly as compelling a model with regard to performance, composability, and minimization of mutable state. But if they exist, I'd love to know about them.

<comment><USER34> There's no dismissal in the GP's post. They were merely stating that pretending that some project X is an island is off-putting (and it never is one), and that by claiming that it is, you put some readers already familiar with the field in a defensive mood rather than ready to read about something new.

</comment></comment></comment><comment><USER35> I don't want to write a bunch of markup next to my javascript.

<comment><USER36> JSX isn't markup - it's XML which translates to Reacts internal representation which looks something like:

<div className='foo'>bar</div> \-->

React.DOM.div({ className: 'foo', children: 'bar' })

You don't have to use it - it's a convenience provided for designers (and arguably developers who have realised that templating provides a false separation of concerns). Om notably ([https://github.com/swannodette/om](https://github.com/swannodette/om)) ignores it.

<comment><USER37> "JSX isn't markup - it's [Extensible Markup Language]"?

<comment><USER38> JSX isn't markup, it's a compiler that transforms common HTML-like to custom React.DOM objects. From the doc [0]:

> JSX transforms from an XML-like syntax into native JavaScript.

[0] [http://facebook.github.io/react/docs/jsx-in- depth.html](http://facebook.github.io/react/docs/jsx-in-depth.html)

</comment></comment></comment></comment><comment><USER39> I still don't get it that you would like to write in an inferior language such as js on the server side. Cm'on its broken by design. There are a lot of better alternatives.

The only reason to use .js on the serverside is that you don't know better.

<comment><USER40> To a degree I agree with you but I'm downvoting for the trollish and inflammatory way you phrased your comment.

However - there are lots of reasons to use javascript on the server even if we accept there are superior languages.

<comment><USER27> Can you please name some of those reasons?

<comment><USER40> The main one is the ability to reuse code on server and client. It's not something to be sniffed at.</comment></comment></comment></comment>


Any Boston founders/YC addicts wanna meet up? - <AUTHOR>

<comment><USER2> I find this question pretty interesting, not because I can meet up, but because you would come here to look for people, and not go to something like meetup.com.

meetup.com won't cut it. There should be something like a cross between meetup.com and flashmob.com and provide widgets for meet-up groups to relevant sites...

<comment><AUTHOR> Well I suppose I asked here because I knew that I share the same (very specific) interests as other YCers. Other people at Meetup may not necessarily even know about YC or Paul Graham or any of the other things we as a group tend to find interesting/cool.

<comment><USER3> I don't think he's suggesting you shouldn't have posted it.

</comment></comment></comment><comment><USER4> Join the Boston Startup Meetup group on Yahoo!

<http://finance.groups.yahoo.com/group/boston-startup-meetup/>

We're having a get together next Wednesday evening in Cambridge.

Also, there's OpenCoffee Boston which is a working session between entrepeneurs and VC's: <http://boston.heyletsgo.com/event-122245>

You can email me if you want to know more, or would like to get together: patfitz06 at gmail

</comment><comment><USER5> A meetup at last week's WebInnovators conference would have been perfect. Unfortunately the next one is 2 months away.</comment>


Build Your Own Quad-Core Machine With The Tempest Case - <AUTHOR> http://www.gamedev.net/features/reviews/productreview.asp?productid=713

<comment><USER2> I wish the author had made a _(edit: more susbtantive)_ comment about how quiet (or loud) his machine ended up. With all those fans, I'd guess it would sound like a jet, but maybe the case is designed to handle that quietly?

<comment><AUTHOR> From the end of the article:

Advantages: * Despite the number of fans, it was quite a bit quieter than I expected.

<comment><USER2> Yeah, I saw that, but what were his expectations? I mean, how noisy is it?</comment></comment></comment>


Mob lynchings fueled by WhatsApp messages sweep India - <AUTHOR> http://www.washingtonpost.com/world/asia_pacific/as-mob-lynchings-fueled-by-whatsapp-sweep-india-authorities-struggle-to-combat-fake-news/2018/07/02/683a1578-7bba-11e8-ac4e-421ef7165923_story.html <comment><USER2> when the site has a paywall you're essentially sharing an advert.</comment>


Enrollment In Harvard's Intro To Computer Science Jumped 590% In 10 Years - <AUTHOR> http://www.fastcompany.com/3017439/fast-feed/enrollment-in-harvards-intro-to-computer-science-jumped-590-in-10-years <comment><USER2> This may be somewhat misleading, because I believe the number had fallen a lot before 2004. I.e. it may have gone up less in 15 years than in 10.

<comment><USER3> That's fair, but I think there's more than one causal factor. Of course, the rise in programming in culture plays a role, but I think David Malan might be more important—I shopped CS50 the year before he started and took it a year later from him, and he's extraordinary. He has reportedly made it his mission to make it the biggest and most popular class at Harvard, and is nearly there. It's been an incredibly well-oiled operation from the beginning, but now the level of support, the project fair, his lectures, etc., are finely honed.

If someone could do/had done the same thing to CS51, I might have fonder memories of my first Lisp and object-oriented experiences...</comment></comment>


Why do some people get CTE? It may be in their genes – CNN - <AUTHOR> https://edition.cnn.com/2018/11/03/health/genetic-cte-severity-study/index.html <comment><USER2> Common table expressions are in my genes? Nice - SQL for days.</comment>


Use Google Street View Maps & Serve More Time - <AUTHOR> http://www.readwriteweb.com/archives/use_online_map_to_steal_in_louisiana_you_may_get_a.php <comment><USER2> I guess that's another reason why experts, not elected representatives, should work on the details of criminal law.

I really cannot imagine that this will do anything more than making criminal law more complex and arbitrary.

<comment><USER3> Without going into the fuzzy enforcement details of the law, it is still refreshing to see some "blame" shifted specifically to a malevolent user of Google Street View/etc. In other words, instead of these legislators incessantly blaming Google / declaring Google Street View evil, they're focusing _only_ on people who use it to cause harm.</comment></comment>


GA Tech Release Calculator to Estimate Risk of Covid-19 Exposure at US Events - <AUTHOR> https://covid19risk.biosci.gatech.edu/ <comment><USER2> AFAICT, the site computes the risk that at least 1 person out of a group of N people will carry the virus. It does this by estimating the percentage of the population likely to be carriers.

I think it overestimates the number of carriers. For SC, it is estimating 400K carriers, or about 9% of the population. I think that estimate is absurdly high. For comparison, SCDHEC is reporting 350K cumulative cases (58K reported).

The number of carriers out in public is not the same as the number of active infections. If you know you're sick, you're going to stay home and not be at an event. So what we really want to know is how many of the active infections are presymptomatic. We can do this by forecasting the number of cases over the next couple of weeks, and work backward using a distribution for the incubation period (very roughly: 0% 0-2 days, 25% 3-4 days, 25% 5 days, 25% 6-7 days, 25% 8-11 days). Then multiply by an under-reporting factor (which may have been 20x or more early on, but is likely much smaller now that we have widespread testing).

</comment><comment><AUTHOR> More information about the project can be found here: [https://cos.gatech.edu/news/georgia-tech-researchers- release...](https://cos.gatech.edu/news/georgia-tech-researchers-release- county-level-calculator-estimate-risk-covid-19-exposure-us)

The site appears to be suffering from the influx of users right now.</comment>


Why you shouldn't bother creating a mobile app - <AUTHOR> https://medium.com/inside-birdly/why-you-shouldn-t-bother-creating-a-mobile-app-328af62fe0e5#.l8x422555 <comment><USER2> On the front page - [https://news.ycombinator.com/item?id=10710588](https://news.ycombinator.com/item?id=10710588)</comment>


Why I Will Not Sign the Public Domain Manifesto - <AUTHOR> http://www.fsf.org/blogs/rms/public-domain-manifesto <comment><USER2> Ah crap.

I wish this was titled "another inane rant by RMS" - I could have saved myself clicking on it and reading more of Stallman's quibbling little can't-see-the- forest-for-trees micropscopic-focus my-way-or-the-highway intractability.

There's a reason that Linux seized the forefront of the free software / open source movement - it's that Linus, for all his flaws, is still 1,000 x better with people than RMS.

RMS epitomized many of the worst parts of nerd-personality-damage.

A big breakthrough in my life was realizing that getting people to 95% agree with me ... and then making a ton of progress - is infinitely preferable to endlessly arguing over that last 5% and getting stuck without any progress.

What have RMS or the FSF accomplished in the last 10 years?

Precious little.

The movement has left them behind, and they're still at the starting line arguing about how many periods there are in an ellipses.

<comment><USER3> Well, what do you think is the purpose of the "free software" or "open source" movement?

Is it to hack open source software, or is it more "idealogical"?

Perhaps what FSF want to accomplish is actually different than what you want to accomplish?

<comment><USER4> FSF is all about ideology. More or less it says that, since digital information can be duplicated at negligible cost, it should be freely distributed with little or no restriction.

I don't think it is appropriate. We are already undervalued enough for people to get the fruit of our work for free, no strings attached. My personal take is that open source licenses should make distribution of anything but source code illegal. Want binaries? You pay for them and get a regular commercial license. Don't want to pay _me_ for that? Hire a fellow programmer to build my code for you and I am ok with that (as long as you do not distribute the binaries).

</comment></comment></comment><comment><USER5> I don't care about what Stallman thinks, and neither should you.

If you're here, it's probably because you are (or want to) running a startup, and you're doing it to make money. In most instances, Stallman's philosophy is fundamentally against that, or at least indifferent to it. If you pursue his ideas seriously and consistently, you will fail in business.

Do you really want that? If your answer is yes, why are you reading hn?

<comment><USER6> I agree. Although I care deeply about this issue and agree with some of his views, Stallman seems to me like a classic case of someone who who makes the perfect into the enemy of th good. Every time I read his output I am beset by the urge to respond by blatantly plagiarizing him.

<comment><USER5> I don't think that Stallman's ideals are good (let alone perfect!)

<comment><USER6> Oh, I didn't put that very well. I meant that I thought the public domain manifesto, while far from perfect, is a good idea. RMS appeared to me to be criticizing it too harshly because it didn't meet his standard of perfection.

However, I prefer not to comment on him as an individual. For one thing, his accomplishments significantly exceed mine, and for another, I see many similar personality traits in myself.

</comment></comment></comment></comment><comment><USER7> My basic problem is reconciling "To promote the Progress of Science and useful Arts, by securing for limited Times to Authors and Inventors the exclusive Right to their respective Writings and Discoveries." with "General Principle 2 repeats the common error that copyright should balance the public interest with 'protecting and rewarding the author'. This error interferes with proper judgment of any copyright policy question, since that should be based on the public interest."

<comment><USER8> Stallman's written on that before; see <http://www.gnu.org/philosophy/misinterpreting-copyright.html> .

His position (which, for what it's worth, seems correct to me) is that I.8 of the US constitution says that the _purpose_ of copyright is simply "to promote the progress of science and useful arts", and sees "protecting and rewarding the author" as a means to that end, not as something to be balanced against it. (Note also that the Constitution doesn't say that there must or should be copyright; only that Congress is _permitted_ , for the specific purpose mentioned, to establish copyright.)

If it turned out that copyright actually works against "the progress of science and useful arts", a believer in "balancing" might think it should stay anyway, to protect and reward authors. Stallman would not, and the US Constitution does seem to be on his side.

(I am not claiming, and I don't know whether Stallman would, that copyright laws that can be shown to impede the progress of science and useful arts would actually be unconstitutional.)

<comment><USER9> _I am not claiming, and I don't know whether Stallman would, that copyright laws that can be shown to impede the progress of science and useful arts would actually be unconstitutional_

This is my issue with that entire point. I don't see how current is hampering arts and science, _really_. Which is a problem because people can turn around and say so; which works to invalidate the argument.

It's a key point because it's what we need to consider when revising copyright law properly; but for dismantling the current law it doesn't seem, currently, a strong argument.

<comment><USER10> > _I don't see how current [copyright law?] is hampering arts and science, > really._

Seriously?

As one example, people who go to prestigious universities with big libraries can get access to all of the scientific output in the world, while others, especially in places without good public libraries, can't get access to that material. If copyright was a more reasonable term, all of that material older than some date could be digitized and widely distributed. This couldn't but help science.

As another, a large portion of the current amateur cultural output (youtube videos, covers of songs, &c.) is currently illegal. But this illegality is out-of-sync with common understandings of the legitimacy of various uses.

It's absurd to justify people's grandchildren (or unrelated people or corporations who bought the rights sometime) collecting royalties for the creative output of 70 years ago with the argument that the original creation wouldn't have happened without such "incentive".

* * *

As for constitutionality, this is a matter which properly belongs to the legislature IMO, not the courts. I just wish our legislators were a bit less beholden to Disney & friends.

<comment><USER9> You've got me on the first one...

The second doesn't necessarily seem to be hampering the arts and science (unless, I suppose, we are saying it hampers _access_ to the arts - which I might agree with).

</comment></comment></comment></comment></comment><comment><USER11> All of this hoopla over a damned cartoon mouse.

</comment><comment><USER12> This is why divide and conquer can work.</comment>


Neil Young's online music archive is here, and it's fucking incredible - <AUTHOR> https://consequenceofsound.net/2017/12/neil-youngs-online-music-archive-is-here-and-its-fucking-incredible/ <comment><USER2> I like how an artist of no insignificant consequence makes his entire catalog available, and then some, and the only comment on the submitted page is (succinctly paraphrased) "yeah but the website sucks and they should feel bad".

The cynic in me reads that like an on target torpedo fired from the inside.

Regardless, nice move from Mr. Neil Young.. Fantastic move.

<comment><USER3> +1 it's superb. Some of the songs not available here eg Hey Hey My My or whatever it's called. But still, awesome.

</comment></comment><comment><USER4> > There's an option to toggle back and forth between the highest-quality tier > and standard 320kbs, and you can most definitely tell a difference.

No, you can't, in almost all cases. If the difference is as obvious as the description suggests, someone engineered the 320kbs option to sound very bad.

</comment><comment><USER5> After registering, you get an email saying you've now a free trial until June 30th and "once your trial is up, you'll be able to sign up for a subscription at a very modest cost."

 _sigh_

</comment><comment><USER6> Great music, terrible site. Graphics are a mess and the only useful control, the player widget, is a pile of misaligned text.</comment>


Submission guidelines for the Ubuntu app store. - <AUTHOR> http://developer.ubuntu.com/publish/

<comment><AUTHOR> In fact, the whole Ubuntu App Developer site is pretty interesting. They've got a tool called "Quickly", which is something like Python's distutils, but for creating, packaging and distributing GUI-based applications for Ubuntu.</comment>


How to get started with the LLVM C API - <AUTHOR> https://pauladamsmith.com/blog/2015/01/how-to-get-started-with-llvm-c-api.html <comment><USER2> Their C API is so much cleaner looking than the C++ one, imo. I avoided it so far thinking that once I want to use something not covered in the C API, I don't want to do a big refactor. Is that a rational fear?

<comment><USER3> This seems to happen a lot to projects that are written in C++ but have C APIs. Another good example of this would be ZeroMQ. I wonder why this happens.

<comment><USER4> Interestingly Martin Sustrik, one of the original ZeroMQ authors, expressed regret for having chosen C++ for ZeroMQ.

[http://250bpm.com/blog:4](http://250bpm.com/blog:4) [http://250bpm.com/blog:8](http://250bpm.com/blog:8)

<comment><USER5> And as some of the comments on his blog point out, he uses C++ in a C style.

"If you insist on sticking to a conventional C style of C++ code, you'll get conventional C-style problems" \- Bjarne Stroustrup ([http://www.informit.com/articles/article.aspx?p=2080042](http://www.informit.com/articles/article.aspx?p=2080042))

</comment></comment></comment></comment><comment><USER6> I'm really enjoying the proliferation of compiler articles, based on LLVM. I would, however, like to see the other side too: if I write code in C++ or Python, how can I leverage LLVM (and its various compilers) call out to code written in other (possibly brand new) languages?

I really hope we see more DSLs being written, and that it is easy to integrate with them on the back of LLVM.

</comment><comment><USER7> Should be this url instead:

[https://pauladamsmith.com/blog/2015/01/how-to-get-started- wi...](https://pauladamsmith.com/blog/2015/01/how-to-get-started-with-llvm-c- api.html)

<comment><USER8> Thanks, we updated the URL.</comment></comment>


The Awkward but Essential Art of Office Chitchat - <AUTHOR> https://www.nytimes.com/2019/09/17/style/the-awkward-art-of-office-small-talk.html <comment><USER2> Smalltalk is improv. It's yes... and. You take turns with the hot potato. You take your turn and then pass it. It's creating a story. Take whatever what was passed to you, add something quirky and then pass it back. It's fun to add something off the wall, a bit ridiculous.

Doing this takes courage. You WILL make mistakes. At times, you may cringe at yourself. Putting yourself out there, taking small risks is the spice of life. When you fail, embrace it and move on. Don't look back.

If you smile and keep a bright attitude, then that becomes infectious. If showing up is 90%, then the right attitude is showing up. The quickest way to screw this up is to be toxic.

Advanced mode is keeping that positive attitude (don't forget the smile) even when you're feeling attacked. If you can't bear it, then keep a number of exit strategies in your bag of tricks and pull one of them. You have to get going. Someone is expecting you. You need to take a call, etc. If you choose to stay, then you have to stay deft and keep the air light. Don't let someone pin you down into a corner where you have to defend yourself. Continue keeping things light and a bit ridiculous and the air will change. You might even gain some respect.

<comment><USER3> Probably my most upvoted repeat HN comments are my recommendations of the book Impro by Keith Johnstone. It really is a brilliant breakdown of what Improv is beyond theatre games. I think it's especially useful for coders in the workplace because it really nails the importance of understanding exchanges of "status" in these situations. So much of humour is building and then diminishing a person's status in an artful way. Being aware of how you are displaying your status around others and being able to consciously manipulate that display for laughs goes a long way.

He has another book "for storytellers" that you can skip over for now. Get Impro, it's a bit of a cult classic.

I work in education and it's such an incredible skill for teachers as well. Controlling a class is easiest when you can establish your authority while simultaneously letting your students question it in a playful way. You can really break down a lot of walls and connect better.

<comment><USER4> Yes. I have been doing improvisation now every week for past 3-4 years. And impro is definitely the best book I have read on the subject.

</comment></comment></comment><comment><USER5> Thinking about the reasons why people engage in smalltalk (in other areas of life too such as family and friends, dating, service providers, etc) helps (me) cope with its banality and even enjoy it; The irrationality is quite rational.

A conversation, especially a face-to-face one, contains something beyond content: Something like a meeting of souls. The (hopefully positive) feeling of the presence of another human being. The breadth and importance of this non-verbal communication is obvious.

Smalltalk then, is basically a request to engage only in this non-verbal connection for a fleeting moment. The content is almost completely irrelevant. It's just the excuse to be in a bubble together for a while. Seen this way helps (me) in two ways:

0\. You don't need to be "good" at it. It really doesn't matter what you say. Say anything and the ball keeps rolling for a few moments longer. 1\. You can find compassion towards the person who initiates it instead of contempt: They are actually asking to warm by your fire for a little bit. They are not testing/dueling you.

Or in the more sentimental words of L. Armstrong: "I see friends shaking hands, saying How Do You Do. They're really saying I Love You"

<comment><USER6> I think so. I love deep and meaningful connection and getting lost in that conversation but if you leave out all of the small talk that naturally happens in between, it's easy to find yourself in a very lonely place. For a time I used to dislike it because it seemed pointless.

Not everybody is comfortable with silence and, given a chance, you might find that some small talk kicks off the deeper conversation you so desire. After that I realised it wasn't so much the deep meaning that I wanted so much, it was being able to connect, listen and empathise. And to enjoy some of that from someone else.

In the end, the small talk is quite valuable even if it seems utterly banal on the surface. Sometimes I just laugh about it, use it as an icebreaker. Life isn't so serious all the time, after all.

</comment></comment><comment><USER7> I think the essential office chitchat issue is "being yourself" vs. "seeming like a high quality professional". I've found out the hard way that relaxing and aiming for a real conversation carries a high % chance of saying something unbecoming of a team leader. Better pay attention to appearances when you're at work.

I don't understand coworkers who say silly things at the lunch table without a second thought, or those who base their social lives around co-workers... doing so seems to risk your upward mobility. It's a sad POV but from my experience anyways I think it's reality.

<comment><USER8> > I think the essential office chitchat issue is "being yourself" vs. "seeming > like a high quality professional". I've found out the hard way that relaxing > and aiming for a real conversation carries a high % chance of saying > something unbecoming of a team leader.

Indeed, this is a very good way to put it. Although I _do_ understand people who say silly things at the lunch table without a second thought - they value fun and genuine social interactions more than "upward mobility".

If you can't be yourself for at least 8h/day and you also can't be yourself after that, because you shouldn't base you social life around your co-workers, then who are you? And when are you allowed to be yourself? Weekends and bank holidays? Fuck. That.

We would all be happier if we were allowed to be ourselves all the time. Maybe by hopping around until landing on a cluster of likewise co-workers who can see the "high quality professional" side by side with the crazy cat lady or the punkrocker.

But again, I think your decription is correct and that we live within a very sad state of affairs.

<comment><USER9> Thanks for this. This has become a realization of mine in the past couple of years. I already wear a neat shirt to work and do my hair neatly, because that's expected. I'm not going to change my personality however, because I am who I am and I don't want to pretend to be something I'm not.

I've even decided that I will no longer 'perform' interviews. I could get most jobs, because I'm pretty good at doing interviews. However, I've come to the conclusion that I should just be me and if they don't like it, there isn't a fit. Recently got my first rejection because of this and I didn't mind as much as I thought I would. Of course, exceptions will be made when I really need a job. But as long as the market is on my side, I'll just keep being myself.

<comment><USER10> I've been doing the same. I even tell recruiters and interviewers "if I was unemployed, you'd be getting a very different version of me". It adds more fuel to the notion of why employed people are so much better to recruit, because you get more signal and less noise.

We've all known for a while that being unemployed, and having that desperation stink on you, is a bad situation. But I'd never really considered it from the hiring side, that when you are interviewing someone who desperately needs a job, you're interviewing more of an actor.

<comment><USER11> Interviews are entirely perfomative anyway.

THe person conducting the interview is asking you questions he knows the answer to, and knows that you know what he wants to hear, and is just checking that you know how to play the game and repeat back to him what he wants.

If you answered all the stupid interview questions completely honestly you would never get a job. Both parties know this, yet everyone keeps ploughing on with this moronic game.

</comment></comment></comment></comment></comment><comment><USER12> Relationships develop through the escalating exchange of mutual vulnerability. A few people commented that I seemed to make friends very easily, so I started paying attention to my interactions with strangers. I noticed that I enjoyed sharing vulnerable anecdotes with people before inquiring about their own, e.g. dates gone wrong from the night before. Sure, sometimes I put my foot in my mouth, but people seem to like that and trust me more for it. When I started researching how friendships are forged, this was on the button.

<comment><USER13> There is an art to presenting vulnerability; to not diminish yourself whilst doing so. It not only improves your own outlook on yourself but helps prevent others using it against you, all whilst still being open and truthful.

Its hard.

<comment><USER14> Could you give an example?

The most popular trust-creation mechanism for adults seems to be getting drunk together, which reliably leads to little infractions, which every witness has the _choice_ to exploit or not. The latter option engenders trust.

 _" I don't trust someone that I didn't get drunk with"_ is a sentiment I've heard repeatedly, both privately and professionally. The most successful startup that I worked for even asked _" What's your favourite beer?"_ when they interviewed me for a programmer position, and when I asked by this was of interest, they said they took their after work drinking sessions pretty seriously, and "don't want to work with people they can't have fun with". As somebody who doesn't enjoy being drunk, this was difficult for me to adapt to.

<comment><USER15> My answer to that question: "Whiskey"

As to the drinking after work... I think it's appropriate to set boundaries. I only drink a handful of times a year but will participate in some activities including outside work hours, I also don't have more than a single drink if I'm going to drive within a couple hours. Also, get two non-alcoholic drinks or glasses of water per alcoholic beverage, could pretty much stay close to sober all evening when I was in my 20s by doing that.

In the end, it's about striking a balance of being sociable without being irresponsible at the same time.

<comment><USER14> I agree with you, in that pretending to drink (e.g Tonic instead of Gin & Tonic) is probably what a lot of us do, and the obvious way out. But the point of drinking is not really being sociable, but making yourself vulnerable. Vulnerability and exploitability is the foundation of trust. By staying sober one undermines one of the core trust formation mechanism: by remaining sober and responsible, you _avoid_ creating exploitable vulnerabilities that others can but don't exploit -- I trust X because X can exploit my being vulnerable w.r.t. Y me, but doesn't.

Note also that pretending to drink feels a bit like cheating to me: I'm actively deceiving others. I wish I could live my life without deceit.

<comment><USER15> I'm not pretending to drink... I actually have a few, but have a few not alcohol too, I make no attempts to hide it when ordering. I'm generally pretty blunt without much filtering in general, I don't need alcohol for that.

</comment></comment></comment></comment></comment></comment><comment><USER16> It can be quite a minefield. I worked with a guy whose chit-chat policy was disconcerting - stating the bleedin' obvious. "You are in early today!" "You are in late today!" "You are on time today!" "Wearing the red shirt again, I see!" "Got your hair cut!"

While this 'say what you see' served as a functional ice-breaker, as an introvert I found it strangely confrontational, almost like an interrogation. I felt like I was having to justify myself, as there was no obvious opening for a meaningful reply otherwise (simply saying 'yes' hardly cuts it). Of course, that was all on me, he had no idea I was reacting in such a way.

<comment><USER17> > _While this 'say what you see' served as a functional ice-breaker, as an > introvert I found it strangely confrontational, almost like an > interrogation_

On the other hand, why see "introvert" or "extrovert" as something that you essentially are, and not an accidental attribute, one can, and perhaps should, work on?

In that case, his 'say what you see' routine would be a good testing ground to stop caring as much for the supposed "confrontation"...

<comment><USER18> Are extroverts supposed to work on it too?

<comment><USER17> Sure. Excess in most directions is not very good for others and for one's self...

</comment></comment></comment></comment><comment><USER19> I am rubbish at small talk. For one I'm not really that interested in other people, and secondly I find it really boring. As such, all jobs I've had as a permanent employee, I've found myself completely stymied when it came to career progression, despite always having very good performance reviews. It very clear to me, that the people who float to the top of organisations, don't do it via their work performance, but by slapping each other on the back whilst sharing a pint or two down the pub.

<comment><USER20> I used to think much like you do. But as I've moved into leadership positions I've changed my view entirely. That sharing a pint or two is important. To be able to coordinate a group of people to reach a goal, soft skills are absolutely vital. Humans aren't machines - hacking humans is a different skill, and being good at it is rarer than good engineers imo. That's why it pays well, and why you'll never progress far beyond IC without it.

<comment><USER21> IC?

<comment><USER22> Individual Contributor I believe, ie someone who doesn't have direct reports

</comment></comment></comment></comment><comment><USER23> The vast majority of office chitchat is like a carrier wave in radio. It doesn't transmit much information other than I am a normal human who you can turn to when it is needed. There is a fair amount of politics etc that is conveyed more through body language and dominance dynamics rather than the actual words exchanged.

<comment><USER24> Except _they don 't_ care about you. Someone could burst through the door and skin you alive, but your coworkers won't be in the least bit perturbed unless:

1) Your mutilation was against company policy 2) Some bits of you got on their shirt.

Personally, I'd much rather deal with people knives drawn rather than work hard pretending to care if each other lives or dies.

<comment><USER25> Sounds like a wild place to work at.

Also sounds like a great way to end up isolated and alone. Even at work, you sometimes need people in your corner.

<comment><USER24> Except the incentives are aligned to be a Hobbesian war of all against all. There is no incentive to collaborate or team up at all.

Ever wonder why shows like Survivor and Battle Royale games are so popular? That's how office life is these days. _Nobody_ is ever "in your corner" as you put it. Everyone is always and forever trying to gut everyone else in a neverending zero sum game.

Unless you work in a new/high growth field or something, then collaboration can have benefits, but in most static corporate environments, the only gain you have is from someone else's detriment.

<comment><USER26> I'm fascinated to see if you just work in bizzare confrontational companies or are just paranoid. Pretty much everywhere I've been I've gotten on well with my coworkers, chatted about videogames, beer, gone to various resturants for lunch, and generally enjoyed myself. To do anything else would seem almost unbearable - and this comes from a 100% introvert.

There are subtle signals that people have to both recognise and/or know how to use in order to use smalltalk succesfully - things like never interrupt someone wearing headphones on both ears, or recognising body language of someone absorbed by thought.

Even if you genuinely don't ever like talking to people, they are bound to get the message soon enough and stop trying. And if for some reason they have the spectacularly bad social skills to not pick that up, usually telling them once or twice (kindly!) that you don't like to chat at work should get them to stop.

<comment><USER24> I may be paranoid, but I can't grok as much social information as my coworkers can. I've had to memorize what different emotional states look like, and I come from a working-class background where emotional dishonesty is _not_ a valued thing, going to an office environment where it is.

Apologies for the Star Trek reference, but it feels like being a particularly dense Betazoid working in an office of Vulcans.

</comment></comment></comment></comment></comment></comment><comment><USER27> I got hit by a car while on my bike earlier in the summer. If nothing else, that solved 100% of my co-worker small talk for the next three months.

<comment><USER28> Hahahahahah! Sorry bro but holy shit that is a great way to look at it. I hope you are ok, but that was funny.

</comment></comment><comment><USER29> I hope that all-remote work environments will rise in popularity and level the playing field. Not only for introverts, but also for people with disabilities that make it difficult to participate in casual conversation. I dream of an environment where a deaf person, a person with a severe speech impediment, an autistic person, people with other disabilities that don't prevent one from making small talk (e.g. blindness), and yes, some people with no severe disability can all work together, without necessarily even being aware of each other's conditions, because they're all working remotely and using text to communicate and get their work done.

Disclaimer: I work in accessibility, and am legally blind myself, so maybe I fixate too much on disability-related issues sometimes. I _can_ make small talk at the office though.

</comment><comment><USER30> My wife is amazing. She can walk into a Wal-Mart, and within minutes some stranger will be telling her their life story.

I, on the other hand, suffer from Programmer's Disease. I can walk into a crowded room, approach someone and try to strike up a conversation and have the discussion killed in 3 minutes.

I try to improve. I really do. I think it's a gift we're born with.

<comment><USER31> For me and my wife that works basically the same, but I have found method to the madness.

1\. She loves it when I come to save her when the tone of the spontaneous discussion is not to her liking and nothing kills said discussions faster then me participating.

2\. When I strike it, my conversations tends to be very subject focused and will leave me and the other person smarter and more informed.

So what I do now is either I stand beside her and try to enjoy the (for me) meaningless chatter (I really like the high pitched voices of socially engaged people), or I will try to find that one other weirdo in the room who holds a ton of knowledge in an area that I'm completely blank about and suck as much as possible information out of them.

That is where my 35 years of continence improvement have led me. YMMV.

<comment><USER32> I know you probably meant "continuous" instead of "continence", but I can't help but chuckle at the usage.

<comment><USER31> :) You are right, thanks for pointing that out.

After looking up continence it fits like a glove :)

</comment></comment></comment></comment><comment><USER33> > Every day around the world, an estimated three billion people go to work and > 2.9 billion of them avoid making small talk with their co-workers once they > get there.

Wait, how are 2.9b people avoiding chitchat? I almost more interested in this.

<comment><USER34> I read the first part of the sentence as an estimation, and the second part as a joke.

<comment><USER33> :) the entire article's subtle humor is refreshing. I had a literal laugh-out- loud about the sharing streaming services login joke; ironic b/c such services are usually consumed en solo, which runs contrary to the thesis of the whole article in general

</comment></comment></comment><comment><USER35> I quiz people on how their part of the company is going. "So, are we making our quarter"? "What does the world think about our company?" "Did we really get the CD system working like it's supposed to?"

People love talking about their areas, and I get some intel on the company I work for.

</comment><comment><USER36> I used to mostly keep to myself but think I balanced being social enough to be a well adjusted office worker. This completely changed as I rose into management positions, and now I feel compelled to chit chat with everyone, which is really exhausting for me.

I think the article overstates how important chit chat is, but the overall point is probably correct: don't be a psycho and never talk to anyone.

</comment><comment><USER37> > Jamie Terran, a licensed career coach in New York City, said that small talk > between colleagues and supervisors builds rapport, which in turn builds > trust.

IMOA trust is built by delivering, being consistent and helping out.

You can chitchat all day, it won't help if there's nothing behind. Some people may be terse on the interaction side but do their job, come to help when they see you need it, and generally be aware of what other people are working on without chitchatting.

In this day and age if chichat is the main communication bus of your group/company, either it consciously chose to do so, and you have been hired in this perspective -> no issue whatsoever. Either it's doing something fundamentally wrong and you should go somewhere else.

Also what is a "licensed career coach" ? Why don't they ask 5 or 10 people with actual successful careers and give clearer context advice. It feels so bullshitty to have someone with that title for everyday job interactions.

<comment><USER38> I get what you're saying, and I don't think you're entirely wrong — you build trust by doing your job well, repeatedly. But it's also a demonstrated fact (and almost a tautology) that people trust people that they like, and chit- chat is a great way to move from "stranger" to "friendly acquaintance." If you eat lunch with someone once a week, they'll think you're better at your job. That's not an anecdote, that's a repeatedly confirmed facet of human social psychology.

<comment><USER37> You are completely right, for all our history of working in the same buildings, in person.

This changes though when you move to different floors. At some point you might be working more with someone that is on the other side of the street that the person next to you. Will you trust them less because you don't see them everyday ? Will you be worse at your job because of the lack of chit-chatting ?

Perhaps, but it's something that you'll need to work on, otherwise your job is just doomed. So people adapt, catch up once in a while but everyday chit chat just becomes less essential.

Then you work with people on other buildings. You have a remote contractor. You have an office in another country.

20 years ago those were extreme scenarii. Now I think people are expected to be productive and efficient in these conditions.

<comment><USER39> The cherry on top doesn't make a difference between 2 otherwise identical pieces of crap (or shouldn't, at least...). But it will make a difference between 2 otherwise identical cakes.

Chit chat is also a form of self promotion or publicity. People are more likely to notice _you_ delivered instead of "it was delivered" if they know _you_. Don't rely exclusively on your immediate manager to promote you to everyone else. They may not have the time for that and it's unlikely they'll say "John/Jane delivered" if nobody around knows who those people are.

<comment><USER37> > it will make a difference between 2 otherwise identical cakes.

If we go into "all else equal" territory, you could get a promotion and not neighbour because you created your dog an instagram account that your boss likes.

Or you could have built a Minecraft world that was pretty cool when your coworkers checked it from one of your sns profiles.

Or you could be the only one not annoying your boss all day long, and they show their appreciation on bonus day.

Or your release announcement mails have funny gifs.

Or your have a name that's easily remembered.

Or really anything. I think the goal to build trust and reputation is for things to not be equal and not have to play weird games of popularity.

Don't get me wrong, communication is key, but chit chat is a single very specific form of communication, among so many others.

I think in any decent organisation you get better ROI from having good written communication than top of the game chitchat, if you had to focus your attention somewhere. If chitchat is an important part of your professional life, I hope it's by choice and you're not just stuck in a company you hate.

<comment><USER39> None of the reasons you wrote are nearly as reasonable as your boss(es) seeing you as a reasonable person, a team player, etc. as evidenced by your open discussions. Some things they can't glean just from the fact that you solved a ticket quickly.

Yours looks more like a list of ridiculous, implausible but of course still technically possible reasons. As a boss I'd like to know if the person I'm promoting is willing to come up with such arguments in an attempt to prove a point. ;)

</comment></comment></comment></comment></comment></comment><comment> oh-4-fucks-sake I think there's some salient points here, but I don't think fully takes into account the classic schism of maker vs. manager schedule. The makers might be fine all plugging along with minimal office interaction--especially if they're working remote.

<comment><USER40> In some big corps, in order to be a maker you have to know people in different departments to speed up things and take some shortcuts. You can also slowly have your technical solutions adopted.

It takes coffee breaks and some jokes to reach that. And I think it really boosts your productivity.

</comment></comment><comment><USER41> Counterpoint:

Don't Talk to Anyone, Ever

[https://freebeacon.com/blog/dont-talk-anyone- ever/](https://freebeacon.com/blog/dont-talk-anyone-ever/)

 _Don 't talk to strangers at work. I don't care if you're coworkers: Unless you have to do a task with this person, they aren't interested in being anywhere near you, nor should you be in them.

Don't talk to anyone. Ever. Talking is awful. People are worse. It's hard to imagine a more horrifying combination than talking to people._

<comment><USER32> I was hoping for an honest exploration of full-on misanthropy, and all I got was a crappy satire blog. I'm disappointed.

</comment></comment><comment><USER42> Careful! The Smalltalk people are going to jump in here and start talking about how message passing between lightweight processes is the best way to write efficient programs.

</comment><comment><USER43> Am I the only one who thinks this article is total nonsense. Really? You "need" to do small talk in order to get promotion and be liked around the office. How about we leave this to the individual's personality. If you are in the right culture fit then you don"need" to do anything. You will love to chichat with your colleagues and if not that is okay to. Some people just love to work on their craft and small talk is just a distraction.

<comment><USER44> No, you aren't. I also see it as distraction, which is even worse to programmers who have to keep laser focused on their work.

</comment></comment><comment><USER45> I should show this to the head of engineering at my last company! I got a verbal warning for talking too much to coworkers when I first started. People were just introducing themselves! That is the disadvantage of having a desk right next to the big boss's office. After that warning I tried hard to avoid any conversations.

</comment><comment><USER46> Is there a way to see this site while remaining in private mode? There are 13 trackers blocked ffs

<comment><USER47> I use [https://www.eff.org/privacybadger](https://www.eff.org/privacybadger) for all websites, seems to do the trick for me.

</comment></comment><comment><USER48> Sadly this is true in my current and previous jobs.

I worked and have worked with people who know very little or do very little yet but have mastered the art of hobnobbing and have fared a lot better than yours truly who'd rather put his head down and get the work done.

</comment><comment><USER49> My goto topics for office chitchat are TV shows, video games, and sports in that order. Most people have at least some show they watch and will talk about, and others typically have a video game of some sort they play. Sports used to be first, but I've run into many people who have zero interest or knowledge in any sport personal or otherwise.

Topics I love to talk about but avoid, diet and exercise. Topics I avoid completely, politics.

<comment><USER50> Restaurants, bars, and events around town are a good topic as well. Travel is a good one too since many coworkers are either planning a vacation or were on one recently.

</comment></comment><comment><USER24> Small talk is an extremely high-risk low reward activity depending on your status with the company, especially if your manager has told you your status is utterly fixed.

How in the hell are you supposed to build a rapport with people who would as soon skin you alive as look at you, and only tolerate you for what you can do that no one else can?

<comment><USER51> That's a sign of a toxic workplace. Far better to just move on and find a place that respects human beings.

</comment></comment><comment><USER52> > "I'm good. I just started a book/podcast/TV show

Hm - my wife (who's an expert on this sort of thing) says that's actually rude and you should always answer back, "good and you" so that _the other person_ can start taking about their TV show/podcast whatever.

</comment><comment><USER53> As someone who worked a lot of low-end and blue collar jobs before getting into software, small talk with coworkers is a whole lot easier in the former environment.

There is so much petty politics and ego in the modern office that all it takes is saying one thing that someone doesn't like to cause potentially years of unnecessary drama.

One gossipy sociopath who's trusted by your manager, that doesn't like something you said during small talk, or who didn't like the look in your eyes when they mentioned a strong political view, can limit your ability to get promoted.

People just talk anything and everything in blue collar jobs and nobody cares. I think that's because nobody has their ego wrapped up in how well they mop a floor or flip a burger.

</comment><comment><USER54> Highly recommend reading The Gervais Principle by Venkatesh Rao for a more in- depth discussion of office talk, and much more.

</comment><comment><USER55> For whoever it doesn't work, it wastes a whole of their time, and their life. Not to mention it completely wastes the chance to use their talents to take the society forward.</comment>


Programming language for novel biological circuits - <AUTHOR> https://www.sciencedaily.com/releases/2016/03/160331154001.htm <comment><AUTHOR> "The language is based on Verilog, which is commonly used to program computer chips. To create a version of the language that would work for cells, the researchers designed computing elements such as logic gates and sensors that can be encoded in a bacterial cell's DNA. The sensors can detect different compounds, such as oxygen or glucose, as well as light, temperature, acidity, and other environmental conditions. Users can also add their own sensors. "It's very customizable," Voigt says."

I wonder how "high level" it will be.

<comment><USER2> The language is described in section V (p.26 onwards) of the supplementary materials of the paper:

[http://science.sciencemag.org/content/sci/suppl/2016/03/30/3...](http://science.sciencemag.org/content/sci/suppl/2016/03/30/352.6281.aac7341.DC1/Nielsen.SM.pdf)

</comment></comment><comment><USER3> An example application in medical: [http://www.nature.com/scitable/blog/bio2.0/designing_logical...](http://www.nature.com/scitable/blog/bio2.0/designing_logical_cells_to_be)

I suppose the end game here is in vitro diagnosis and treatment.</comment>