Technical Documentation Should Be a Graph - <AUTHOR> http://neo4j.com/blog/technical-documentation-graph/ <comment><USER2> >Solution: Use a Graph

Is this the new "Solution: Use Regular Expressions"?

There is a good reason tutorial style documentation is linear. Humans can keep track of what page of a book they are on, not which nodes of a graph they have visited.

Otherwise this doesn't add any new insight that wasn't there when the web was created. It's basically talking about hyperlinked documents. Identifying it as a graph doesn't help understand it any more than identifying the rotational groups of NaCl molecules lets me understand why they taste salty. It's useless structure/abstraction hunting.

<comment><USER3> I spent some time researching hypertext pre-web, and an old idea (Vannevar Bush old) is having "trails" through your document store, each basically giving a narrative one could follow. Sun used that terminology for their Java tutorials, though it seems the nodes along the trails are unique to a particular tutorial.

I could see something like this being useful for understanding a complex and complicated document like a programming language specification. The trails would show which sections and subsections work together to produce a particular behavior users should understand.

I've also seen dependency graphs given in the preface to certain math textbooks, which is nice when you know what it is you want to know (and I wish more textbooks would be available in hypertext form).

<comment><USER4> The idea of looking up particular sequences of documents to demonstrate actual behaviors is very compelling. Too often, documentation follows a precise but necessarily boring and unintuitive format. Having traces through documentation for common tasks would be very useful.

</comment></comment></comment><comment><USER5> Isn't this just promoting the concept of a well written wiki? Linking documents together IS a graph, whether you store it in a graph db or not. Graph DBs shine when it comes to graph queries, storing documents that are well linked can be handled with any old relational DB

<comment><USER6> One advantage of a graph database implementation over a traditional wiki implementation is in regard to querying along edges as opposed to following links. Which is to say that the edges of a graph database will tend to have richer semantics than a wiki's generic hyperlinks [but it is not to say that a graph database is necessarily better].

To put it another way, at best a link from a wiki page gets implied importance based on it's position within a document. A graph database edge can have many properties including "weight" or "relevance". Of course these could be added to wiki markup as properties, but there is a point at which the right tool is better than layered make-do's.

<comment><USER7> I don't see it is that different. A wiki page typically assigns human-readable properties through its text. You don't write

      Read more
      Read more

but:

      Example code
      Grammar

If desired, one can even make this easier to parse programmatically:

      Hello world example
      Grammar

That allows for styling different types of links differently. Also, a wiki's backend software could extract separate indexes for sample code, grammar fragments, links to compiler source, etc. you could also easily include an attribute for, e.g. Click-through rate, and, if desired, style links accordingly.

In fact, the difference between a classical wiki and a graph database is, IMO, an implementation choice. If you want to process complex queries rapidly or a lot of your attributes aren't textual or aren't intended primarily for visual display, a graph database is more appropriate. If you want to serve standard web pages rapidly, storing the content as HTML may be more appropriate, even if that means that processing queries such as "give me all links to source code examples" run way more slowly.

</comment></comment></comment><comment><USER8> Personally, I prefer the style which the GNU Coding Standards describe:

\----

Programmers tend to carry over the structure of the program as the structure for its documentation. But this structure is not necessarily good for explaining how to use the program; it may be irrelevant and confusing for a user.

Instead, the right way to structure documentation is according to the concepts and questions that a user will have in mind when reading it. This principle applies at every level, from the lowest (ordering sentences in a paragraph) to the highest (ordering of chapter topics within the manual). Sometimes this structure of ideas matches the structure of the implementation of the software being documented--but often they are different. An important part of learning to write good documentation is to learn to notice when you have unthinkingly structured the documentation like the implementation, stop yourself, and look for better alternatives.

[…]

In general, a GNU manual should serve both as tutorial and reference. It should be set up for convenient access to each topic through Info, and for reading straight through (appendixes aside). A GNU manual should give a good introduction to a beginner reading through from the start, and should also provide all the details that hackers want. […]

That is not as hard as it first sounds. Arrange each chapter as a logical breakdown of its topic, but order the sections, and write their text, so that reading the chapter straight through makes sense. Do likewise when structuring the book into chapters, and when structuring a section into paragraphs. The watchword is, _at each point, address the most fundamental and important issue raised by the preceding text._

[https://www.gnu.org/prep/standards/standards.html#GNU- Manual...](https://www.gnu.org/prep/standards/standards.html#GNU-Manuals)

<comment> awinter-py gnu is in many ways wonderful but documentation is not one of the ways. gnu's two docs challenges are (1) document the command-line flags for users and (2) document the code for contributing devs. I've never faced case 2 but wading through man pages for case 1 is less than awesome.

I agree that docs _should_ answer the user's typical questions but gnu docs seldom do. Can you imagine trying to figure out gnu tar from the man page? You never would.

Doesn't help that search engines starting with G view queries like 'tail -f' as stopwords.

<comment><USER9> I dunno, I find them much better than most of the documentation I've worked with. I agree with you for beginners, since when I first started reading man pages and such, I wanted to rip my eyes out. But after a while, once I learned why the documentation was written the way it was, the flow of it started to make more and more sense. Though, in a lot of ways this comes from personal opinions that gnu tools and by extension, gnu/linux, _should_ be difficult in the worse-is-better sense.

These days, when looking at documentation, my go-to example for awful documentation is salt. Because, well, this is utter bullshit:

$ man salt 2>/dev/null | wc -l

133324

<comment><USER10> I find GNU info more useful than man pages as documentation for those who are learning how to use a program. The documentation is structured and hyperlinked in a very convenient way. On the other hand, the terseness of man pages is more convenient for those who already mostly know the program, but need a reminder of minor details like the exact command line flag to enable a specific program option.

<comment><USER11> 95% of the time when I'm opening a manpage I am looking for a particular command line option or syntax. With man pages I just hit / and then a relevant keyword and it jumps to the right section. With info pages I have to grok which section it might be in, then remember what arcane ctrl sequence follows links and then what sequence searches in the document then which sequence goes back because I guessed wrong.

I find manpages to be much more convienent, even though they are less structured.

</comment></comment></comment></comment></comment><comment><USER12> First of all, this article is an example of one whose first 80% could be cut. So many writers on the Web take so long to get to the point. I wish that they had learned the Inverted Pyramid style, which has been a tradition of newspapers.

Second, is what the writer describing something that would be met with a hyperlinked table of contents, like [http://www.postgresql.org/docs/9.5/interactive/index.html](http://www.postgresql.org/docs/9.5/interactive/index.html), along with maybe each page hyperlinking to other pages where fit?

<comment><USER13> I would be willing to spend up to USD 50, for a chrome plugin (with an optional extra solution that worked on mobile) that automatically summarized articles into Inverted Pyramids. Of course, if you actually had this technology, my money wouldn't be essentially worthless given the much bigger and more lucrative markets you'd have available.

<comment><USER14> As an aside, I have thought this same thing. The non-inverted pyramid style is horrible and pervasive. I would pay $$/month to have technology or people summarize these things for me.

</comment></comment></comment><comment><USER15> From Neo4J. When all you have is a hammer..... (second time I have posted that today)

<comment><USER16> When you're _selling_ hammers ...

</comment></comment><comment><USER17> "Topic-centric" is already a thing in technical writing. It produces those mystery-meat help systems you find in larger applications where you can find information about a specific piece of functionality piecemeal, and if you're lucky also a tutorial that tells you how to put it together into a larger workflow. If you're unlucky, it manages to summarize the parts you already knew without telling you about any details or pitfalls.

The graph is useful for note-taking and exploration, certainly, but it produces a design constraint that isn't always situationally appropriate. Binding things into a narrative can add a lot of value.

<comment><USER18> Technical writing traditions are mostly evidence-free bullshit that focusses on appearances at the expense of usefulness.

I usually find "official" technical docs very hard to read - much harder to follow and less useful than a typical how-to book.

Writing is not code. Human elements like humour and story-telling make technical content much easier to understand and learn.

And "topic centric" should be something that comes out of testing. User testing should note the most common user taskflows empirically, and write those up in the docs.

</comment></comment><comment><USER19> So...use hyperlinks, basically? The web already works great as a graph structure for technical documentation. That's what it was made for, after all. :-)

</comment><comment><USER20> I propose we call these graphs "Hypertext". We could even create a markup language to write it. And a transfer protocol for resolving these hyperlinks by URLs.

</comment><comment><USER21> > Instead of forcing readers to follow a single, linear, flat sequence of > sections, _just_ offer different routes between articles or items.

This is kind of nit-picky, but I get bothered when someone uses the word "just" right before suggesting something that's really difficult to do.

<comment><USER22> Well... Table of contents and index are "different routes". Hyperlinks to sections that give more detail on a topic that is mentioned is a "different route". If you limit yourself to those, "just" is a reasonable word - but then the concept is pretty uninteresting, because people have been doing it for ages.

</comment></comment><comment> awinter-py I've seen surprising pushback from non-technical managers over tree-structured information -- we're talking something as simple as a three-level nested markdown document. They'll say things like 'I can half understand it but _my_ boss won't make the effort'.

If you think about how much energy your brain takes to unpack paragraph text into information, tree-structure should be clearer because visual boundaries correspond to topic / semantic boundaries, i.e. the brain can offload some parsing to the highly-evolved retina.

I don't have a good explanation for the preference for paragraph format in docs.

</comment><comment><USER23> "We need engineers to not only feel that writing docs is their responsibility, but also to feel motivated to keep the quality of their docs high, and regularly maintain them." \--- Can you share any specifics here? We're opening up tools, pulling notes from Jira, but the developer's docs still suck. There is rarely any meat to it, forcing us to become investigative journalists rather than tech editors.

<comment><USER24> Write the documentation alongside the code it documents?

<comment><USER23> That's happening already. To be more specific, any ideas on getting developers engaged in creating "quality" docs? They don't really care about them right now, its just a necessary administrative step on the path to commit.

<comment><USER25> Start enforcing. Make PR's required for all new code, and reject PR's which aren't well-documented. Most developers _can_ write good docs, they (we) just tend _not_ to, until docs are treated as a primary priority by the rest of the team.

<comment><USER18> There will be mutinous grumbling. But yes - this.

Good docs are in everyone's interest. It's hard enough for insiders to maintain code that isn't documented properly. Worse, it's nearly impossible for outsiders to come in and make changes later - at least not without a lot of wasted time.

</comment></comment></comment></comment></comment><comment><USER26> Most documents are already graphs of sorts. The fact that they are written down as they are is an implementation detail dictated by traditional physical constraints. I would image all authors have a "graph" in their heads before writing down the text. I'm pretty sure information are lost when this happens. I guess this is what the article tries to address.

</comment><comment><USER27> Isn't this already how much documentation is structured implicitly?

For example if you have a technical article which references some concept there will likely be a link to another article which explains that concept.

Thus each page already acts as a node connected to other nodes by the links within it. No need for a more formalized graph.

</comment><comment><USER28> I was really looking forward to checkout out the knowledge graph but zooming works horrible on using the touchpad. Did anybody else have that issue? It either zooms too much or way too little.

</comment><comment><USER29> Instead my brain was totally distracted by those colorful nodes in the graph, it looks fancy but I remembered little afterwards. Maybe this is more helpful for those visual learners.

</comment><comment><USER30> Simply use columns like MacOS's column view. And mark the items already visited.

</comment><comment><USER31> Hey, main point of article is "use mindmap". It's a graph too

</comment><comment><USER32> graph sounds complicated. what about a web?</comment>


A Hacker's Journey To Find A Co-Founder - <AUTHOR> http://ongig.com/blog/entrepreneurship/a-hackers-journey-to-find-a-co-founder

<comment><USER2> Great post, and I definitely empathize with your struggle. Finding a good co- founder is damn hard, whether he's technical or business. As someone who has been in those shoes before (but wearing the business hat looking for a technical co-founder), I have found it at least as hard, if not harder, to find good technical co-founders.

I think a business person who is unwilling to learn any amount of coding, especially on the front-end, or who is uninterested in product development like UX, customer development, etc, has no business doing a startup -- and you shouldn't waste your time on them either.

From the business founder's perspective, I have always found a couple posts I've read from other business founders pretty inspiring, and I think they ring true for what any good business co-founder should bring to the table. The next time a business founder reaches out to you looking for a technical co-founder, maybe you can point him to these articles and say, "do this first" and then we'll talk.

Best of luck to you, and keep pushing at it!

[http://www.humbledmba.com/please-please-please-stop- asking-h...](http://www.humbledmba.com/please-please-please-stop-asking-how- to-find)

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

</comment><comment><USER3> This article nicely summarizes the pains of finding a co-founder. I will definitely share this with others in the same boat. I believe the saying goes, "you will find someone when you stop looking".

I have just started looking for a co-founder and I think the hard part is finding someone that has the same level of passion and enthusiasm to solve the problem I am trying (in educational space). I strongly believe that only someone with that strong passion could possibly endure all the effort required to get a startup going somewhere.

BTW, what is your startup about?

<comment><USER4> My startup is in the home care space.

You're right - it is indeed very difficult to find someone that is equally excited about the space you're working on. That's why it's better to focus on building the team and even consider working on something else that you both are excited about. The initial idea is often times quite useless anyway, unless you've gotten quite far in validating it and gaining traction, etc.

</comment></comment><comment><USER5> Yes, it's sad that the rare people we know that we actually WANT to work with, usually won't do it due to the risks involved.</comment>


Why I haven't jumped ship from Common Lisp to Racket just yet - <AUTHOR> http://fare.livejournal.com/188429.html <comment><USER2> The author, a famous and well-liked lisper, is not consider ing portability features. CL is an ANSI standard and code often runs with no changes in many distinct CL implementations/compilers/interpreters.

Also, related to that point: There are many different CL implementations out there that satisfy different use cases, like for example JVM deployment (ABCL), embedded systems (ECL), speed(SBCL), fast compile times (Clozure), pro-level support (LispWorks, ACL), etc. So the same code has _a huge_ amount of options for deployment. It really makes Common Lisp be "write once, run anywhere".

Then speed is also never mentioned. Lisp can be seriously fast; under SBCL it is generally 0.3x to 1x C speed; LispWorks might be faster, and there's a PDF out there called "How to make Lisp go faster than C", so that should give an idea of Lisp speed potential.

CL wasn't created by philosophing about what a programming language should be for many years; CL was basically created by merging Lisps that were already proven in the industry (Maclisp, Zetalisp, etc), already proven to be good for AI, heavy computation, symbolic computation, launching rockets, writing full operating systems, etc.

CL is a "you want it, you got it" programming language. You want to circumvent the garbage collector? need to use GOTOs for a particular function? want to produce better assembly out? need side effects? Multiple inheritance? Want to write an OS? CL will deliver the goods.

In short, i would guess that from a computer scientist or reseacher point of view, Racket is certainly more atttactive, but for the engineer or start-up owner that wants to have killer production systems done in short time, or to create really complex, innovative systems that can be deployed to the real world, Common Lisp ought to be the weapon of choice!

<comment><USER3> The biggest issue I see with Common Lisp is that the standard is stuck in time, lacking stuff like database providers, a common FFI or threading.

It needs a review of the CL environments that survived to modern days and adopt the common extensions.

<comment><USER4> I think it is a pretty shallow view at standard. CL implementations grow and have agreed interfaces (or portability layers). A few examples:

\- sockets via usocket

\- threading via bordeaux-threads

\- metaobject protocol via closer-mop

\- foreign function interface via cffi

all these are not mentioned in the standard at all, but are implemented and used in production environment.

Having base standard and extensions which may be used portably (via portability layers) is better situation than having no standard (for instance python or ruby) and a reference implementation.

<comment><USER3> Which usually is what leads to _feature expressions_ spaghetti.

Also, it means that a Lisp newbie won't be aware of what are the best libraries that are portable across Lisps for such features.

EDIT: typo correction (missing are)

<comment><USER4> Feature expressions shouldn't be used in normal applications, only in portability libraries. To use threads on any implementation which supports them (given it's supported by the recommended portability layer):

> (ql:quickload 'bordeaux-threads)

> (bt:make-thread (lambda () (sleep 1) (print "hijack")))

that's all, no feature expressions whatsoever. Quicklisp is a system manager (something similar to npm in sense that it helps you to download dependencies).

Regarding best libraries: isn't that true for any language? Newbie doesn't know good libraries, because he is a newbie. He has to learn which libraries are good and which are bad.

edit: and by each supported implementation I mean in fact all active complete Common Lisp implementations: ArmedBear, Allegro, clisp, Clozure, Corman, Embeddable, Man-Kai, LispWorks, Steel-Bank and Scieener.

<comment><USER5> I think the point is you can't really have it both ways. CL prides itself on its extensive and portable standard library, but has huge gaps by the standards of modern languages.

<comment><USER2> > but has huge gaps by the standards of modern language

Please detail, because i'm sure that the Lisp community would love to fill those gaps. After all, Lisp is addictive to the point of resembling a hard drug.

<comment><USER5> Well, start with the stuff that OP's just been arguing doesn't need a standard implementation. :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Racket is a really exciting language, especially with its focus on building small languages to solve problems.

However, where it fails for me is in its lack of interactive development. When I investigated it, there seemed to be no way to actually connect a repl to a running program.

Unlike with common lisp or clojure, with racket if you make changes to your code you have to restart the REPL, which destroys your state.

This was a big disappointment to me, because even python with ipython and autoreload allows for more interactive development.

I suspect that this decision was made because of racket's start as a teaching language, because it is simpler, but way less powerful.

<comment><USER7> I believe this is a design decision, because relying on some enormous implicit repl state and updating the code in place is a good way to get yourself into states that are impossible to reach in an actual running program. Racket is a functional language and it is their belief that you should just make predictable ways to startup your interactive development than rely on the entire state of some repl image.

<comment><USER8> You're right; it's a conscious decision. I had a little discussion with Eli Barzilay and Matthew Flatt about some related matters a little while back. It was a nice discussion, but image-based or live programming is just not something they found particularly compelling.

It pretty much keeps me from using Racket, and a bunch of other things that are otherwise very nice. Given a choice, I will always choose the tools that support me in building things by modifying programs as they run. I'm just happier and more productive that way.

So one of my axes of optimization is selecting projects that enable me to work that way.

<comment><USER7> Ah yes, I remember seeing an interaction that was probably yours, tried to find it for my comment, but never did.

<comment><USER9> I don't know what this refers to, but it doesn't ring a bell. The most I might have said is that the community in general is not too interested; but personally, this kind of dynamic interaction is something that I very much appreciate. In fact, when I implemented xrepl (which is now the default when you start racket) being able to modify code inside modules was one of the main goals. The only reason I didn't do something like that for Emacs is that my own use of CL/Scheme variants in Emacs was always very simple, but I actively encouraged people to do something similar for Emacs -- and Geiser/Racket-mode are two serious Emacs packages that actually do that kind of interactive use.

<comment><USER8> I asked you guys about image-saving because I was considering using Racket to build a new version of bard, and I thought I might like to both use image- saving during development and piggyback on a Racket implementation of it for use in bard's runtime. As I recall, you guys wanted to know what I found compelling about image-saving, but you didn't find it as compelling as I did.

I still might build a bard on Racket, but if so, I'll most likely build my own VM and implement my own image-saving solution for it.

Assuming, of course, that there are enough hours in the day, and enough years in a life.

</comment></comment></comment></comment></comment></comment><comment><USER10> I use Common Lisp quite a bit, and I'm just not interested in switching to another Lisp. I've looked at most of them, and haven't seen anything compelling. CL still wins on everything that I care about (performance, portability, libraries, ease of use, books/documentation, etc.).

Even the article's list of areas where Racket is "vastly superior" is questionable, IME. Granted, the author wrote ASDF, so he has a very different perspective than I do on the module system, but in practice nothing on that list has been a problem for me, and a few of them I'd actually consider to be anti-features (like a built-in GUI library).

<comment><USER11> What domains are you using CL in? The last time I used a Lisp was inside AutoCAD and it was a lot of fun.

<comment><USER10> At work I mainly write C++, but I have a little library in CL that I've been working on for a while that can call our REST API, access and filter our log files, connect to our test infrastructure, and some other miscellaneous stuff. It started because I wanted to call our product's REST API from inside Emacs (in the Slime REPL) to make debugging and testing easier, but over time it's grown to about 1500 lines of CL to automate common tasks.

Outside of work it's my go-to language for learning new stuff. I use it for a bunch of little programming projects that I put on Github ([https://github.com/jl2?tab=repositories](https://github.com/jl2?tab=repositories)). They're mostly just playing around with whatever topic I'm interested in at a given time. Lots of animations and (simple) computer graphics, some simple games, one or two libraries for the Raspberry Pi, etc. Nothing too exciting.

I want to start contributing to some of the open source libraries and projects (like stumpwm and sbcl) that I use a lot, but so far the few commits I've made to other projects have been really small bug fixes or trivial documentation fixes.

<comment><USER12> Do you run items in CL that return to an emacs buffer? Like say, slime- eval/run? Or are these just run in the repl itself and displayed there? Been toying with making some async stuff run via swank/slime and then display in emacs in a custom mode and buffer.

</comment></comment></comment></comment><comment><USER13> I really like this article, because it manages to be a love letter to both Racket and Common Lisp.

</comment><comment><USER14> Interestingly, I just added a section on Gerbil, the Lisp dialect I have adopted instead of PLT, for many personal reasons.

<comment><USER15> What is your setup working with gerbil compared to emacs/slime?

<comment><USER14> My current setup does not compare favorably with Emacs/slime at this point. I use screen, I call a build script in one shell REPL, I use gerbil-mode in Emacs in the other, reload'ing things that I rebuild, or restarting the M-x run-scheme when too much has changed, copy-pasting from a gerbil-scratch.ss file, or repeatedly loading a .ss file with on-going tests. This is less than satisfactory. We hope to improve the situation this year so we can use geiser or slime or something similar.

</comment></comment></comment><comment><USER16> One thing that makes racket shine is it's macro facilities. Syntax case is nice and all that, but Jesus Christ in a chicken basket I wish scheme would have standardised on syntax-parse.

Syntax case vs. syntax parse isn't and will never be close to a fair comparison. Not only is it more powerful, it also provides the users of your macros with proper error messages. It blows both unhygienic and other hygienic macro systems out of the water for anything more complex than very basic macros.

<comment><USER17> Here's the doc for the curious [http://docs.racket-lang.org/syntax/stxparse- intro.html](http://docs.racket-lang.org/syntax/stxparse-intro.html)

Interesting system indeed

</comment></comment><comment><USER18> That Racket module functionality where you can add unit tests right with your code ("module+"), but will get stripped when compiled - that thing is quite magical. Is there another system that has this?

<comment><USER19> I don't think it is an official part of the language but the Pragmatic Programmers Elixir book does this in one of their examples code sections.

<comment><USER20> It is an official part of the language, and is automatically part of the compiled docs, which are also an official part of the language! [https://elixir-lang.org/getting-started/mix-otp/docs- tests-a...](https://elixir-lang.org/getting-started/mix-otp/docs-tests-and- with.html#doctests)

</comment></comment></comment><comment><USER21> If you do work in CL for a living, may I ask what kind of applications and which area? The reason for my question is that CL (and racket) seems like a very good idea to put some time into but the market for such jobs is dead where I live (sweden). Or those jobs might be held by lispers on a lifetime ...

<comment><USER22> I don't work in CL for a living but it is my main go-to language (also at work). It is worth it to put some time into even though there's not a big market asking for CL directly.

</comment></comment><comment><USER23> For anyone interested in Racket, excellent book/online tutorials [http://beautifulracket.com/](http://beautifulracket.com/)

</comment><comment><USER24> Anyone using Racket in the wild? (Besides the Racket team)

<comment><USER25> Hacker News runs on Racket. :-)

<comment><USER2> wasn't HN in Arc?

<comment><USER14> And what is Arc in?

<comment><USER2> The CPython JIT/compiler is written in C. Does this mean that a Python program is then a C program?

Arc is not Racket.

<comment><USER25> I suppose the original poster could clarify whether they were interested primarily in examples of the Scheme-derivative language "Racket" being used in production, or in the system/VM/runtime "Racket" being used in production. Since Racket (the system) now makes it very easy to define new languages on top of it with the #lang keyword, it might be nice to get more clearly distinct terms for these. The way the Java world uses JVM vs. Java, e.g. you'd say that a Clojure app runs "on the JVM", but it's not in Java.

</comment></comment></comment></comment></comment></comment><comment><USER26> > trivial utilities for interactive use from the shell command-line with an > "instantaneous" feel

Last time I checked CL images were huge though. Something like 24MB for a "hello world" executable, even bigger with some compilers.

<comment><USER22> You are correct, but why is this a problem in the case mentioned by the author?

        $ cat > hello-world.lisp
        (defun main () (format t "Hello, World!~%"))
        $ sbcl
        * (load "hello-world.lisp")
        T
        * (save-lisp-and-die "hello-world" :toplevel #'main :executable t)
        [undoing binding stack and other enclosing state... done]
        [defragmenting immobile space... 1110+19908+28500+22601 objects... done]
        [saving current Lisp image into hello-world:
        writing 4816 bytes from the read-only space at 0x20000000
        writing 2320 bytes from the static space at 0x20100000
        writing 2383872 bytes from the immobile space at 0x20300000
        writing 15190112 bytes from the immobile space at 0x21b00000
        writing 39911424 bytes from the dynamic space at 0x1000000000
        done]
        $ ./hello-world
        Hello, World!
        $ ls -lh hello-world
        -rwxr-xr-x 1 user user 56M Aug 23 10:23 hello-world

<comment><USER26> It's not necessarily a problem, but personally for small utilities I much prefer something that supports #!-style scripts, like Guile or Racket, or that can be compiled into small, efficient executables. Let's say it's a matter of personal preference.

<comment><USER27> You can use CL for #!-scripts too. SBCL has a `--script` option for running scripts. You'll probably want to create a core with whatever libraries you need for scrips, so that the start-up time will be fast. The core will be big, but it can be shared for all scripts, so that's not much of a problem.

<comment><USER28> I wrote a short introduction to a more portable Common Lisp scripting system—made by Fare, himself—at [https://ebzzry.io/en/script- lisp/](https://ebzzry.io/en/script-lisp/)</comment></comment></comment></comment></comment>


Windmill co-creator joins cloud testing company Sauce Labs - <AUTHOR> http://adamchristian.com/archives/367

<comment><USER2> Alternative URL: <http://adamchristian.com.nyud.net/archives/367>

</comment><comment><USER3> I expected the "Run a test now" to do just that, but apparently it requires you to input your credit card info...

<comment><AUTHOR> We're working on a free trial that doesn't require payment or credit card information. Until then, once you enter your credit card, you're good to go.

Edit: I forgot to mention:

a) You get 100 free minutes (no credit card req'd) for users subscribing with a corporate email account (just need to email us to request it).

b) First month is refundable

<comment><USER4> He may have been hoping to see a demo, like some fancy dummy javascript or (gasp) flash. I mean, whatever your real report is, but in a popup or a cool DOM inlay or whatever.

<comment><USER3> Yes something along these lines - being able to see the thing at work before signing up is common these days.

<comment><AUTHOR> Agreed. Thank you for the feedback. :-)

</comment></comment></comment></comment></comment><comment><USER4> Sean Grove (sgrove) also works there

<comment><USER5> Yup! Actually quit a few hn users working here, it's been a great experience, and I'm looking forward to working with Adam now that he's come onobard with us as well. He demoed Windmill to us, and we were all blown away - the guy knows what he's doing.</comment></comment>


Congress is to vote on whether climate change is real - <AUTHOR> http://www.theguardian.com/us-news/2015/jan/15/does-climate-change-exist-the-senate-is-about-to-let-us-know

<comment><USER2> I would say that what they are doing is to vote if they _believe_ if climate change is real.

Their vote does not make climate change more or less real by itself, but assuming that humans can affect climate change, the vote may change direction of it depending on the vote outcome and the actions following from it.</comment>


India Bullies Twitter into Banning Accounts of American, British Students - <AUTHOR> https://www.thedailybeast.com/india-bullies-twitter-into-banning-accounts-of-american-british-students-using-censorship-law-15 <comment><USER2> >some of the targeted users say they're looking forward to Twitter banning them in India, as it's done with previous 69A demands. All of them described being bombarded with hateful tweets after being misidentified as Pakistani disinfo operators.

Kinda scary how even when the account doesn't seem to have anything to do with the topics supposedly in question and it is there for all to see ... you can still get death threats.</comment>


Google Will Launch Google Photos, a Photo Host With "Unlimited Storage" - <AUTHOR> http://techcrunch.com/2015/05/28/confirmed-google-will-launch-google-photos-a-standalone-photo-host-with-unlimited-storage/ <comment><USER2> "Unlimited" until they retire the service 18 months from now.

<comment><USER3> Came here to say the same thing.

I've started not to trust Google as a cloud offering because of their continued shedding of services. Look at AWS - they add things they know will fill a need, often because that need is present at Amazon, and as such I can't recall them retiring any of their portfolio.

Google instead take a scattergun approach, which would be fine if they actually interated and improved these services, but look at the mess they made of Google Code - great at first, then no massive new features after a while and they left it to languish.

<comment><USER4> Simpledb is a AWS product the don't promote much these days (it is often left off the list of products). I wouldn't be surprised to see a notice that they are turning it off at some point however.

The big difference is that it has real revenue from customers whereas "free" services are a lot more prone to corporate fashion

</comment></comment></comment><comment><USER5> Let's hypothesize for a minute, why a technology giant, like Google cares about user photos?

Their machine learning systems are unmatched. In order for machine learning to be more effective they need to be given context. What's the missing key for photos? People. What happens when you add in an authenticated Google user, who they already know everything about due to using other G services (mail, search, adwords) to that machine learning with photos?

My assumption would be they can simply learn more about _you_. Personalization is ad money, nothing more.

<comment><USER6> Yeah -- because when you provide a friendly, personal service for someone, you're doing it for the ad money and nothing else. Look, you have _a_ point, but it's an extraordinarily cynical point. You're connecting the dots to reveal "the truth", that Google strives to make money, but it could honestly be a lot worse. Personalization is more than just ad money. It's friendly and great for business.

<comment><USER7> Wouldn't being friendly and great for business be providing customer support? Something that Google rarely, if ever, does?

Google is a product lab that happens to fund itself from its most successful experiment, ads.

<comment><USER8> I've contacted Google for customer support twice in the last couple of years, and both times they were excellent. First time was when I had an issue with my Nexus 5, spoke to a human got it sorted straight away. Second time was when they changed the VAT status on personal Google Apps accounts (here in the UK). I raised a live chat to query this and had a callback from a guy on the west coast within 20 minutes who seemed happy to take the time to walk me through what was happening and what it meant.

Maybe I was just lucky. _shrug_

I'm skeptical about this whole "Google doesn't do customer support" thing, especially given the internet's astonishing ability to amplify vocal minorities and some people's desire to jump on anything anti-guy-making-all- the-money.

</comment></comment></comment></comment><comment><USER9> I'd hardly trust Google again for a service I'd have to rely on in the future. Let alone for a service that doesn't force Google+ down your throat today or tomorrow. Sorry, but Google Reader, Hangouts and Android have been too much already.

<comment><USER10> Just like with any product ever, if the product is popular and produces value, it will stick around. Products come and go all the time, the difference being with Google that since they are so big and have countless products, the company doesn't go away when a particular one fails. Many products fail in this world, but often the company that made the product also goes away, so you have no one to complain about going forward. Google is easy to pick on in this regard.

If this same product was released by a company you had never heard of, would you use it? Would you honestly believe it to have a greater chance of survival?

My suggestion is to simply judge this product on its merits, and accept that nothing is guaranteed, whether it's made by Google or not.

<comment><USER11> > if the product is popular and produces value, it will stick around.

I'm afraid there are more factors than this at play. Reader was both popular, and it produced value (to me and many others). I was never even given the option to pay for it. For whatever reason, Reader didn't fit Google's strategic vision... so it got axed.

<comment><USER12> I'm with you on Reader. Heartbreaking to lose that. Oh well, Feedly has been an acceptable replacement.

</comment></comment></comment></comment><comment><USER13> Google already have unlimited storage for photos, maybe they are just increasing the size of things that count to the free storage. From: [https://support.google.com/picasa/answer/6558?hl=en](https://support.google.com/picasa/answer/6558?hl=en)

Keep in mind that photos up to 2048x2048 pixels and videos up to 15 minutes long won't count toward your storage limit.

<comment> k-mcgrady I think separation from Google+ will be the big thing.

<comment><USER14> I'm super psyched about this. Photos was easily my favorite part of Google+, but I was never comfortable having my entire phone connected to a public-only social network.

I never trusted photo backup from my phone to a public-only profile page. I understand that google respects privacy and tests their code well and doesn't auto-share photos, but the reality is I will never be comfortable with a public-only profile page directly connected to my cellphones camera with auto- upload.

I may be that tiny, tiny minority but I'm very psyched I'll be able to finally use some of the great tools without having to worry about the fact that my phone is being dumped into a public-only social network that "should" protect my privacy.

<comment><USER15> > Photos was easily my favorite part of Google+, but I was never comfortable > having my entire phone connected to a public-only social network.

In what sense is G+ a "public-only social network"?

<comment><USER14> When you create a G+ profile, you explicitly must check a box that affirms that they are creating a publicly viewable profile for your account. That profile page will, no matter what, be a public internet page with no permission filter at all.

You can then subsequently lock down features ON that page, such as hiding work information, hiding photos, hiding this, hiding that, (in fact, each of the dozens and dozens of options must be individually hidden), but the net result of that work is a public page with very little info on it.

By proxy, I can set my Facebook page to "visible to friends only" and even if you have a hardlink, you'll receieve a "page does not exist" error when you view it without logged-in whitelist (friend list) approval to even know the page exists.

I was never OK with the idea that, essentially, my android device had a public web page. A direct link between my data and a public profile page that I had no ability to remove access to.

As evidence of this I made a dummy G+ for a mostly unused Google account I have. Even though I turned off all features and hid all sections and turned on all privacy settings, and have added 0 content, 0 customization, 0 demographic settings (completely and totally blank G+ profile, no posts, nothing), the G+ dummy profile has "715 views" in the past year.

I made a fake G+ with no data and as private as possible, and it has been accessed about 700 times a year. That's not "privacy" to me. It's forced- public, searchable, etc. The best you can do is have a public profile page that you mark "do not search" (but which will still be crawled because search engines often crawl then hide instead of ignore).

You can never have privacy on G+ like Facebook, where you have a private page that does not even resolve as an address to non-friends.

<comment><USER16> That's default-public, not public-only.

> I made a fake G+ with no data and as private as possible, and it has been > accessed about 700 times a year. That's not "privacy" to me.

You didn't say what information was revealed on the profile. If it was completely blank, then how is that a privacy issue?

<comment><USER14> The information revealed was: forced real name and existence of page.

I do not want the existence of a profile to be known. I do not want social networks, search engines, and government organizations crawling and recording information from a profile page connected directly to my cellphone.

I explained this: on Facebook, if you click a link to my profile it will say "sorry this link is invalid".

If you click it on Google, despite my best attempts, it will say "Hey, this user exists, here is their full name, oh, they don't share anything else with you".

That's an invasion of my privacy, to me, to have a public page that resolves and identifies me against my will.

The fact that you're OK with 700 automated bots crawling a blank profile shows me that you don't respect your own information and data and are okay with literally dozens of organizations collecting personal information about you without your permission or knowledge. What do you think those 700 clicks are? People hitting a blank profile? They're bots, and they're data harvesters. The existence of a profile is great information to help build more complete profiles of me, my devices and accounts, and ultimately my browsing history, locations, purchasing histories, advertising history, etc.

<comment><USER16> Your real name, apart from almost certainly not being unique, isn't private information anyway, so no privacy is being lost.

> The fact that you're OK with 700 automated bots crawling a blank profile > shows me that you don't respect your own information and data and are okay > with literally dozens of organizations collecting personal information about > you without your permission or knowledge.

"blank profile" ... "personal information" \-- this isn't even coherent.

> without your permission

They implicitly have my permission to crawl anything I allow to be public. That's what making something public means!

<comment><USER14> "Your real name, apart from almost certainly not being unique, isn't private information anyway, so no privacy is being lost."

Yes, privacy is being lost.

I broke it down very simply: a public facing, crawlable webpage with a real- name is different than a NON-EXISTENT LINK.

Do you understand the difference between a "This Page Does Not Exist" error, and a "Hey, this is the public profile for Real Name" page? Do you understand the difference between say "Google.com" and "lkskldjfklsdjsdf.com"? One being a public page, the other being a non-existent webpage that returns an error?

I am shocked that your view of privacy is so broken that you cannot see the difference between publically posting a page on the public internet, accessible to literally every human on earth, and a whitelisted access page that has a total of about 300 human beings who can see it.

Do you understand why accessible to 5,000,000,000 is different than 300?

Then you can begin to understand privacy.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> TBH I much more like the OneDrive approach when photo sharing is unified with storage, and the photos can alternatively be organized into albums ('views' on the data).

<comment><USER18> Photos has Drive integration [0] since a couple of months ago so you're free to do exactly this.

[0] [http://googledrive.blogspot.com/2015/03/photosindrive.html](http://googledrive.blogspot.com/2015/03/photosindrive.html)

</comment></comment><comment><USER19> So, Picasa w/unlimited storage? I'm not joking. It seems that's what it is.

<comment><USER20> I remember Picasa! That's how I got all my old photos on Google to begin with, after migrating from Flickr back in the day.

<comment><USER19> I don't know if many know this, but you can still use the Picasa website. You just need to add something to the URL, otherwise it redirects to google+:

[https://picasaweb.google.com/lh/myphotos?noredirect=1](https://picasaweb.google.com/lh/myphotos?noredirect=1)

I still use it to this day.

<comment><USER21> Haha, cool, thank you.

It is even complete with a "New!" sidebar referencing a blog post from 2011... ;-)

</comment></comment></comment></comment><comment><USER22> Since the original thread on this vanished, questions (and applause) for any Googlers reading this:

\- - - - -

EXCELLENT. Two questions:

1) If I've stored photos as 2000px on G+, will they automatically upgrade to full size if I upload my full-size photo library to GDrive?

2) Likewise, will auto-awesome creations from previous low-quality pictures be upgraded to higher resolution versions?

</comment><comment><USER23> Stupid question: if there exists an unlimited photo storage service and it supports a lossless format, couldn't people use it as universal storage by splitting their files under the size limit and adding whatever header info is necessary to make them into PNGs?

<comment><USER24> They can check the amount of "randomness" in each photo to determine whether it's an actual photo or a disguised file.

<comment><USER25> You could probably use some steganographic techniques to embed your data in what looks like a real photo prior to uploading though c:

</comment></comment></comment><comment><USER26> So people are just going to do this again? Hand over all of their photos in exchange for free storage? How far are we from a computer being able to determine what is going on in a picture, and then they can mine the things you've done.

<comment><USER27> > How far are we from a computer being able to determine what is going on in a > picture?

[http://googleresearch.blogspot.com/2014/11/a-picture-is- wort...](http://googleresearch.blogspot.com/2014/11/a-picture-is-worth- thousand-coherent.html)

</comment></comment><comment><USER28> ... until they decide they're bored with it and force you to migrate gigs of photos off the service before shutting it down. No thanks.

</comment><comment><USER29> I use Google+ entirely for my photos. I pay $2/mo to have all my photos in full resolution. So this is good news!

<comment><USER7> I pay the same for my grandfathered Flickr Pro account. Flickr gives all accounts 1TB of storage. I'd rather have a limit than an "unlimited" Google service that'll disappear at any time.

<comment><USER30> It won't just "disappear". I think we can safely expect plenty (months) of notice.

<comment><USER7> I concede, disappear is the wrong word. "Prematurely sunset" fits their actions better.

This is why my data gets stored in S3, and not Google's nearline storage. I _know_ S3 is going to be around several year from now. I have no such assurances from Google about any of the services they have "in beta".

"Fool me once..."

</comment></comment></comment></comment><comment><USER31> I don't want Google's servers looking over my images and analyzing them. No thank you.

<comment><USER32> Then you can't put photos on the public web at all, right?

<comment><USER31> Well I choose what to put on the "public web". Unlimited photo storage means all your photos.

<comment><USER32> How would a user be forced to upload all of their photos? I have (allegedly) unlimited storage with Flickr, but I manually upload the photos that I choose.

<comment><USER31> They're not forced to, they're tempted to. And most people will. From the presentation, it looks like as soon as you take a photo it's uploaded and backed up on Google's servers.

</comment></comment></comment></comment></comment><comment><USER33> Actually, it's unlimited for "high resolution" versions, not for the originals, which is sad. I guess I will stick with Carousel or Flickr.

<comment><USER34> 16MP limit means it's not much use for most recent DSLRs

<comment><USER33> Well, to me personally, it doesn't matter what the limit is - I just want to have the _originals_ untouched, i.e. lossless storage.

</comment></comment></comment><comment><USER35> They learned how to recognize a person as they age from an infant to a toddler! That's amazing and should be celebrated.

</comment><comment><USER36> Then, it is time to convert the whole filesystem to an image file and mount it from Google.

</comment><comment><USER37> Gmail was supposed to be "Unlimited Storage" too.. I like how that turned out..

<comment><USER38> Have you actual run out of space in Gmail?

<comment><USER37> Yes I have, and so have multiple friends.. 15GB doesn't go far these days...

So yes.. I've spent the day deleting years of emails that I didn't intend to... thanks Google..

<comment><USER16> Why do you only have 15GB? I just looked and I have 100GB.

<comment><USER39> Why do you have 100GB? Are you sure you're not paying $1.99/mo for that?

The default for new accounts is 15GB. I've had my gmail account since 2004 and I "only" have 17GB (15GB + 2GB extra I got at some point for some kind of security bonus; perhaps enabling 2FA).

</comment></comment></comment></comment></comment><comment><USER40> It's especially interesting when one considers that during the NoCaptcha® relaunch several months ago they said that their algorithms could, by now, read text and detect animals and people better than humans could.

</comment><comment><USER41> It will all be properly announced within a couple of hours but somehow I can't stop myself reading these previews and leaks.

I'll be glad when they set Photos free from Google+. I hope they do something with Hangouts too.

</comment><comment><USER42> "Google wants you to upload all of your photos into their data mining machine"

</comment><comment><USER43> I am thinking about turning this into a unlimited cloud storage.

</comment><comment><USER44> No thanks. I'm trying to move away from being their product.

</comment><comment><USER45> It would be interesting to know the computation they use to determine the monetary gain on being able to mine/scan all the information from the photos versus the cost of storing them.</comment>


Automated CAD - <AUTHOR> http://www.bytecruft.com/2014/11/automated-cad-design.html

<comment><USER2> If you're interested in parametric CAD, Genworks open-sourced most of their system (except for the third-party commercial SMLib library) under the AGPL: [https://github.com/genworks/gendl](https://github.com/genworks/gendl)

<comment><USER3> Do you know if gendl includes geometric constraint solving?

I've been playing around with using geometric constraint solving with FreeCAD's "sketcher" mode, but the GUI interface on that is awful, I'd love to experiment with it using a proper GDL of some sort.

Edit: Nevermind, it sounds like it does. I should have read the whole discussion.

<comment><USER2> Genworks doesn't come with a constraint solver, but you can use the Screamer constraint solving library with it:

[http://weitz.de/eclm2008/Selvaag%20Bluethink%20House%20Desig...](http://weitz.de/eclm2008/Selvaag%20Bluethink%20House%20Designer%20-%20ECLM%202008.ppt)

[https://www.youtube.com/watch?v=usoKR80tWzw](https://www.youtube.com/watch?v=usoKR80tWzw)

[https://github.com/nikodemus/screamer](https://github.com/nikodemus/screamer)

</comment></comment></comment><comment><USER4> As much as I like OpenSCAD for its scriptability, the OP is really pushing the limits of what you can do with it. I'm hoping FreeCAD takes off eventually in this space (hobbyist parts design).

Of possible interest to those reading this, I worked on a project in college that did a similar thing with AutoCAD for full-size water treatment plants. A web interface[1] accepts input which is sent to design scripts, where equations of fluid dynamics and other physical constraints are used to scale components appropriately for the size requested. From there, the AutoCAD command prompt is accessed to generate a 3D model and various construction- oriented section views.

[1] [http://aguaclara.cornell.edu/implementation/design/](http://aguaclara.cornell.edu/implementation/design/)

</comment><comment><USER5> I've been messing around with OpenSCAD for a little. I am working on some 'art' projects that would make heavy use of geometric shapes and I love the idea of generating these things in code.

Another alternative that I've found, and like a lot, is OpenJSCAD. Very similiar to OpenSCAD but with javascript:

[http://openjscad.org/](http://openjscad.org/)

<comment><USER4> There's also ImplicitCAD, which is Haskell and actually more powerful in some ways. Unmaintained as of this summer, though.

[http://www.implicitcad.org/](http://www.implicitcad.org/)

<comment><USER6> After looking at that site I'm baffled as to why it's not more popular.

<comment><USER4> It isn't quite done: [https://github.com/colah/ImplicitCAD/issues](https://github.com/colah/ImplicitCAD/issues)

I found that it works for most thing but can produce broken STLs occasionally.

</comment></comment></comment></comment><comment><USER7> I've played around some with OpenSCAD and I do find it super super cool. I've also played around with Autodesk Inventor (got a student copy for free) and if the code portion of OpenSCAD is causing you trouble, you can do a huge amount of the parametric type stuff in Inventor too. It seemed pretty unapproachable at first, but it's really as easy as adding a dimension like "WALL_HEIGHT=5cm" the first time, and reusing "WALL_HEIGHT" as your dimension everywhere else. Change one, badda bing, the constraint solver goes through and updates your model everywhere.

I'm so glad to see this stuff all taking off. For the longest time, I was shocked at how hard it was to do, and now that I'm back into it, it has gotten much much easier!

</comment><comment><USER8> That's awesome. I've futzed around with OpenSCAD a bit, and the OP is talking about a workflow similar to what I had in mind for my projects.

What's neat is that you can generate a set of parts once (in code). You then assemble those parts (functions, really) into 3D shapes for visualization. And you lay out those same parts in a plane for 2D fabrication.

The main difficulty I had was that it seems to be necessary to calculate everything. As a simple example, suppose I've got a triangle-shaped part, and stick the flat side of it on a square part. What's the distance from the tip of triangle to the opposite flat side of the square? OpenSCAD knows, in some sense, because it drew it. But inside my OpenSCAD script, I don't, and I have to calculate the geometry in my code.

If there was some way to specify and capture the position of that point (or whatever), then it would be much easier to connect parts together.

<comment><USER9> > If there was some way to specify and capture the position of that point (or > whatever), then it would be much easier to connect parts together.

This is usually done by a constraint solver. The most popular one in the industry is D-Cubed 3D DCM by Seimens: [http://www.plm.automation.siemens.com/en_us/products/open/d-...](http://www.plm.automation.siemens.com/en_us/products/open/d-cubed/products/3ddcm/)

I do not know any open source equivalents for 3D constraint solving. There is a few 2D ones that are open source I understand.

<comment><USER2> [https://github.com/genworks/gendl](https://github.com/genworks/gendl) does this by having you describe parts and sub-assemblies as objects, and then generating geometry commands from the object graph.

</comment></comment></comment><comment><USER10> An easy way to play around with parametric or specification based custom manufacturing is by making custom food (like sandwiches) for people, but only accept orders in a standard computer readable format.

Interesting questions are raised. Is there a limit to topping counts? Is there an implied order to toppings? If toppings have a cost, do you calculate that as the supplier or leave that to the consumer? How do you make sure an order is vegetarian? What do you do if you can't fulfill an order due to topping shortage?

Also, if it's that kind of party, people will start making their own food order generators, raising another set of interesting questions.

</comment><comment><USER9> Very interesting. I heard that OpenSCAD isn't fully reliable for production use though.

We've love to integrate this into [https://Clara.io](https://Clara.io) in some way.

<comment><AUTHOR> The stable version of OpenSCAD has seemed to work well enough. I ran into some problems when I tried to use a nightly version to get some of the latest features. I don't think anything about the overall process really ties to it OpenSCAD itself, there are many other parametric script-based modelers. It just happened to be the one I used. It would mean reworking some things, but I could switch to a different one if I needed to.

</comment></comment><comment><USER11> Interesting but silly title both as noted in the opening paragraph and as the 'd' in 'CAD' means design already (computer aided design design)

<comment><AUTHOR> Oh man, I should have known better. You are right.

I wasn't thinking of it in that way, when I wrote the title, I was thinking of the second "design" as "the thing", and the "CAD" part of it as the name of the technology area. The more I think about it, the more I think it is a little awkwardly titled.</comment></comment>


Bitcoin is not such a great investment anymore - <AUTHOR> https://medium.com/@ronreiter/bitcoin-is-not-such-a-great-investment-anymore-fc61b97c8f13 <comment><USER2> Yeah, but that's _also_ what I said when it hit a dollar.

(On this very site, but I can't remember what my username was back then so I can't look it up and prove myself stupid.)

<comment><USER3> I believe you. And I believe you were wrong.</comment></comment>


I Don't Care If a Flight Attendant Almost Hit a Baby - <AUTHOR> http://crankyflier.com/2017/04/25/i-dont-care-if-a-flight-attendant-almost-hit-a-baby/ <comment><USER2> Yes and no... we might reach an equilibrium where the level of customer service just increases. Visit Japan and then come back to the USA- American companies treat their customers like cattle (or cow pies).

<comment><USER3> I'm pretty sure the service level is a function of culture (e.g. ones upbringing), payment vs expectations in ones job, overworking, stress and so on. I think hoping that a viral video will change anything about that without a change to the mentioned things is all washed up.

</comment></comment><comment><USER4> Cached version - [https://webcache.googleusercontent.com/search?q=cache:NnG- aS...](https://webcache.googleusercontent.com/search?q=cache:NnG- aSafUKoJ:crankyflier.com/2017/04/25/i-dont-care-if-a-flight-attendant-almost- hit-a-baby/)

</comment><comment><USER5> The reason these videos appeal to people is because it returns some power back to the customer being mistreated.

Any fairly frequent flier will have horror stories of being mistreated by airline or border personnel, and most times the only thing you can do is to put up with it. But NOW, after the United incident, it feels like the customer is no longer as helpless as before and can no longer be mistreated with impunity. This is irrespective of validity of any of the viral videos being circulated.

<comment><USER6> >But NOW, after the United incident ...

Which is ironic because the guy was crazy. He was randomly selected to be bumped and the cops had to be called in to haul him off the plane, after pleading with him for half hour. What a self-important jackass - sucks he got a bad break with the lottery but if he doesn't go somebody else will have to take his place. That's not fair either.

<comment><USER7> What's not fair is removing a paying passenger against their will for no good reason. United could have just increased the compensation until somebody left willingly. Instead they chose to involve law enforcement, with predictable results.

<comment><USER6> >What's not fair is removing a paying passenger against their will for no good reason.

No, it's not fair, but it wouldn't be fair to remove another passenger because this one felt he was too important to be bumped.

>United could have just increased the compensation until somebody left willingly.

Sure, and United paid for that mistake and then some. But just because they made a mistake doesn't mean the other guy did not act like a psycho.

>they chose to involve law enforcement, with predictable results.

Those aren't predictable results. Predictable results are: "United involved law enforcement, and the passenger left the airplane promptly". A more typical scenario would see him leave way before United called the cops.

<comment><USER7> Nobody is saying United should have removed another passenger instead. That's a straw man.

The results may not be what usually happens but they are entirely predictable. Any time you get law enforcement involved, there's a decent chance that violence will ensue. The entire _point_ of law enforcement is to be the sole state-approved user of violence.

</comment></comment></comment></comment></comment><comment><USER8> I don't like the five minutes of hate either. And the over abundance of out- of-context filming going on everywhere.

But I do care that a woman was hit by a stroller and that a baby was almost hit. Mr. Flight Attendant is an employee, not police officer, _and has no right to assault_ anyone.

What upsets me, and everyone else if they spent a minute to think about it, is that flying (among many other things we do) has become a throughly unpleasant.

Flight crews are increadily underpaid, over worked and under extreme stress. If they don't close that gate on time they'll miss departure, have to wait in cue several minutes and cost their company thousands in fuel.

So they're stressed, annoyed, view us a cattle (which we are) and will lay their hands on woman with babies.

It's not the flight attendants fault. It's American Airlines' fault.

<comment><USER6> >I don't like the five minutes of hate either...But I do care that a woman was hit by a stroller and that a baby was almost hit. Mr. Flight Attendant is an employee, not police officer, and has no right to assault anyone.

Well, which is it? Because at any given point in time there are thousands of things happening where people are clashing over something or other - that's called life. You're really unlucky when one of those events goes viral and has someone like you pilling on with the rest of the mob to make sure your sanctimonious perspective is heard.

<comment><USER8> Except that anyone who has flown in an airplane knows that these aren't rare, unthinkable, events. Every time we fly we get nasty, rude, on the edge of snapping flight crews.

So, ya I hate the 5 minutes of hate culture, except that's the only defense we, as the public, have against entrenched power.

Same goes for cops, soldiers, Uber, etc. I'm sorry but I no longer buy the "lone bad apple" story.

<comment><USER6> Ahhh. I understand. You're pilling on as way to air your grievances. It doesn't matter what the actual situation is, you feel that because you didn't have a good experience flying you want to take your shot against another target to make yourself feel better.

</comment></comment></comment></comment><comment><USER9> "I'm sure there is a perfectly valid and rational explananation for why this woman was hit with her own stroller and then a child was physically threatened."

Oh. Okay. Yeah. I bet she was asking for this treatment. Just look at how she was dressed, right? Right!?

While it is _cough_ unfortunate that now you have to see a clearer and less imperfect window into fellow human experience and feel those damnable pangs of empathy ever now and then, this is inevitable.

There are 2 kinds of global surveillance. There is the kind kicked off by the government to quasi-legally spy on anyone at any time for "national security". There is also the kind that is bottom up, the population sharing it's perspectives with itself.

The later has been increasingly influential. It has shown us police brutality. It has debunked ideas that women at the Berkeley riot was armed (and shown Reuters doesn't vet photos very well). It has shown us black citizens trying to stop white antifa activists from starting a riot in their neighborhood. It's shown us Nazis being punched. It reminds us of the lies and about-faces of politicians. It has shown us the poor driving skills of our peers. And that's this month alone.

And on and on.

For all it's flaws, this surveillance led by individuals (who recognize they own their own perspective and have a right to share it) is changing society far more than anything else we've seen in recent memory and it is accelerating.

It's a good thing, on balance

</comment><comment><USER10> I really don't understand why people get upset about this type of news, engaging with it is completely voluntary. I read the news every morning and I had no idea this was even an event.

</comment><comment><USER11> tl;dr: Stop reacting to videos of humans not being at their finest.

Well, yes and no. Yes overreacting with outrage to situations where we don't always have the full details is fraught with pitfalls.

At the same time, perhaps we can as a society use these moments, not for outrage but to make us better at being human. Recognize that in the grand scheme of things, we are all humans and in the same boat, and that it is better for us to suffer a _LITTLE_ injustice instead of escalating to _A LOT_ of injustice for someone else (aka. revenge).

Fun note: the old Moses law of "an eye for an eye" was meant in the context of not retaliating with greater force than the original injustice, precisely to avoid conflict escalation.

</comment><comment><USER12> This got flagged? Why? How can one vote to unflag? [Edit: seems to be unflagged now]

<comment><USER13> There's a karma threshold past which the option becomes available.

</comment></comment><comment><USER14> While he has a point, the way that the flight attendant reacted when the man wanted his name by wanting to fight was uncalled for. This is a big indication to me that again they handled this situation poorly and the man that supposedly hit the woman and almost her child, was probably not in a good state of mind. If you hurt or injure someone as a person working in the service industry, your first reaction should not be wanting to fight someone that is being abrasive while trying to help.

</comment><comment><USER15> I too am tired of the Five Minutes Hate. Seems like every day there's another person, company, entity the news says I'm supposed to dread and boycott. United, American Airlines, Uber, Macys, Chick-fil-a, the list goes on.

<comment><USER2> That's the exact attitude that leads those companies to behave badly. Its crazy that we love chicken enough to let CFA, a proudly bigoted org, succeed in NorCal.

<comment><USER16> Do you have any proof that Chick-fil-A is "proudly bigoted"? Like is there a page on their website somewhere saying "gays need not apply"? Or is it ok now to redefine words whenever we want? Because that would be... ungood.

</comment></comment></comment><comment><USER17> Hell yeah! Way to stick it to _Big Consumer_!

</comment><comment><USER18> I hate my job, but I thank God that I'm not a flight attendant.

</comment><comment><USER19> What's the point of this post? And why is this on front page?

P.S.: Wow! that was the fastest downvote ever (1 minute!). Waiting for the comment including the reasoning...

Edit: I see some users mentioning this story has been flagged. Just so you don't get more angry at me, I haven't flagged this (or anything ever), nor I'm sure I could if I wanted to. I have questions and would like to read answers about it, I'm not up for shutting down the discussion.

<comment><USER20> I'm not the one who voted you, but I do see where the downvote may have come from – your comment doesn't really add much to the discussion. As for why it's on the front page, seems other people found it interesting and upvoted it. You don't have to agree with them, but I think it's easy to see why this article may be of interest to people.

<comment><USER19> Thanks for the reply!

The downvotes keep coming, I guess that's the hivemind at work.

But anyway, allow me to disagree: My comment has two very valid questions.

1) What's the point of the article? The rest of the comments here are just people being angry because a dude said he's tired of being angry, and that he can't be angry without facts. Really, please someone explain to me, what's the point of the article? I'm calling for civil discussion.

2) Why is this in front page? I understand the technical aspects of this being front page; but I'm baffled this is #1 and I thought people would be able to explain why they think it's relevant.

I guess there's no room anymore for difficult questions and it's all about being angry and downvoting.</comment></comment></comment>


Ask HN: How to fire sell a web startup? - <AUTHOR>

I have a startup, OrangeSlyce.com, that I am looking to exit from... We haven't been able to monetize very well, but I know the web property has got to be worth something. Has anyone sold an web startup before? I don't even know where to start or what to expect.
I'm thinking of reaching out to competitors, listing on flippa.com.
Stats: PR4, 5000 unique visitors monthly, pending patent, 1500 users, some revenue (hundreds/month), beautiful design and functioning application. Users love us. Not enough to pay though. <comment><USER2> Put it on flippa.com and let folks here know. Spend a bit of time on your flippa description. It will make a difference. You have to stand out from all of the crap sold on flippa.

Or, let me know what you want for it. My email address is in my profile.

</comment><comment><USER3> Hi there. Sorry to hear it is not working out for you. Full points for giving it a serious go. As some of the other responses have already said, Flippa is the number one marketplace for getting OrangeSlyce.com in front of the most qualified website buyers. Having existing revenue will help in getting buyer attention. Just make sure you have a reserve price that you are happy to sell at. Let us know if you go ahead and we'll send a few credits your way to get you rolling.

</comment><comment><USER4> I think the site is good and could be great. I wouldn't sell it yet. Plus, if users love it, there's hope. If you want a few ideas, send an e-mail; I'd be happy to give .02.

<comment><USER5> I agree too. It looks stunning and polished service. I'm not sure what marketing strategies/tactics you used so far, and what were the results of it.

But I think you need to focus entirely on marketing and reaching out to many students. Think about some creative marketing ideas that are directly related to university students or so.

See if you can get someone on advisory board who is marketing pro, and help you grow from here. If I was in your shoes, probably I wouldn't quit at this stage. There got to be something that you'll figure out that will work.

Worst case, pivot this crowd-sourcing model to other domain - you already have product ready, see if you can apply this model to other high-paying industry.

Just my $0.02s

</comment></comment><comment><USER6> 1) hundreds/month revenue, but what does the profit look like? are you covering operating expenses?

2) what are you expecting? the "we have revenue but want to quit" makes me feel that you're expecting to be properly compensated for your time, which is highly unlikely.

<comment><AUTHOR> It covers hosting expenses, but doesn't cover the team as employees (we don't have day jobs).

I'm definitely not expected to be compensated for time, but hope to get some cash out to fund our next big thing.

<comment><USER6> why don't you just pivot? abandon all work on this product that does anything except directly generate revenue. as long as you're not losing money, just let it stay alive and gain the passive revenue. go do that other thing now.

<comment><AUTHOR> That's what we'll probably end up doing. I was just thinking that selling could offer a surge of revenue to cover living costs while developing the new product.

<comment><USER6> it could. but it looks like you put a lot of time and effort into this. would you be willing to sell it on flippa for like 2 months rent and then watch as someone runs it into the ground?

</comment></comment></comment></comment></comment><comment><USER7> Hundreds/month of revenue, with what sort of expenses? Is it mostly just the issue of the amount of time you're putting into it with relatively little return?

<comment><AUTHOR> yeah that's it.

</comment></comment><comment><USER8> Flippa seems to work out ok. I've sold a few things on it and have generally been happy.

</comment><comment><USER9> clickable <http://orangeslyce.com>

</comment><comment><USER10> What do you think its worth?

<comment><AUTHOR> I don't even think I can begin to guess. I have absolutely no reference point.

<comment><USER11> A 5-20x multiple of your monthly revenue is a good place to start.

</comment></comment></comment><comment><USER12> Bah! I met you guys at a TechCrunch event. Sad to see it not work out. I would recommend Flippa. Or, perhaps what all the cool kids are doing: "Offer HN"

<comment><AUTHOR> haha awesome. What we were doing is a really hard problem I think. I think there's a reason internship/college job related sites are a dime a dozen. Hopefully not literally ;)

<comment><USER13> And there's plenty of money in the market, but most people get the business model wrong, fail to get enough users, and quit too soon.</comment></comment></comment>


Shading a Bigger, Better Sequel: Techniques in Left 4 Dead 2 [pdf] - <AUTHOR> http://www.valvesoftware.com/publications/2010/GDC10_ShaderTechniquesL4D2.pdf

<comment><USER2> Valve publications: [http://www.valvesoftware.com/company/publications.html](http://www.valvesoftware.com/company/publications.html)

<comment><USER3> People do a lot of pants-jizzing over Valve, but this is yet another reason why they're awesome. I love when developers release material like this!

<comment><USER4> Insomniac has an utterly kickass set of publications as well:

[http://www.insomniacgames.com/category/research- development/](http://www.insomniacgames.com/category/research-development/)

<comment><USER3> Thanks for the link!

</comment></comment></comment></comment><comment><USER5> The graphics in L4D2 are great, the game runs very fast on Ubuntu, Valve has done a great job. I hope more games keep coming to Ubuntu and Linux for Steam overall. I tried the Source SDK recently and the sample builds and runs successfully on Ubuntu. Now as far as game play, L4D2 and TF2 seem similar to me, too Hollywood, I like more muted game play, similar to L4D which I tried on Steam on Wine once. If that was on Linux now I'd buy that one and probably play it more. Also more Minecraft like games where when a grenade goes off you see damage to the walls, ground, etc. and you can build stuff, defenses, machines, etc. that would be unreal.

<comment><USER6> L4D and L4D2 are so similar I'm not sure I understand how one is muted and the other is too Hollywood. The only real differences between them are a few changes to infected, melee weapons and some additional gameplay mechanics.

E: there's a really cool technical presentation here that goes through some of the technical changes in L4D2 [1]

[1]: [http://www.valvesoftware.com/publications/2010/GDC10_ShaderT...](http://www.valvesoftware.com/publications/2010/GDC10_ShaderTechniquesL4D2.pdf)

<comment><USER7> Left 4 Dead 2 punishes you much harder for going slowly. The Spitter and Charger were introduced for that express purpose, and a number of other mechanics (like crescendos) were changed in that direction too. That's probably what jebblue means by "muted" vs. "Hollywood" — the pacing.

<comment><USER5> I could expound more but it might be seen as drivel. I'd say your example is right on chc.

</comment></comment></comment></comment><comment><AUTHOR> This is from 2009/2010, and I came across it after re-playing L4D2 in the wake of its one-day-giveaway by Valve. It's aimed at graphics devs but has a lot of interesting insight about visual design and perception, procedural generation techniques, and how to simplify in general.

The last few slides are pretty great, showing how they render the gaping internal zombie wounds in a computationally efficient way. Some fun bullet points: "Culling a torso as easy as culling an arm"..."1.5x as expensive...156x the number of ways to die"

If you've ever played the game, the graphic touches are so well done you just take it for granted. But it's interesting to see how important they were to the developers, especially to serve as visual feedback to emphasize the power of certain weapons. That's not an option for most realistic shooters, or at least it seems the ratings board is more approving of gibbing zombies than human baddies.</comment>


Ask HN: Hiw to learn modern C++ from a non C++ background? - non-entity It just seems that theres so many features, conventions, ways to do the same thing, etc. and it seems overwhelming to try to learn C++ let alone learning how to write good code in it. Especially as someone who has minimal C or C++ experience (I know enough C to read largish codebases, but would probably fall flat trying to write anything) <comment><AUTHOR> The best way to learn the language is through a textbook and a lot of practice. C++ is a complicated language and takes years to master. You should be prepared to make that investment if you want to succeed.</comment>