Nobody's just reading your code - <AUTHOR> http://akkartik.name/post/comprehension <comment><USER2> One of the things that sets a good programmer apart is the willingness to fearlessly dig into someone else's code. I've heard it said before that you're responsible for every line of code you ship to your users. It follows that you shouldn't treat your dependencies as black boxes. Getting a stack trace that's 3 or 4 levels deep in Django/React/<insert library here>? Dig under the covers and understand what's happening. Include that information in a bug report, and better yet, open a PR offering to fix it.

You'll learn a whole lot and be more effective if you let your curiosity expand beyond code you/your team has written.

<comment><USER3> > ... willingness to fearlessly dig into someone else's code.

I've done this many times. The problem is that it takes a lot of time, and there's no way you can dig through more than a fraction of a large codebase. You gotta pick your battles.

<comment><USER4> Pragmatism wins the day, for sure. I'll happily read someone else's code (e.g., an open-source GitHub repository I rely on) if it's necessary to troubleshoot issues or implement a feature. There needs to be a _reason_ (i.e., motivation) to read code.

<comment><USER5> On github and the node/JS ecosystem, the way this will play out:

      1. Spend hours digging through layers and layers of crufty JS.
      2. Find the issue (and the package responsible for the issue).
      3. Find out there is a Github Issue for the issue.
      4. Find out there is a pull request for the issue.
      5. Find out the pull request is sitting in position #35 of #128 pull requests going back to 2015.
      6. Go binge drinking.

<comment><USER6> 7\. (next morning) Fork the project, apply your PR and any others you like, and use your fork in your codebase.

8\. (optional) Thank the creators and maintainers for the time and effort they put into it.

<comment> yoz-y This is not always an optimal solution. Because by doing this you have essentially became a maintainer of a dependency you initially wanted to 'just' use.

<comment><USER7> This is sadly why I keep my dependencies to a minimum.

After coding for almost 20 years now, full time, I have never regretted not using a dependency. But I have regretted using one multiple times.

(the regret is like a walk of shame during the "separation and cleanup" phase at the end, which makes me question the "got work done faster" phase at the beginning....)

<comment><USER8> In 20 years you've never started work on something and after a bit said damn it I think I'll use that library that other guy developed?

If you've ever switched out dependency X for dependency Y I suppose you regretted not using Y to begin with.

If you've ever stopped working on your own solution to a problem and instead used a solution provided in a library didn't you regret not just using the library from the beginning?

<comment><USER7> > _In 20 years you 've never started work on something and after a bit said > damn it I think I'll use that library that other guy developed?_

nope, I am just saying what I said, I never regretted not using one, and have regretted investing in a few that later caused more headaches than they were worth.

When we switched from inhouse code to a dependency, we never regretted doing it on our own to start with because there was so much insight gained from this and many other side benefits (like direct control, intuitive understanding of how our code worked, etc...).

But when you have a dependency you add that you later have to work around, you simply can't fix in the same way can your own code, and you just hate the mess in a totally different way.

When it's your own code, you can fix anything. And replace it a piece at a time if need be. With a dependency, there's usually catches, hacks or work arounds, or conflicts built up over years that finally have come to a head. And it sucks to fix and in many cases if I had waited even a little while, or did more research at the time, I would have picked a different dependency or none at all.

There are a lot of dependencies we use, I don't think you can run a business properly these days without them. They just are not a part of our core systems anymore. We use them for tertiary systems and addons, things that a replaceable. Then our core systems can't be hijacked by stuff like the latest NPM debacle.

<comment><USER9> Yeah, this also matches my (+10 year) experience as a professionnal dev ... with one exception, though: the "maintainance-can-of-worm" packages. These are packages which, by design, can never be considered as finished, and periodically need to be updated to stay relevant in _your_ application.

There are three reasons for this:

1) Those packages implement an ever-growing pile of tricks/heuristics to convincingly solve problems from the domain. They include: physics engines, SMT solvers, compilers/jitters/optimizers, computational geometry packages, video encoders ...

2) Those packages implement an unification layer over an ever-growing/evolving set of underlying APIs/protocols/formats. They include: SDL, ncurses, curl, ImageMagick ...

(these are not to be confused with "bug-factories" packages, which might not solve a complex problem, but still require constant updating to fix the current bugs, and benefit from the new ones).

<comment><USER10> > There are three reasons for this:

> 1) [...]

> 2) [...]

Where is the third reason?

<comment><USER11> Classic off-by-one error.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Reading code just for fun was a thing in the early and mid years of UNIX (eg., 7th edition or System V). People eagerly passed around faint 10th generation photocopies of Lion's printout of and commentary[1] on the UNIX source code. The annual USENIX conference had a popular short course in which they went through the entire UNIX kernel line by line. Why was that a thing back then and not now? Certainly UNIX was an amazing piece of work, but there are amazing works today -- the modern browser for example.

I think that the difference is that the totality of the UNIX kernel was comprehensible for a single mind. The UNIX kernel in 1983 was less than 20,000 lines of code, almost all in C, and more than 75% was not machine- dependent.[2] The amazing software of today, something worthy of reading for fun, is literally millions of lines of code, written in multiple languages you don't know, and evolving so fast that whatever you read might be completely different a few months later. There's no joy in knowing a tiny part of that. It would be like reading 10 pages from the middle of a novel, a novel so big that you know you'll never finish it.

[1] [https://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6t...](https://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th_Edition,_with_Source_Code)

[2] [https://en.wikipedia.org/wiki/History_of_Unix#1980s](https://en.wikipedia.org/wiki/History_of_Unix#1980s)

<comment><USER13> This is still done today, just with other software.

I've read blog posts that go through the entire redux javascript library line by line, or review an entire chunk of React.

Even just yesterday here on HN was a submission that just contained shaders from Wolfenstein.

<comment><USER14> There's a category of articles out there nowadays that do "$library in $num lines of code", reducing popular libraries or frameworks down to their core - filtering out all the edge cases, so to speak. I've seen them for Angular, React, Redux, etc. I think that a lot of frameworks and libraries would do good to have a "core" codebase somewhere, something pure but unoptimized and without edge cases that are easily digestable, that explain the core idea of it.

<comment><USER15> Do you mind linking me to the React one? I was unable to find it, but maybe my Google-fu is just not good today.

</comment></comment></comment></comment><comment><USER16> Reading code always felt awkward, slow and ineffective. The cognitive load is huge, you have to compute some things while memorizing others and at the same time keep track of flows. Thats why I always have pen and paper while diving into a new big code base, you simply can't keep it in your head. But something we forget often is... the goal of reading code is almost always to _understand_ a system or some part of it. And reading code for me is a terrible way to do it.

Code is just one level of abstraction and one way of seeing things. We should have multiple ways of "reading" a system depending on what level we want to understand it. No, I don't think that rushed, out of date "system documentation" you wrote will do. I still think this is not solved in a satisfying way. We could find inspiration from things that works well, just imagine how google maps lets you look at the world at many different levels, from continents down to street level. Also it provides different views of each level, street maps are useful for tourists, terrain maps for hikers and satellite images for someone who want to study vegetation. How you will "read" a system depends on what you are trying to understand.

<comment><USER17> As the author of the post, just wanted to reply and say I'm totally open to the notion that the solutions I proposed will not solve the problem. I'm much more sure about the problem than I am about the solution.

A google maps zoom system for code sounds awesome, although I have no idea how that might work.

<comment><USER18> Brackets inline editor comes to mind. Just replace CSS definitions with function definitions (I think it might already do this for ?)

The zooming functionality you're thinking about probably wouldn't be very practical. (Zooming in down to opcode or out to high level framework calls.)

But simply being able to inspect definition inline would do.

</comment></comment></comment><comment><USER19> One of the reasons I love golang* is how the entire source code for the standard library is just a few easy clicks away from the documentation on how to use it.

As an example: When I want to do something and the interfaces I'm seeing provide friction (XML parsing not /quite/ handling normal, slightly incorrect, HTML) I can get a better idea of what the library is doing behind the scenes. I got an example of how to use other exposed interfaces of the library as a tool kit for my own iteration (which added some state tracking and cleanup of that mess) instead of relying on it to decode everything and dump it back for me.

Other parts of the library are similar, maybe it does 90% of what your use case needs, and you can extend those interfaces with your own library to add the corner cases that are required in your specific use case.

*(even if it can be tedious at times because it's sort of a mid-level language; it abstracts some REALLY bread and butter things that probably can't be lived without, but it doesn't shield you from true complexity pitfalls)

<comment><USER20> Rust's library documentation has this feature as well; each item has a [src] link that takes you straight to the code being documented; see for instance [0], and you'll find the link to the right side of the heading. This even works for crates not in the standard library because it's actually a feature provided by rustdoc, the standard documentation generator; for example, you can get to the source for functions in serde (the most popular Rust serialization library) directly from its documentation [1].

[0] [https://doc.rust- lang.org/std/vec/struct.Vec.html#method.tru...](https://doc.rust- lang.org/std/vec/struct.Vec.html#method.truncate)

[1] [https://docs.serde.rs/serde_json/ser/fn.to_string_pretty.htm...](https://docs.serde.rs/serde_json/ser/fn.to_string_pretty.html)

</comment></comment><comment><USER21> This is a bit western centric maybe, because I see Chinese developers reading tons of code, to the point that I receive an incredible amount of Redis PRs about conceptual bugs that can never happen in practice, since some Chinese developer is reading the code and doing the math in her/his head.

<comment><USER22> Any case you could share a link to one of these, if possible? A matter of curiosity.

<comment><USER23> First PR I saw on redis GH: [https://github.com/antirez/redis/pull/4714](https://github.com/antirez/redis/pull/4714)

That same user also made [https://github.com/antirez/redis/pull/4685](https://github.com/antirez/redis/pull/4685)

This may be? [https://github.com/antirez/redis/pull/4622](https://github.com/antirez/redis/pull/4622)

This was apparently critical, but also kind of an edgecase: [https://github.com/antirez/redis/pull/4568](https://github.com/antirez/redis/pull/4568)

& one more from someone else: [https://github.com/antirez/redis/pull/4568](https://github.com/antirez/redis/pull/4568)

</comment></comment></comment><comment><USER24> I love reading code written in Elm.

I always dive in and have a look. The reason I love it is that Elm is quite restrictive, there is a way of doing things and you can't deviate too much. Therefore reading someone else's code is usually pretty easy.

In addition in Elm you can clone and run an Elm package and see the examples, do some "time travelling debugging" all within 30 seconds :-), again because there is one way of building and debugging things. No "Oh no browserify! I normally use webpack" or "WTF all that global npm shit I need to install" moment.

Just once per computer:

       npm install elm

Then do this

       git clone ...
       elm-reactor

And open your browser to localhost:8080

I'd probably say Elm is more Zen than Python!

</comment><comment><USER25> We read code for all kinds of purposes other than to make an intended change. Like

How the heck does this behavior (good or bad, expected or not) come about?

Is this correct behavior assured in every case?

What are all the possible values of these poorly documented configuration parameters or other inputs?

Will this apparently working operation break under concurrency?

Why is this so slow for these inputs, or under these conditions? / Why is this so unexpectedly fast?

Is this doing nasty covert things I don't want, in addition to the overt functionality that I want?

Is this using a particular library or OS feature to do something obvious, or did they roll their own?

How will this scale in time, memory use or whatever for certain large inputs that are too impractical to actually supply just to answer this question?

...

<comment><USER17> Hi kazinator, thanks for your comment (I'm the post's author). When I originally wrote the post, I actually had a whole section about "reading for questions", which discussed how the best way to read without modifying a program is to read to answer focused questions you have about the codebase. It kind of got lost when I shifted focus to active interaction versus passive exploration, but I agree that reading with questions in mind is far superior to just reading the code to understand it generally.

</comment></comment><comment><USER26> I'd like to spend more time reading great code. I think I'd get something out of it.

Possibly more important, though, I've always had a fearlessness to dive into a codebase. I've built a little thing called Cronitor and recently I was giving a talk on building our first server agent in Go. Long story short, there were a few people surprised that I studied a couple crond implementations to figure out some important details for proper monitoring and I was surprised they were surprised. I don't write much c or any c++ but as long as you approach it with some fearlessness and a simple plan you can learn from unfamiliar codebases. Spend up to an hour figuring out how a project is structure (hopefully a lot less) and then just skim/grep to find a spot probably close to what you're looking for. Spread out from there.

The best way to learn a new language is to build something useful and learn what you need along the way. I think studying code can be done the same way.

<comment><USER2> Another way to approach this: review other people's code at work (e.g. code in another language or for another product). Even if you don't know the syntax of a language, you can probably follow enough of it to learn something interesting. A commit is going to be a much more easily-digestible unit than a whole codebase, and you can go ask the author to explain anything that you don't understand. Plus, over time you might understand enough to help out on that project, or help integrate it with yours.

</comment></comment><comment><USER27> How about some good _annotated_ code? :)

[http://www.kohala.com/start/tcpipiv2.html](http://www.kohala.com/start/tcpipiv2.html) \- 15K line implementation of TCP/IP stack from BSD. Fantastic book, reads like a novel.

[http://www.pbrt.org/](http://www.pbrt.org/) \- fairly detailed write up on building a pretty decent 3D renderer

</comment><comment><USER28> Studying codebases is one of my rewarding hobbies. I 've learned more from that practice( [https://medium.com/@markpapadakis/interesting- codebases-159f...](https://medium.com/@markpapadakis/interesting- codebases-159fec5a8cc) ), than from most technical books I 've read (by the way, most technical books aren't particularly great).

</comment><comment><USER29> I agree most programmers are too quick to write before they read, but I'm not sure why it has to be "for fun". Reading code takes effort, just like understanding any new complex thing. The primary virtue here is _patience_. It's a lot like debugging actually: the goal is to understand.

Setting aside the "for fun", of course I read my co-workers' code, but also I read my dependencies' code quite often. In particular when you have something that is meant to be extended, the docs never completely cover all the use cases, and the quickest way can be to start reading.

Some examples from my own recent work are reading code from the Ruby gems devise, devise_token_auth, and spree, and also reading Django class-based views (all things meant to be extended). One trick I've learned in Ruby is `cd $(bundle show spree_core)`. From there you can grep, find, read, even add your own `puts` or whatever.

Actually I _have_ been reading some code for fun: Postgres! I have an extension that adds temporal foreign keys, and I'm slowing porting it from plpgsql to C. Reading the code for standard foreign keys is very helpful. Same thing for a lot of other extensions I've written in the last few years. It has helped me a ton to read others' extensions and the core code.

<comment><USER30> This is what I've been working on for the past few months. I've been writing a lot of spaghetti code in the past and come back to find how poorly I organized it. I'm suppressing the urge to immediately write code, but rather, look at the big picture first, digesting the information, even if it means prolonging writing anything for a day or several hours.

I usually write pseudocode first before doing anything now. Either on paper, as code comments, or as a list. Sometimes I find myself writing tests on paper as well, it helps out a lot too. A programming language is just a means to an end, what they all have in common is a set of logic to follow.

Then I debug. I just fork the code, comment things out, add a little bit of functionality, etc. When I have a grasp on it write some TDD

I find the easiest codebase that I refer a lot is the todomvc, or any similar ones that have different implementations (differnet languages) for the same general solution. All the core logic between languages is mostly the same, so its easy to dig through and understand a different programming language / how its generally organized.

One thing I remember learning about from experience polyglot programmers. Its extremely helpful to have an existing codebase you've written (such as todoMVC), and using that same example / porting it over in a different language to learn that languages nuances.

</comment></comment><comment><USER31> "we usually read when we want to edit... That hacking produces better comprehension than passive, linear reading fits with what we know about learning... solid understanding emerges from active exploration, critical examination, repetition, and synthesis. Hacking beats passive reading on three out of four of these criteria."

This doesn't just apply to learning programming languages - also learning Chinese.

[https://pingtype.github.io/docs/failed.html](https://pingtype.github.io/docs/failed.html)

I've had much more success since writing my own tool to translate the text I'm interested in, rather than being spoon-fed some patronising phrases to recite from a textbook.

</comment><comment><USER32> The thing about code reading for me is you have to have decent tooling.

It's pointless reading code in Github, especially for a codebase you are not familiar with, you need to get the codebase open in an IDE to be able to dive in quickly and back again to build the map out in your head. I don't think you can read a portion of code from top to bottom without having tooling....unless the piece of code is really short and just one or two files

<comment><USER33> The one online tool that I use for this kind of work is Woboq Code Browser. It's only C/C++ projects and not many are freely available. The Linux kernel is though and I spend a lot of time in that code base. glibc, gcc and llvm are also available.

[https://code.woboq.org/](https://code.woboq.org/)

<comment><USER34> Which projects would you like to see on code.woboq.org? Maybe we can add them.

</comment></comment></comment><comment><USER35> Sometimes reading code saves your butt. I've had to make very minor changes to a code base to make it compatible with Python 3, and I've had to add things to HTML libs to prevent execution to JavaScript.

Taking an open source library at face value can sometimes put you in a precarious situation. For me, it's an exercise of following the errors or trying to break the code. I'm not really sure if that counts as reading. Reading a large code base, in my experience, calls for a pencil and paper. It's a lot more work than passively reading and trying to hold all the information in my head. Reading code isn't the same as reading a novel. Perhaps better guidance on what actively reading code means is in due order?

</comment><comment><USER36> [https://www.fsf.org/blogs/community/who-actually-reads- the-c...](https://www.fsf.org/blogs/community/who-actually-reads-the-code)

"Two-and-a-half months later I received an email from someone who not only managed to find the comment, but also managed to guess the code had to be rot13'ed."

</comment><comment><USER37> On this spectrum, there's also "read by refactoring" ([https://www.jamasoftware.com/blog/read-by- refactoring/](https://www.jamasoftware.com/blog/read-by-refactoring/)). You'll need good refactoring tooling and good versioning (as you'll almost certainly want to discard many of your trial refactorings) but I've found that the approach helps me evaluate how my mental model matches up with reality. It also generally leads to a more readable codebase too

</comment><comment><USER38> I must disagree with this sentiment, though I understand where it is coming from:

"Clean, solidified abstractions are like well-marked, easy-to-follow paths through a forest — very useful if they lead in the direction we need to go, but less useful when we want to blaze arbitrary new paths through the forest."

Using the same analogy, if you want to blaze a new trail through the woods, you need a map of the territory, and a map for this territory takes the form of higher-level abstractions with clear, explicit semantics and minimal but effective, and unambiguous, interfaces.

One of the biggest problems in modifying or reusing existing code is the risk of breaking higher-level consistency, for example by violating an implicit constraint that is necessary for correctness (the biggest Ethereum errors have been of this form, where the implicit assumptions included when and how often initialization is performed, and that a certain library will be present.)

If the clean code movement has been delivering code that works as step-by-step instructions for getting from A to B, but not as a map, it may be because breaking code down into small functions and classes is easier, more visible and more measurable than making coherent abstractions with consistent and minimal interfaces at a higher level.

<comment><USER17> To push back on this point a little bit, I think we agree that a map is one of the most useful things you can have but disagree on what the right type of map is.

While I'm not anti-abstraction, I think people often impose poorly chosen high-level abstractions on top of messy lower-level components (akkartik calls this Authoritarian High Modernism in a comment ([https://lobste.rs/s/gtxi5y/nobody_s_just_reading_your_code_h...](https://lobste.rs/s/gtxi5y/nobody_s_just_reading_your_code_how_we#c_0joqn2)) on Lobsters). This approach leaves readers having to understand a bad abstraction and its internals, a map, its territory, and inconsistencies between the two.

As I understand it (please correct me if I'm wrong), you want people to do the work to find better high-level abstractions. I agree that it would be good if we could do this more often. I just also think we can find other ways to give people maps that work with our existing, messy codebases that don't have good, minimal abstractions already.

<comment><USER38> Yes, the start of your last paragraph states what I would like to see, and the statement I took issue with specifically dismisses 'clean, solidified' abstractions, not messy, failed attempts at it, yet I am also very well aware, from personal experience, that we often have to deal with code that is not like that (even though, in some cases, written by people who thought they were doing SOLID work.)

The question is what to do about it, especially given that abstraction and the separation of concerns are not suddenly going to fix things after all these years of being more honored in the breach. I do not think that there is a programming style that leads to the writing of understandable code without having a coherent vision of the big picture, because I do not think you can understand the purpose of code in the small without knowing its place in the big picture (except insofar as the author has successfully separated the independent concerns, which brings us back to my original point about the value of abstraction.)

One can still modify such code, but the less you understand about it, the more likely it is that you will make mistakes, and there is also a real possibility that the result will be harder to understand than the original - this vicious circle is one reason why much-modified code is usually difficult to understand.

While I don't hold out much hope for programming style to save us from this situation, I think we might do better with tools to help us understand code. In particular, I sometimes find myself doing program slicing by hand (what ways are there to get from A to B that modify X, for example), and there is some tool support for doing so, though availability is spotty at best.

</comment></comment></comment><comment><USER39> "But you can't expect a map to tell you what questions to ask, and it makes no sense to read a map linearly from top to bottom, left to right."

But you can read/view a map as an illustration to get an overall view of the layout of things and how they are connected.

I read code. It surprises me that people deem themselves an expert in some 3rd party lib without actually understanding the internals.

</comment><comment><USER40> I had to use a js library for something today.

npm install downloaded 113 new packages. I'm not even a javascript programmer; I'm saddled with being "full-stack"

I'm supposed to read all that every time I need a new library? Or write it myself, when I have absolutely no idea how to build something that complicated, if I had time, negating the whole point of OSS in the first place?

<comment><USER41> The point made is to read code to become a better programmer. That doesn't mean you have to read all code you ever use.

</comment></comment><comment><USER42> In a similar vein, I often wonder just how many people actually check cryptographic algorithms. We'd all probably agree that it is good not to roll your own crypto algorithms, or even in implementation of known crypto such as AES. But how many experts in the world are there for AES and secure hashing? A lot of the major MD5 and SHA1 work all came from Marc Stevens' team. How many experts are there in this field, really? "Provable security" is another issue: Shoup, Menezes and Koblitz have all expressed concern about the current state of the art, I think.

<comment><USER43> I'm far from an expert in cryptography but I've had to dig into OpenSSL's codebase on more that one occasion and every time it left me with a deep sense of uneasiness. It's really not what I would deem good code: too many macros, too many potentially confusing API conventions (inconsistent return values in case of error, unclear resource lifetimes, ...), not enough comments and documentation...

It's not the worst C codebase I've ever seen (far from it) but for something as critical I'd put the bar very high it terms of code quality and OpenSSL doesn't even come close.

</comment></comment><comment><USER44> I wouldn't have thought to be in the minority when stating that I actually read a lot of foreign code out of curiosity. Especially when dealing with architectural decisions, I like to dig into codebases I consider to be good and professional (a rarity in the professional/proprietary development world unfortunately). For instance, reading the chromium source code or mozilla for that matter, give you a lot of good input since both codebases are sufficiently complex and deal with a lot of layers and stacks.

<comment><USER45> How do you know a codebase is good before you invest time digging into it?

<comment><USER44> I don't. There are a few indicators though like the overall structure of the source files, how they are laid out on the file system. Minor details like inconsistent formatting. Typically if one or more of those indications is messed up, I'm pretty sure the rest of the codebase is also not in a good state. I still do skim through some files to confirm my expectation though.

</comment></comment></comment><comment><USER46> One of the best parts of the Plan 9 system is that all of the kernel/command/library source is on hand and readily available to consult at any given time.

Jointly, an important detail is that the complexity of said source is kept to a sane minimum and general style trends mean that most, if not all, of the source is formatted similarly and legibly. The system is so compact that you can keep most of the system source in your head at one time if you really need to.

<comment><USER46> A fun tidbit from the Plan 9 compilers only really able to be found by reading the source: [https://groups.google.com/forum/#!msg/comp.os.plan9/uMF7A4gk...](https://groups.google.com/forum/#!msg/comp.os.plan9/uMF7A4gkJsw/kNWBQ8U93LcJ)

</comment></comment><comment><USER47> One thing that helps me make reading code in code reviews less passive is to add occasional temporary print statements and then run the unit tests again that cover the code I am reading. Seeing variable values satisfies some curiousity. Sometimes I will use a debugger to step through code I am reviewing but for some reason I prefer print statement to satisfy any curiousity I have about how the code works.

</comment><comment> your-nanny Do I sit back in my comfy chair on an evening and just read through some code repo? Well, actually, yeah, I do... Though not terribly often. Do I sit back and read through programming bloggers' explaining their code? Yes, pretty often, and based on HN, that's pretty true of a lot of programmers.

Still I'm more likely to find myself browsing wikipedia for math and cs

</comment><comment><USER48> Peter Seibel, the author of the _Coders at Work_ book mentioned in the post, actually discussed this in a blog post: [http://www.gigamonkeys.com/code- reading/](http://www.gigamonkeys.com/code-reading/)

It's not quite true that _none_ of the programmers interviewed in the book routinely read code for fun. In his blog post, Seibel mentions the exceptions:

> First, when I did my book of interviews with programmers, Coders at Work, I > asked pretty much everyone about code reading. And while most of them said > it was important and that programmers should do it more, when I asked them > about what code they had read recently, very few of them had any great > answers. Some of them had done some serious code reading as young hackers > but almost no one seemed to have a regular habit of reading code. Knuth, the > great synthesizer of computer science, does seem to read a lot of code and > Brad Fitzpatrick was able to talk about several pieces of open source code > that he had read just for the heck of it. But they were the exceptions.

The Knuth exception is notable: he _does_ routinely read code for fun. In the book he mentions things like

> I've got lots of collections of source code. I have compilers, the Digitek > compilers from the 1960s were written in a very interesting way. They had > their own language and they used identifiers that were 30 characters long > but very descriptive, and their compilers ran circles around the competition > at the time—this company made the state-of-the-art compilers of 1963 or '64. > And I've got Dijkstra's source code for the THE operating system. […] I > collected it because I'm sure it would be interesting to read if I had time. > One time I broke my arm—fell off a bike—and I had a month where I couldn't > do anything much, so I read source code that I had heard had some clever > ideas in it that hadn't been documented. I think those were all extremely > important experiences for me.

And then a passage quoted in the post about how he reads code, with a Fortran compiler as example (not repeating here it's in Seibel's blog post: [http://www.gigamonkeys.com/code-reading/](http://www.gigamonkeys.com/code- reading/) ), after which the interview (and the book) ends with Knuth saying:

> don't only read the people who code like you.

(The examples in the book of people who last seriously read code years ago also interesting, e.g. Douglas Crockford mentions some programs he read, and there are multiple pages in the book about Guy L. Steele reading the TeX program.)

Anyway, back to Knuth: I think that, the way he reads and digests code (or even papers: [http://blog.computationalcomplexity.org/2011/10/john- mccarth...](http://blog.computationalcomplexity.org/2011/10/john- mccarthy-1927-2011.html?showComment=1319546990817#c6154784930906980717)), it addresses a lot of the points the linked post makes. Even when "just reading" code, or anything for that matter, you _are_ supposed to be doing the things the post mentions in "hacking versus passive reading": active exploration, critical examination, synthesis.

For example, Knuth read the code of ADVENT (aka _Colossal Cave Adventure_ ), and loved the code (not just the game itself) so much that he rewrote it to share with others to read, in his own preferred literate-programming (CWEB) style that matches the way he thinks ([http://www.literateprogramming.com/adventure.pdf](http://www.literateprogramming.com/adventure.pdf)). This definitely doesn't sound like "passive reading" to me.

Nevertheless, great post.

<comment><USER17> Upvoted for careful scholarship and a useful addendum (I'm OP)!

I sometimes wonder whether a lot of Knuth's greatness comes from doing more of the stuff everyone knows they should do but don't. If you read this interview ([https://github.com/kragen/knuth- interview-2006](https://github.com/kragen/knuth-interview-2006)) with Knuth, he talks about how he was nervous he wouldn't be able to learn calculus so just decided to do all the problems instead of just the assigned ones. Unsurprisingly, partly because he's Knuth and we all know Knuth can do math, he ends up really good at calculus: > But Thomas's Calculus would have the text, then would have problems, and our teacher would assign, say, the even numbered problems, or something like that. I would also do the odd numbered problems. In the back of Thomas's book he had supplementary problems, the teacher didn't assign the supplementary problems; I worked the supplementary problems. I was, you know, I was scared I wouldn't learn calculus, so I worked hard on it, and it turned out that of course it took me longer to solve all these problems than the kids who were only working on what was assigned, at first. But after a year, I could do all of those problems in the same time as my classmates were doing the assigned problems, and after that I could just coast in mathematics, because I'd learned how to solve problems. So it was good that I was scared, in a way that I, you know, that made me start strong, and then I could coast afterwards, rather than always climbing and being on a lower part of the learning curve.

<comment><USER48> Yes exactly. It's always inspiring to see how (in his case) you just start doing things simply and methodically with focus, and eventually you get very far and become better than anyone else.

</comment></comment></comment><comment><USER49> Somebody read my code once and commented on my improper use of 'mod' or something like that. It then turned into a long discussion on how they might be incorrect, and so on and so forth on Reddit, back and forth on Lisp.

I love Lisp. It's a great language with great programmers.

</comment><comment><USER50> I've been thinking about this idea for a while and love the reimplementation idea. I really want to start live-streaming myself coding (or pair programming) and have been trying to come up with some ideas that would end up being interesting to watch.

One idea was taking a popular open source tool with a good test suite and trying to get the tests to pass, but I think checking code out at a point before a new feature is implemented and reimplementing it could end up being really interesting. Could even make it more interactive by sharing the checkout point so viewers can do an implementation themselves and doing a stream walking through different interesting implementations.

</comment><comment><USER51> A few years ago in my previous company there was a major push to convert a lot of the codebase to Python. A byproduct of this conversion was an easier way to build UI using predefined widgets. Yet no one was using this functionality due to the mindset of years of TCL. I honestly hated TCL. So I took it upon myself to explore the entire new code base and go about building UI panels. Initially I just couldn't understand how the code mapped out until one day I just printed out some of the code and read it repeatedly till it made sense. The whole exercise was an eye opener.

</comment><comment><USER52> Best way to figure out someone else's codebase, IME, is to just dive in heavy and start breaking things. Figuring out what's connected to what and why by removing chunks of code that you need to understand.

</comment><comment><USER53> I read the source code for the libs all the time, mostly to see what methods and properties they expose. I learn something new every time. This is JavaScript/NodeJS. I don't miss compiled .dll's

</comment><comment><USER54> Once I propose for a team to read the code of Redux before adding it to the codebase (if you don't know, redux is a very small libraries, very easy to read). But no one seemed to care, they was just saying things like "Well, I'll read this blog post that teach us how to use it", and I was like: "BUT, if you read the code You will know _exactly_ how to use it! Why not go to the source instead of read other people opinions?!"

</comment><comment><USER55> Reading code is difficult and time-consuming. To really understand a function you need to try it with different inputs, either with interactive testing or in a debugger; AND you need to know what the functions it calls does.

The second part, knowing what the code the function is calling does, is nearly impossible when they are other functions in the program itself.

</comment><comment><USER56> I love to dig through peoples code. Unfortunately I know myself enough to know that it can be a giant time sink if I let myself go.

In swedish there's a phrase called "snöa in", to get snowed in literally, and that's what happens to me.

So after enough years in the biz I try to hold myself back from this habit.

</comment><comment><USER57> By corollary why it's also so important and terrifying to release open source projects too.

You're oftening wondering who is gonna dig into this code of yours and think about your coding, esp. when you're not following the best practices and TDD.

</comment><comment><USER58> If you want to exercise reading concise and easily understandable standard C code, grab a toy project from suckless.org. Even though I write my code more defensively in some ways, that stuff is really straightforward to hack on.

</comment><comment><USER59> Interesting read, but I find comparing code to a map to simplistic. I would at least say that code is more like a puzzle of a map. You may or may not understand each puzzle piece and where it fits it. That is my experience with reading code.

Code is like Ogers and Ogers like Onions. They have layers of complexity :P

</comment><comment><USER60> I read code to learn all the time. And I don't get paid to program.

</comment><comment><USER61> The only way to be sure you understand everything is to learn quantum mechanics perhaps string theory too just to be safe. But in practice modesty dictates we limit to learning as much as we can to get the job done.</comment>


Why Does Covid-19 Kill So Many Older People? - <AUTHOR> https://www.labroots.com/trending/health-and-medicine/17095/covid-19-kill-people <comment><USER2> This doesn't seem very interesting from a scientific standpoint, and it's also a somewhat dangerous message politically. The director of the WHO said yesterday that a significant proportion of those requiring hospitalization are under 50. In France and Sweden 50% of patients admitted to ICUs are under 65.

So the right understanding should be: if you're young _and you have access to intensive care_ you will survive. But making sure all have access to intensive care is not easy...

<comment><USER2> And don't forget: slowly deteriorating to the point where you need intensive care is not a fun experience...

</comment></comment><comment><USER3> Basically people over 75 years of age have much weaker immune systems. And most of those also suffer from other illnesses and Covid 19 compounds that.

<comment><USER4> On average this is true but all of those in that age group who have died in Norway so far had worse than average health to begin with. At least here there are many octogenarians who are really quite fit, physically active, and healthy.

</comment></comment><comment><USER4> I think that the apparent death rates depend very much on timing, population density, general health and fitness, access to intensive care facilities, and the details of how cases and deaths are counted.

Compare for instance the UK and Norway. Norway has about 1500 confirmed cases with seven deaths, average age of those dying is over eighty.

The UK with about three and half thousand confirmed cases has nearly two hundred deaths.

So on this basis the UK has a bit over twice the number of cases but twenty five times the number of deaths.

This suggests that several of the factors I mentioned have a substantial effect on the reported likelihood of dying in the two countries; but which ones and is the likelihood really as different as it seems?

<comment><USER5> You really cannot and should not compare confirmed cases / tests vs deaths when the calculation of confirmed cases or tests varies from place to place.

For example, South Korea where anyone can get a test, versus the UK where only ill people in hospital will get a test.

So what can you do? Possibly compare the number of sick people who have been tested in hospital? Possibly you need to control for demographics, and certainly per population. Possibly compare to official estimates of total population infected (e.g. UK could be around 50K now)

Then you can start to look at the differences, but the error rates are going to be large.

<comment><USER4> > You really cannot and should not compare confirmed cases / tests vs deaths > when the calculation of confirmed cases or tests varies from place to place.

That was my point.

</comment></comment></comment><comment><USER6> Doesn't answer the obvious question .. which is why does covid-19 disproportionally affect the old _compared to other influenza viruses._

Or _appears_ to.

<comment><USER7> Covid-19 is not an influenza virus, coronaviruses are a different family

<comment><USER8> Yes.

Also, we have massive campaigns to immunise as many vulnerable as possible against flu every year.</comment></comment></comment>


Inside Stripe - <AUTHOR> http://www.fastcompany.com/1813087/stripe-startup-paypal-google-checkout-peter-thiel-elon-musk?partner=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+fastcompany%2Fheadlines+%28Fast+Company+Headlines%29

<comment><USER2> Stripe has been amazing for us. We've even gotten emails from them (most recently Saikat!) about how we were accidentally hitting their API twice. They helped us find a bug. No other company I've integrated with us paid that close attention to such matters. We've changed our internal usage of Stripe many times (from doing lots of recurring work with various plans and invoice item adding) to just doing simple charges and it's worked great every time.

We're quite proud of our Stripe-powered CC form on Picplum! <http://dl.dropbox.com/u/186198/Screenshots/t26p.png>

</comment><comment><USER3> I have always attributed PayPal's problems to having to perform fraud prevention on a massive scale. That's where I understand most of the initial difficulty comes from in getting a PayPal account setup: they have to weed out scams and money laundering. Same with the horror stories I read: most of those people have circumstances that would also preclude them from a standard merchant account.

So is Stripe doing fraud prevention differently? Put another way, are they an entirely different animal from PayPal and Google Checkout, or are they betting that they can do a better job at what PayPal and Google Checkout already do?

<comment><USER4> You are absolutely correct. That's one of PayPal's main weaknesses. I am not sure how Stripe is dealing with it; though they probably have to go through a similar screening process, which isn't foolproof.

I am a co-founder of a nascent third party payments aggregator (TPPA) called PayGuard (currently in stealth mode - Beta version is being built), and our system inherently includes automatic fraud prevention; so we not only save money by eliminating the screening process, but we also save by virtually eliminating all 'dispute resolution'-leading scenarios.

As far as a comparison for Stripe, they seem to be similar to Braintree, but geared more towards early stage online merchants. The following link may answer some of your other questions:

[http://www.quora.com/What-are-the-advantages-of-using- Stripe...](http://www.quora.com/What-are-the-advantages-of-using-Stripe-for- in-app-transactions-instead-of-Paypal-or-Braintree-are-the-costs-much-lower- how-good-is-the-security)

<comment><USER3> _our system inherently includes automatic fraud prevention_

If you're willing to share more, I'm listening. PayPal has "automatic fraud prevention" in the sense that, if you do something that deviates from what they expect, they suspend your account. I assume you mean something different.

Also, I followed the Quora question to this related one: [http://www.quora.com/How-are-Square-and-Stripe-able-to- accep...](http://www.quora.com/How-are-Square-and-Stripe-able-to-accept- payments-on-merchants-behalf-without-requiring-them-to-hold-their-own- merchant-accounts-with-a-banking-financial-institution) I'm still confused about one thing, though. I understand that PayPal is both an aggregator and the merchant of record. It sounds like Braintree is not and aggregator and not the merchant of record. But this poster claims that Stripe is an aggregator, but not the merchant of record, and I don't understand what that means.

<comment><USER5> No we won't freeze, close, or withdraw money from people's accounts. Once it's open, it's open. Once the money is cleared, it doesn't go back. This is an ironclad promise we can make to users because of the unique way we process payments. Right now the model for peer-to-peer transactions is that after one party gets paid the other waits for his merchandise or services to be delivered (eWork projects). We solved this problem by creating a system that will give equal distribution of control to both parties during the entire process, disincentivising fraud on both sides. The system is specifically designed for people who outsource projects, freelance workers, and cross border peer-to-peer e-commerce. It would simulate the benefits of a face-to- face interaction by solving the problems created by the distance and time usually involved in these types of exchanges.

<comment><USER3> Is "we" PayGuard? And are you saying you _won't_ "freeze, close or withdraw", or that you _can't_? One is a promise. The other is a fact. See Colin Percival's post on the distinction: [http://www.daemonology.net/blog/2012-01-19-playing- chicken-w...](http://www.daemonology.net/blog/2012-01-19-playing-chicken-with- cat-jpg.html)

It's also not clear to me how what you describe prevents scams and money laundering. Note that in the case of money laundering, it's the same party on both sides of the transaction.

<comment><USER5> You are absolutely correct, it is a promise. But it is also a guarantee. There are regulations regarding money laundering that we will have to comply with of course. Users are required to fill out certain forms if the the amount of a transaction exceed 3,000 for individuals and 20,000 for businesses. And these are not just "per transaction", it is per month. As with scams our system is specifically designed to prevent users from falling into the trap scam sellers or buyers. Of course it will never be absolutely fool-proof, but it does significantly reduce the incentive for fraudulent activities on both sides. Unfortunately, I cannot give out too much detail on how we do it. We are launching our beta system sometime around March and you will be more than welcome to try it out as a beta tester.

</comment></comment></comment></comment></comment></comment><comment><USER6> I love Stripe and it's been awesome to use, but must repeat a question I asked in another thread. I wonder if that level of simplicity is sustainable for them going forward. The reason other payment providers have paperwork and approval processes is because of liability and the reality that there are unscrupulous merchants out there. Is Stripe assuming an increased liability because of the ease at which anybody can just sign up?

<comment><USER7> We think a lot about risk, and actually do more verification than traditional merchant-account providers. We just don't make you do busywork like mailing us a voided check or a utility bill.

We certainly believe that the approach is sustainable, and the data so far strongly supports this.

<comment><USER6> Awesome, glad to hear it! Thanks for the disrupting the space, I know I'm not the only one who appreciates it.

</comment></comment></comment><comment> old-gregg Stripe has been fantastic for us at <http://mailgun.net>

Aside from solving the problem of dealing with recurring payments, they bring some unexpected benefits to the table. Their reporting (and the overall dashboard design) is so good that we canceled our original plans for building our own reporting completely - we just link directly to Stripe reports and customer pages from our own backoffice admin portal.

<comment><USER8> Agreed. Stripe is working wonders for us at: <http://www.mobiledevhq.com>

We tried to integrate with PayPal's recurring APIs for three weeks, scrapped it when we found Stripe, and had it completely ready to go in 24hrs.

Not to mention their customer support is absolutely fantastic. I get responses within seconds in their Campfire chat room and hours if I send an email, anytime of day.

</comment></comment><comment><USER9> We were lucky in that Stripe was made available right as we were starting <http://www.ginzametrics.com>. We never had to deal with the painful issues that we've seen other companies go through with their billing systems.

Their dashboard has also come a long way so that many of the back office management things I thought I was going to have to build have been taken care of. You can create / manage plans, customers and more. It's hard to believe nobody has solved this problem until now but I'm glad that somebody finally did.

</comment><comment><USER10> What is it about Stripe that is taking Google and Paypal a long time to imitate? Article mentioned api took tons iterations and stringent auditing, but the api is now known and auditing established companies should be relatively faster. It seems unlikely that the first mover advantage will allow enough time for Stripe to make a dent in the market. Flying under the radar longer might be better, but congrats to the team for all the accomplishments.

</comment><comment><USER11> I wish it worked in Canada... Any other Canadians out there wishing the same thing?

<comment><USER12> We're working on this right now.

<comment><USER13> And Please Please look at Australia as well

</comment></comment></comment><comment><USER14> Stripe looks so awesome that it's got me thinking about charging for things that I might not have bothered charging for in the past. I think that's one of the unseen benefits. I'm looking forward to using Stripe.

<comment><USER15> A lot of people doesn't notice this, but when all you have to do to start charging people is include a couple lines of Javascript then the game totally changes. Imagine being able to charge (or just put a donation button) on all those weekend projects you see advertised in HN!

I think that as soon as they start expanding outside the US the market for web applications will radically change.

</comment></comment><comment><USER16> Been very pleased working with Stripe for one of my projects. It just feels like it was very carefully thought out. Hope they continue to make strides in the developer community.

</comment><comment><USER17> We're loving it over at <http://coursebookapp.com>. We've been happily humming along for a few months, PayPal-free.

</comment><comment><USER18> Please come to Australia!

I can't confirm or deny I'm working on a direct competitor.

Am I serious? Or joking, just to light a fire under you?

Please hurry! :)

<comment><USER19> Seconded! The Australian market is ripe for a company like Stripe. People are just now getting happy with buying things online, so hurry!

</comment></comment><comment><USER20> Can someone explain how stripe/square can get around the merchant account requirement?

<comment><USER21> As far as I understand it, Stripe IS your merchant account. They are similar to a Paypal type service. Does that help?

</comment></comment><comment><USER22> Stripe is great, simple and awesome support. Once I got past the super simple first charge, I had some technical questions. I jumped into their support chat and had my question answered, plus some helpful php links.

</comment><comment><USER23> If only they would come to Europe (or any European alternative would rise and stand up against Paypal).

They're an amazing and promising startup and I do hope they succeed soon in expanding across the ocean.

<comment><USER12> We're working on doing exactly this.

<comment><USER24> I would love to know expected timeframe. Being in Europe and not part of EU (yet), handling payments is a major pain. Waiting for years to be able to complete charge on my own site instead of redirecting to a payment processing company. All that easy analytics and A/B testing opportunities....

</comment></comment></comment><comment><USER25> Here's how my startup ended up using Stripe: After being told by Paypal I couldnt use Paypal at all (due to my business model being a violation of their Acceptable Use Policy) and then more recently Braintree telling me I could only process low number transactions (less than $250), Im happy to say that <http://www.sponsorist.com> now processes payments with Stripe.

</comment><comment><USER26> I just finished using these guys for a product I'm launching next week. Great service and great support. Highly recommended.

</comment><comment><USER27> Seems like a great service. Thanks for the article.

How does Stripe line up in terms of services compared to GoCardless which was up here the other day: <https://gocardless.com/>

Differences in the agreement / metrics / UI / API? Seems like the 1.9% fee difference could add up.

<comment><USER28> This comes up again and again, unfortunately. Its Apples and Oranges - and I get the feeling GoCardless don't say this clearly enough:

GoCardless does not process credit card transactions. They process bank debits (= low fees, different system), and are UK only.

Stripe does process credit card transactions, and doesn't do bank debit.

</comment></comment><comment><USER29> Hehe the desk shown there is exactly the same setup at <http://stripe.com/jobs> page. And yet none of the other workstations come with $1500 Herman Miller Embodys...

I can also identify a pair of grados in the far right. Aging SR60s if I had to guess...

<comment><USER30> The 'phones ont the desk behind the Embody appear to be Sennheiser HD 202.

[http://www.sennheiser.com/sennheiser/home_en.nsf/root/privat...](http://www.sennheiser.com/sennheiser/home_en.nsf/root/private_headphones_hifi_wired- headphones_504291)

<comment><USER12> They're actually just Bose QC15s.

<comment><USER30> Nice.

(I was looking at the ones in the Fast Co. photo.)

A lot of sweet bikes too!

</comment></comment></comment></comment><comment><USER31> Great product! Looking forward to trying it out very soon. Anyone know the ergo keyboard being used?

<comment><USER32> Kinesis Advantage - <http://www.kinesis-ergo.com/>

<comment><USER33> Great keyboard ... have 3 of them. Really wish they would make a Bluetooth one.

</comment></comment></comment><comment><USER34> Can any of the Stripe team comment on when you'll be launching support for UK businesses ?

<comment><USER12> Sorry, we can't give a timeline. I wish we could.

<comment><USER35> I wish you could too! What's stopping you right now?

<comment><USER36> There's undoubtably tons of red tape for them to navigate whenever they enter a new territory. See the linked article for the hassle they had in the States.

They also tried setting up in Ireland originally but some Irish banker pretty much laughed them out of the room by the sound of things when they had a meeting. Is there any wonder why the US is a more fertile environment for entrepreneurship?

<comment><USER19> Given what Irish bankers did to the country, I wouldn't give much credence to their opinion. Unfortunately they still pull the strings and have incredible political clout. I'm not even Irish (though I lived there a few years) and it makes me sick thinking what the banks did, and then to foist it off onto the Irish taxpayers. Ireland's loss is the US' gain!

</comment></comment></comment></comment></comment><comment><USER37> This is completely off topic for the business model, but how do you like the orange Embody chair in the last picture? It looks like the fabric is getting dyed from jeans, but other than that, how is the actual chair?

<comment><USER38> I absolutely love mine. Love it. Had one for about 2 years and it fits like no other chair I've tried. Only problem is that I have to remember to keep a towel on it when I'm not here because one of our cats loves it. That's unnecessary hassle for what is essentially a work tool, but if I didn't the seat would be clawed up within months.

</comment></comment><comment><USER39> AS businesses scale, is it fair to assume they would want to start accepting and storing credit card information - basically the costs would be much lower? If so how do they meet security requirements/compliance?

</comment><comment><USER40> We're using Stripe and it's been awesome right from day-1.

</comment><comment><USER41> Stripe has been awesome for us at CloudContacts!

</comment><comment><USER42> Micropayments support would be wonderful

<comment><USER43> I think it's essential for their success too. I can't use them without micropayment support.

<comment><USER44> I'll second this notion. Even if there is a way to collect micropayments, but not process them until they are large enough to process efficiently with the current credit card framework.

<comment><USER45> It's reasonably easy to do this with Stripe today, there's no reason you have to send a "charge" their way until it's accumulated enough to be worthwhile.

</comment></comment></comment></comment><comment><USER46> does anyone know if there is a way to transfer credit cards from Stripe to another 3rd party if they raise their rates? (I'm worried about this being a "low introductory offer")

Or do you have to solicit credit card info from all your customers again?

<comment><USER47> From their FAQ:

>Tell me about data portability. >That's not a question. We feel pretty strongly about data portability. We'll try to keep you with us by offering a better product than all of our competitors, but we won't keep you by locking you in. If you want to leave us for somebody else, we'll help you migrate your credit card data in a secure and PCI-compliant way. We're programmers at heart, and we strongly believe in open systems and a level playing field.

</comment></comment><comment><USER48> Such a great service.

</comment><comment><USER49> If you read about the early founding of PayPal you will find one of the big issues they faced was fraud. I hope they give that angle enough thought otherwise they are going to start leaking cash like the Costa Concordia took on water.

<comment><USER50> On reading the article you would note in the second paragraph that two of the backers are Paypal cofounders. That would lead us to expect Stripe do have a big clue about the fraud issues.

It will only be later that we'll find out what happens behind the scenes. For example Paypal works wonderfully right up until they decide to hold your funds while they investigate. Stripe will probably end up doing something similar and also have similar collateral damage (false positives).

The Stripe FAQ includes a chargeback section which would cover the other likely scenario - people claiming not to have received the item/never made the transaction/it wasn't what they ordered etc.</comment></comment>


Ask HN: Good UI/UX metaphors? - <AUTHOR>

I find myself stuck on overall design style of a webapp and am looking for examples of interface metaphors, especially that carry the motif thru to multiple elements. Basecamp is a decent example. Tryin to break a creative block here. Thanks. <comment><USER2> Check out <http://ui-patterns.com/> maybe it will help.</comment>


Google's remote work employee survey - <AUTHOR> https://www.fastcompany.com/90329043/exclusive-google-asked-100000-employees-about-remote-work-this-is-what-they-learned <comment><USER2> Having worked full-time remote for more than two years so far (and part-time remote before that) I agree with the conclusion that remote workers are no less productive than on-site employees, but that the trade off can be frustration and feeling disconnected.

I would actually say I am more productive at home (no commute, fewer in-person distractions, comfort of having my own kitchen and making coffee my way).

When I go into the office for occasional on-site meetings, I definitely feel more invigorated and energized from being around people and collaborating on a shared vision, at the expense of being able to focus deeply and get concentration-heavy work done.

I think it's about striking the right balance, and having a company that strives to enable the remote teams (especially important if you are a hybrid on-site/remote company)

I'm overall happy with the mix/ratio, and I think what helps is that we're always striving to improve wherever possible.

edit: typo

<comment><USER3> I've been a remote employee for nearly 10 years now. You're pretty spot on - it all depends on the team.

I've been on teams that collaborate a lot in person, whiteboarding, etc, and it gets frustrating to get 'left out.' That said, I've also been on teams where even sitting next to each other in an office, they communicate over slack/hangouts. Those teams made me feel absolutely no different as a remote employee.

In those instances, it was just preference of the team and how they interacted, more than anything. I think anyone who manages teams with remote employees should push towards this. Sure of course you can still have your random whiteboard breakouts, but perhaps require some time of everyone at least on audio, perhaps video.

</comment></comment><comment><USER4> Remote worker here, 9th year.

I _love_ working from home. Saves time, gas, wear on the car, lets me focus without appearing rude to anyone, etc. The benefits are endless.

I consider it a near must-have.</comment>


Show HN: Kyoko – Manage anxiety with a simple tool - <AUTHOR> https://kyokohealth.xyz/ <comment><USER2> > Your message was shared privately with Kyoko.

> Kyoko is private and secure, so no human ever sees what you write.

> Kyoko is here to listen.

Who will read it, why would I use this service?

</comment><comment><USER3> The landing page really needs some indication of what this is and how it works. The about link does not provide much context at all...

<comment><AUTHOR> Thanks - that's good to know. I'll add some more information tonight.

For reference Kyoko is designed to help people understand their own anxiety by simply being open and honest about it. It can be used anonymously (so the thoughts you write disappear immediately) or you can sign in and your thoughts are saved. I plan on adding a link to see what you've written in the past.</comment></comment>


GitHub Enterprise 2.6 Is Now Available - <AUTHOR> https://github.com/blog/2157-github-enterprise-2-6-is-here-with-faster-more-approachable-workflows <comment><USER2> Does anyone know how to find out which public-instance-Github features are supported on GHE? My company's enterprise instance doesn't seem to have ipython-notebook-rendering support. Is it just a matter of being enabled/configured? Or is it not even present in GHE?

<comment><USER3> > Or is it not even present in GHE?

This feature is not present in GitHub Enterprise.

> Does anyone know how to find out which public-instance-Github features are > supported on GHE?

GitHub provides a pdf comparing both products: [https://enterprise.github.com/downloads/en/comvsenterprise-0...](https://enterprise.github.com/downloads/en/comvsenterprise-082415.pdf)

<comment><USER4> Unfortunately that PDF doesn't mention little features like the notebook rendering it seems.</comment></comment></comment>


How I Built Mixtape.me from Scratch with No Experience  - <AUTHOR> http://lifehacker.com/5336113/how-to-build-a-web-site-from-scratch-with-no-experience

<comment><USER2> _Don't waste too much time poring over every detail of these books, though. You'll never learn it all just by reading. Get the basic ideas and then start applying them as soon as you can._

</comment><comment><USER3> I'm waiting for the post: "How I got sued by the RIAA from scratch because I had no experience" . Let's do something that helps artists move away from the RIAA's clutches, and not add more fuel to the fire with things that will just get shut down. TheSixtyOne is a perfect example of how to do it RIGHT when it comes to consumer facing site. (work WITH artists, offer monetization, easy to use,etc.)

</comment><comment><USER4> So, he tells us he's not a web developer (he is now!). But what is his background - is he a gutter at the chicken factory or is he a very young professor of theoretical physics.

The implication is, though he specifically states it's not, that you can follow his model and do the same thing. Knowing what level of intelligence/intellect he has helps to determine if that is at all possible.

Interesting story though.

I only skimmed over the text but missed whether he did all the design himself, it looks quite slick, especially compared to his hand-drawn wireframes.

<comment><USER5> He is the editor of Lifehacker and has written a few application before:

<http://adampash.com/projects/>

So he is not a newbie who had to learn how to program.

<comment><USER4> So what we actually get, with the sibling post to yours, is that a programmer can make a web app with the help of a web design firm ... who would have thought it possible.

Nice story, great looking site, but not quite the in-at-the-deep-end story it appears.</comment></comment></comment>


Testing Distributed Systems with Deterministic Simulation (2014) [video] - <AUTHOR> https://www.youtube.com/watch?v=4fFDFbi3toc <comment><USER2> My experience is that this is difficult without the system under test being designed to operate deterministically.

So for example: the system clock needs to be replaceable with a fake, or the current time needs to be injected, or perhaps both.

Another example: Go channels. These are a real PITA to surface in a way that allows a test harness to drive them deterministically.

A while ago I built a simulator testing harness for an early version of the Knative autoscaler[0]. I eventually ran aground on the difficulty of keeping up with changes, but it may be rearchitected and repurposed to assist Kubernetes HPA development instead.

FoundationDB's approach is to pretty much bake optional determinism into the language with some macro magic. It makes me wish that were easier to do in other languages.

[0] [https://github.com/pivotal/skenario](https://github.com/pivotal/skenario)

<comment><USER3> In the FDB simulator case, every event has a future time at which it will fire, and the clock advances to that time when the event is dequeued.

This also has the side benefit of artificially "speeding up time", which is useful when many actions happen based on long timeouts.

<comment><USER2> I used the same approach, which I learned from DES textbooks. I wrote up the design here: [https://github.com/pivotal/skenario/blob/master/docs/concept...](https://github.com/pivotal/skenario/blob/master/docs/concepts.md)

</comment></comment></comment><comment><USER4> after the jepsen/mongodb post that hit front page nearly at the same time, it seems like the foundationdb team has the exact opposite values regarding resilience and data safety guarantees. I cant wait for the first results of the couchDb rewrite on foundationDb

</comment><comment><USER5> Discussed a bit at the time: [https://news.ycombinator.com/item?id=8345030](https://news.ycombinator.com/item?id=8345030)

</comment><comment><USER6> This is similar to [https://github.com/microsoft/coyote/](https://github.com/microsoft/coyote/)</comment>


Analyzing My Google Location History - <AUTHOR> https://towardsdatascience.com/analyzing-my-google-location-history-d3a5c56c7b70?source <comment><USER2> > I assumed confidence to be the probability of each task. However, often they > do not add up to 100. If they do not represent probabilities what do they > represent?

The probability of each being true independently?

> How can Google possibly predict activity type between IN_TWO_WHEELER_VEHICLE > vs IN_FOUR_WHEELER_VEHICLE ?!

Two wheel vehicles can often make it through traffic, in between cars.

<comment><USER3> > How can Google possibly predict activity type between IN_TWO_WHEELER_VEHICLE > vs IN_FOUR_WHEELER_VEHICLE ?!

Could they be using this from accelerometer data instead of GPS? [https://github.com/guillaume-chevalier/LSTM-Human- Activity-R...](https://github.com/guillaume-chevalier/LSTM-Human-Activity- Recognition)

<comment><USER3> [https://news.ycombinator.com/item?id=13049143](https://news.ycombinator.com/item?id=13049143)

</comment></comment></comment><comment><USER4> I wrote a little script a few years ago to make a nice map out of my location history:

[https://dirkjan.ochtman.nl/writing/2012/11/28/tracing-a- path...](https://dirkjan.ochtman.nl/writing/2012/11/28/tracing-a-path.html)

</comment><comment><USER5> _> What does the activity type "tilting" mean?_

"The device angle relative to gravity changed significantly."

\-- [https://developers.google.com/android/reference/com/google/a...](https://developers.google.com/android/reference/com/google/android/gms/location/DetectedActivity)

</comment><comment><USER6> I did something like this in a quantified self phase, it's fun to see the location patterns. I was gridding locations into buckets and scoring the entropy over time, to see how diverse the set of locations I was going to was. Long story short, not that diverse. Just over 1 bit was enough! (think: home or work)

</comment><comment><USER7> We actually did that several years ago in our data viz lab. All of the (willing) lab members tracked their location data and one student developed a way to track and visualize co-occurrences of people over time [1].

Another ways to visualize this kind of information is to use space time cube maps, which turn the time axis into the z-axis for trajectory visualization; GeoTime[2] is the most well known implementation of it AFAIK.

[1] [http://profs.etsmtl.ca/mmcguffin/research/2016-gupta- Movemen...](http://profs.etsmtl.ca/mmcguffin/research/2016-gupta- MovementSlicer/gupta-PacificVis2016-MovementSlicer.pdf) [2] [https://geotime.com/products/geotime/](https://geotime.com/products/geotime/)

</comment><comment><USER8> it's disappointing that apparently if there is no connection it just throws the data away. I'd prefer if it saved it locally and uploaded when it can

<comment><USER9> I'd prefer it to be saved locally or sent to a server of mine with some standard protocol (maybe NMEA 0183 over HTTP POSTs) and never to Google. Of course I could write an app for that (and I did some 8 years ago) but it would be much easier if the OS would cooperate.

By the way, I disabled location services on my devices to prevent at least this form of spying on me.

<comment><USER10> OwnTracks is an app that does that, [https://owntracks.org/](https://owntracks.org/) , but I still haven't set up my server to receive the data.

It uses MQTT, which is probably fault tolerant/store data locally if it can't connect to the server right now.

</comment></comment></comment><comment><USER11> Funny how Google also consider those places where I have stopped just for a minute.

</comment><comment><USER12> > "My previous phone had some GPS issues, which was leading to my location > being shown in Arizona, USA"

Sounds more like your gmail account was compromised

<comment><USER13> Or you're getting an IP from somewhere associated with a different region. This happens all the time with my cell connection - it seems the company uses spare Verizon capacity, and when I (or someone else) looks up my 4G is, it's all over the US with no connection to my actual location.

<comment><USER14> Or was it that trip to Vegas?

<comment><USER15> I wish \- Article Author</comment></comment></comment></comment>


A GPT-2 model that generates Matt Levine columns - <AUTHOR> https://www.philma.me/projects/everything-is-securities-fraud <comment><AUTHOR> Matt cited this paragraph as one he particularly liked:

> If you are a sophisticated financial adviser with some work to do, you want > to get paid a lot of money to do a lot of work. If you are a novice adviser, > you want to get paid a little money not to do much work. The thing is, the > work is boring and repetitive and boring. It is not what you would call fun, > or fun-y if you were objectively beautiful. And the pay is not that great. > So you might just decide to automate it.</comment>


No more new Microcorruption users? - <AUTHOR> https://matasano.wufoo.com/forms/embedded-systems-memory-corruption-ctf/

<comment><AUTHOR> I'm pretty hooked on Matasano's crypto challenges and was wondering if uctf will re-open registration. When I go to the link, I get a "no new registration" banner.</comment>


Gender in "What People Do All Day" - <AUTHOR> https://www.jefftk.com/p/gender-in-what-do-people-do-all-day <comment><USER2> Is this one of those cases where you probably should have checked if you should instead of if you could.

There are plenty of books out there that do fit into your narrative. Why can't you leave an book of the past in it's time framing? Heck, I might even call this deceptive if you teach children stuff like this as they will not know the road of general acceptance of women in jobs.</comment>


Internet Freedoms in Palestine: Mapping of Digital Rights Violations and Threats [pdf] - <AUTHOR> http://7amleh.org/wp-content/uploads/2018/01/7amleh_Internet_Freedoms_in_Palestine.pdf <comment><USER2> Free Palestine</comment>


Show HN: Google's autocomplete visualized like a graph - <AUTHOR> https://anvaka.github.io/vs/ <comment><USER2> This is really cool! It took me a minute to understand that "vs" was the linking word. "Batman", "usa", and "the beatles" were fun. "Tabs" was a bit enlightening.

</comment><comment><USER3> Awesome! Your demo is pretty neat!

</comment><comment><USER4> cooool!</comment>


Show HN: When was your last Internet vacation? (Built today on the Singly API) - <AUTHOR> http://vacat.io/

<comment><USER2> FYI, it threw an initial error after authenticating with FB, but then loaded upon reload. What's it based on? All public posts, comments, and likes, but not private messages?

By the way, I think I met you at GET; it was nice talking to you. Was that Zeo charting website you showed me public or some private thing you had built? Would be interested in playing around with it!

It would be cool to see this site's output as some kind of chart too.

<comment><AUTHOR> There was a small blip on the backend, that might have been the FB issue.

We did meet at GET if you know about the Zeo charting stuff, that's here:

<http://beaugunderson.com/zeo-crossfilter/> <https://github.com/beaugunderson/zeo-crossfilter>

I hope to add charts to vacat.io too, any idea what you'd want to see graphed?

<comment><USER2> Thanks! I just think the long list of dates and vacation times that are outputted could be grokked much easier in a single bar chart of some sort, with time on the X, and some kind of filled in green for when active. I'm just curious when and how fast my FB usage accelerated.

Thanks again for the link; crossfilter is really cool.

<comment><AUTHOR> That's exactly what I had in mind! Hoping to add that tomorrow. :)

</comment></comment></comment></comment><comment><AUTHOR> Written in ~6 hours today for our internal company hack day.

Curious if people find it useful (or what might improve its utility).

I plan on letting people share their activity counts anonymously to build a scrolling graph of Internet activity--my main goals were to see when I'd last taken an Internet vacation and to compare my Internet habits to those of others.

</comment><comment><USER3> Didn't register because I know what the answer will be. 6 days before I joined each of the services :)

Now a good feature would be to lock us out of our account for that many days :)

Need a vacation...

<comment><USER4> I need a vacat.io.n

</comment></comment><comment><USER5> Won't work for us that share stuff via Buffer, Hootsuite, etc.

Great idea though!

<comment><AUTHOR> Ah, because it spreads them out for you over time... Hadn't thought of that. The Twitter API does return which app a tweet was posted from, so it would be very simple to rig up a checkbox to filter out tweets from Buffer or Hootsuite if a user wants to. :)

</comment></comment><comment><USER6> twitter login doesn't seem to work, it keep redirecting me to the twitter auth page

</comment><comment><USER7> this is pretty cool! what other usecase can you make?</comment>


Bug tracking and eventually public code releases of Hacker News - <AUTHOR> https://github.com/HackerNews/HN

<comment><USER2> Is there an ETA on the source code release?</comment>


Ask HN: what would you like to see occur in the next 18 months? - <AUTHOR>

This question is about where you'd like to see changes occur in the next 18 months as relating to any aspect of the economy or society including in tech and finance, local or global.
A guy like Bob: http://www.youtube.com/user/drinkingwithbob has his own ideas of what he thinks should happen based on problems he identifies.
So what's bothering you? Where, what and how should and could things improve? There are some things that would be almost impossible, and they're best left out. <comment><USER2> The end of software patents in the US.

<comment><USER3> I'm surprised this isn't being upvoted more, from a tech Entrepreneur perspective that is the biggest thing to help small businesses not get screwed.

Ungh I so hate the patent system.

</comment></comment><comment><USER4> I want to see Google get its act together and offer a unified open hardware and software alternative to both Apple and Facebook. On the hardware front I want a tablet device running Android that actually looks good and is a pleasure to use (and comes with a 3G connection). On the software end, I want to see them pull together Wave, Buzz and Gmail into an online communication tool that can let me easily pull together all my online correspondence (and keep it private).

<comment><USER5> so you'd rather have ALL your data AND hardware on Google's hands for the sake of 'openness' instead of having parts of it on other companies' hands (Facebook and Apple)?

</comment></comment><comment><USER6> 1\. Reduce the paragraphs of fine print. Poorly-edited text is a waste of time to read. It is deceptive: you either don't understand it, or don't remember everything; and when it's changed, you're never shown a nice "diff". If you need a lawyer to figure it out, you spend money. Many documents _can_ be written as a few bullets of basic English, so they should be.

2\. Allow actual threat levels to dictate the allocation of resources. A big one: _driving_. Statistically, car accidents hurt _many_ more people than the other things that make the news, and yet there's no uproar over clueless drivers and badly-designed intersections. A relatively small investment over 18 months could definitely improve this.

3\. Start reviewing the people put in prison for minor offenses, and review the "sex offender" registries. Why are people in jail for _years_ on charges like drug possession, people who didn't hurt anyone but themselves? Why are 17-year-olds who slept with their girlfriends on the same list as offenders who are actually dangerous? In 18 months, a whole lot of people could have their humanity returned to them.

</comment><comment><USER7> I would like to see Pirate Parties win elections and form governments everywhere in the developed world that holds elections in the next 18 months. They will then proceed to scrap bad laws as software patents, restrictions on circumventing DRM, etc.

</comment><comment><USER8> Just some personal dreams for the tech world: Apple buys Adobe, Yahoo! buys Twitter, the "next" Facebook launches and grows quickly, Facebook suffers some sort of severe problem/user flight, Google stops messing around with tacking extra contextual trash on to its search results and actually finds a way to get rid of most of the crap riddling their index, the Founders Visa is radically improved upon and passed, Reddit becomes significantly more popular, memristor technologies proven on realistic scales, I reach 10000 karma on HN, err... :-)

</comment><comment><USER9> I'd like to see +$10,000/mo net without having to take a real job again

<comment><USER10> In 18 months? Tough but doable, if you are willing to set aside everything else, including a relationship if you have one.

It's all about choices with stuff like that. Personally I would not make that choice.

<comment><USER9> Pretty much everything else has been put aside for about 6 months now, unfortunately. If I had a consistent net of like 2K from just my software I'd be pretty excited, actually. I pretty well expect there will be another contract before that happens, though.

</comment></comment></comment><comment><USER11> Political reform in the UK.

More scientists and engineers choosing to work in science and engineering instead of finance and consultancy.

</comment><comment><USER12> I've got a lot of problems with news (world news, sci/tech, political, etc) and how I get to it. It's hard to stay current with news. Articles are full of fluff, information is spread across many different sources, and getting updates on stories is tough.

The other thing on my mind lately is another content related problem. I feel like more of my web searches are leading towards MFA sites with sub-par content and irrelevant ads plastered everywhere.

</comment><comment><AUTHOR> What I'd like to see happen is a relaxation in the laws for private investing. I didn't know, but those with a net worth of $1-2.5 million had been burned in scams, so accredited investor status may or will be raised in terms of net worth. I think the law should be changed so that at least 1 investor has to be accredited at the new level, but the rest do not. Or, one's required worth is contingent on what one actually plans to invest.

</comment><comment><USER13> \- IE9 adopting HTML5, including Canvas

\- Chrome with NativeClient ready

\- NPAPI released so NativeClient can integrate with browsers

\- Serious consideration of NativeClient as a standard

\- Start replacement of plugins and browsers with NaCl modules of functionality

\---

\- A theory of more things in physics

\- LHC finding something

\- A theory of more things in brains, social systems

<comment><AUTHOR> Do many thinkers on the level of Albert Einstein, Bertrand Russell or Leonardo Davinci exist today, but are just not as widely celebrated? Is the advancement of scientific knowledge held back by a lack of such individuals, or do teams of researchers with technology make it less important?

<comment><USER13> It's probably the media that changed the way it covers things. Einstein became a celebrity because his theories challenged that of another famous name, Newton. Famous scientists almost didn't exist, so Einstein's celebrity was a noticeable exception.

Leonardo was not a big celebrity in his day, he was known in the art world, like the programmer who made Java is known in the CS world.

</comment></comment></comment><comment><USER14> Recognition of the potentially enormous value of anti-aging research.

</comment><comment><USER15> A better accelerator/incubator/social network for entrepreneurs.

Nothing against YC or PG, but both are focused on a particular niche of the market, and a particular strategy, and there's room for someone else in the game for sure.

e.g., something with a mentoring system; something with well-defined series of steps that can help introduce individuals with different kinds of businesses to people that might be interested in partnering or investing in them; something with occasional regional social gatherings; something that reliably connects freelancers to the businesspeople that need them; etc.

(There are many other things I'd like to see, some more than this, but this seems like the only thing that might have a chance of coming to fruition by mentioning it here.)

</comment><comment><USER16> A democratically elected government in Egypt and a clean departure of the Mubarak regime. I am not Egyptian, but the example of peaceful transfer of power, from dictator to the people will serve as an excellent role model for the region.

After that, maybe by 100 years, a one-nation state in the Holly Lands; where Palestinians are acknowledged as rightful natives of the land and taken into the fold of the Israeli state as equal partners.

<comment><USER10> I can see the first, but the second is not going to happen in a 1000 years, forget about 100.

It will take many generations before there is going to be some objectivity in that dispute.

The end of oil might achieve it, as would a collapse of the US.

</comment></comment><comment><USER17> \- More people reading books.

\- Less wishful thinking. Actually, no wishful thinking at all.

\- New flashmobs and fun projects.

\- Some consensus on the Linux community and actually fixing and improving things (sorry if someone is offended, but that's my point of view so far).

\- No more "this service is blocked in your country".

That's quite broad, but I think covers everything I could expect to see in such a time frame.

<comment><USER2> _Less wishful thinking. Actually, no wishful thinking at all._

Recursive irony?

<comment><USER17> Yep. I would say it was in purpose, but it would be wishful thinking again expecting people to believe.

</comment></comment></comment><comment><USER18> In America: regarding politics a focus on actual issues and problems rather than sensationalism especially in news outlets such as things like the new "tea party" and socialism... but that isn't going to happen in the next 18 months sadly.

Tech: widespread broadband to more rural areas for reasonable costs

Economy: steady improvement, continuing incentives for housing are always nice.

</comment><comment><USER19> Most of the things I really want to see happen in the next 18 months are things I'm already working toward, and either involve my personal life, or, are startup ideas that I don't feel like sharing in a public venue quite yet.

What I'd like to see happen in the next 3-5 years or so:

* switch to a more merit-weighted voting system in the US. (Examples: Dr. Smith's vote in a Presidential election should weigh more than Billy Bob. An astronaut more than an ex-con. Higher tested IQ's more than those with lower.)

* switch to a single-payer health system in the US

* complete withdrawal of US military forces from Iraq and Afghanistan; then massively reduce overseas deployment and positioning of US forces, then cut US military budget in 1/2 (to start)

* some _serious_ steps taken by the US government to truly start reducing the deficit and pay off the debt (with _serious_ consequences to those in power if they do not stick with it, such as leaders/politicians going to jail if they do not)

<comment><USER20> Yikes. I think introducing 'merit' based voting is a terrifying idea. People with high IQs still can make stupid votes. How about trying to educate people on what the issues are, and how their votes would change those issues.

</comment></comment><comment><AUTHOR> I read this today: "Peace between Israel and the Palestinians is not possible because Islam won't permit it and militates against it."

[http://www.americanthinker.com/blog/2010/05/the_crux_of_isla...](http://www.americanthinker.com/blog/2010/05/the_crux_of_islams_hatred_agai.html)

People everywhere just can't and won't swallow it.

<comment><USER21> To be fair, there are also a lot of fanatics who believe that Israel was given to them by God, My wish for the next 18 months is a movement for removing religion from politics.

<comment><AUTHOR> Jewish fanatics, if that's what you want to call them, have nothing to do with ultimate Muslim hostility toward Jews, no matter whether they be of the fanatic (your term) or secular variety, especially in Israel or elsewhere. Why is this so hard to grasp?

</comment></comment></comment><comment><USER22> Some actual results from stem cell research.

</comment><comment><USER23> I'd like to see Google offer a VoIP solution based on the Gizmo5 acquisition, integrated with Google Voice (on Android at least). I'm pretty sure it's coming within 6 months though.

</comment><comment><USER24> Wall Street to stop being a bunch of jerks.

</comment><comment><USER25> With Extrapolation my monthly net income from the Internet will go past the yearly income of my father.

</comment><comment><USER26> My stocks going up.

</comment><comment><USER27> The use of technology to take people with radically different opinions and worldviews and create and mold a conversation where both parties feel emotionally rewarded for participating and that it was time well-spent. This could be for any topic -- the business model works best for things like corporate policy-making, but it would kick ass in things like local politics and getting consensus in charity organizations too.

<comment><AUTHOR> I think you could mean Chatroulette, but without the roulette part, coupled with a voting or survey system.

Also, it would be interesting to have sequenced conversations - where AI could be used to string a sequence of conversations together to yield more informed or more challenged viewpoints, based on the results of surveys performed during the conversation flow. Users can see in advance the viewpoints they are about to confront. Some conversations will be locked to say 2 minutes, others the time is optional.

</comment></comment><comment><USER28> Some sane form of electronic medical records. The foolishness I've witnessed this last year has been enough to warrant a mandated return to paper charts and clipboards. Until a reliable electronic format can be transferred within and between institutions anyone admitted is at risk.

<comment><USER29> HL7 3.0 is a step in the right direction, and hopefully we'll see more modular EMR systems with the new mandates for 'meaningful use.'

My cofounder and I are currently working on a start-up in this area, so I'm curious to what 'foolishness' you've seen.

<comment><USER30> Did they pull back some of the needless complexity later? I only remember shuddering in 2003 or so when I first saw the drafts, and this was _after_ working on v2!

</comment></comment></comment><comment><USER31> Some improvement in the education system (at least in my university :) )

Things That can happen:

1)New course based on (and with help with) industrial requirements.

2)Implementation of a more research based curriculum.

3)Option to submit a undergraduate dissertation to obtain a B.Tech (Hons.)

Things that should happen:

1)Implementation of choice based credit system.

2)More option of research on campus.

3)Establishment of a HackerSpace.</comment>


Mexican teacher barred from traveling to US to collect Internet Society award - <AUTHOR> https://www.theguardian.com/world/2017/sep/16/mexican-teacher-barred-from-traveling-to-us-to-collect-internet-society-award <comment><USER2> Simply don't hold conferences in the United States anymore.

And it is already happening, though only sporadically.

</comment><comment><USER3> Sadly there are going to be false positives in any process. Doesn't mean we should abandon the process, though.</comment>