Show HN: Writing an HTTP server in Prolog - <AUTHOR> http://jamesbvaughan.com/writing-an-http-server-in-prolog/ <comment><USER3> Pretty cool.

I also did a stint messing around with Prolog and it was pretty awesome discovering an entirely new programming paradigm. I ended up doing the Priceonomics puzzle ([https://priceonomics.com/jobs/puzzle/](https://priceonomics.com/jobs/puzzle/)) in Prolog and wrote up about it here - [http://dangoldin.com/2013/06/07/fun- with-prolog-priceonomics...](http://dangoldin.com/2013/06/07/fun-with-prolog- priceonomics-puzzle/)

<comment><AUTHOR> That's awesome, thanks for sharing!

<comment><USER3> Yea - Prolog is super neat and gets you thinking a very different way. It was my first real introduction so took a bit of time getting used to thinking the "Prolog" way.

</comment></comment></comment><comment><USER4> There is a revival of Datalog, a subset of Prolog, in relational databases and RAD. E.g., see LogicBlox or Datomic.

I always think Datalog should have taken a big chunk of SQL's market. And I wish something like Mozart/Oz was more mainstream so that we could implement subsystems using logic programming wherever needed.

<comment><USER5> Chris Granger's Eve is based on Datalog. Perhaps his work is finally what breaks out the logic programming prolog paradigm.

<comment><USER6> Chris Granger is charismatic, but not particularly insightful. It would be better if he found a mentor.

<comment><USER5> Yea I agree. It really looks like he just took the datalog language, put it in a browser, and added an in-browser IDE (basically like he did with clojurescript and Light Table). Not that this might be incredibly useful, and not that his vision of a billion non-developers able to program might become a reality (through Eve), but I think everyone was expecting something more-- something which had that groundbreaking Bret Victor feel-which is what I think what you're alluding to. Unfortunately, I don't think there's anyone that could mentor him--or they would do it themselves--bar possibly Bret Victor. My hope is that his grand plan evolves into something that in sum is as groundbreaking/insightful as we had imagined. At the end of the day, you gotta give it to him regardless. Not many people are going for it like him. I once was, but am back to application development. So nothing but the best of luck to Chris coming from me.

</comment></comment></comment></comment><comment><USER7> Prolog is extremely different than other programming languages and as a result, learning it and writing a few small programs is very mind expanding.

It really drives home how different paradigms are suited to different problems. Prolog is suited toward problems like Einsteins riddle

[https://udel.edu/~os/riddle.html](https://udel.edu/~os/riddle.html)

<comment><AUTHOR> The class I was taking kind of blew my mind when I saw how you can solve some problems in such cool ways with Prolog, but I would certainly admit that this server isn't exactly the kind of use it's best suited for.

<comment><USER8> Python's set class and comprehension syntax can get you much of the declarative power of Prolog.

<comment><USER9> How so? I mean, there are logic libraries available for python to be sure. But the "set class and comprehension syntax" are two features only tangentially related to logic programming. Using them alone doesn't get you inference, or even unification.

<comment><USER8> Inference is straightforward using dictionaries, membership-testing, and set methods, like subset, superset, disjoint, union, intersection, and difference.

Python can't do a conditional assignment as nicely as Prolog's unification, but you can get similar behavior via the application of predicates in comprehensions and using set methods. I'm not saying Python is equivalent, but simply that you can get some of Prolog's style in Python. Erlang's pattern matching and concept of bound vs unbound variables is a bit closer to Prolog's unification.

Here's some Python implementations for examples shown in my first Google result for "prolog examples" ([http://www.cs.toronto.edu/~sheila/384/w11/simple-prolog- exam...](http://www.cs.toronto.edu/~sheila/384/w11/simple-prolog- examples.html))

1\. Here are some simple clauses.

        >>> likes = {'mary': {'food', 'wine'},
        ...          'john': {'wine', 'mary'}}
        >>> 'food' in likes['mary']
        True
        >>> 'wine' in likes['john']
        True
        >>> 'food' in likes['john']
        False
        >>> # John likes anything that Mary likes
        >>> likes['john'] |= likes['mary']
        >>> # John likes anyone who likes wine
        >>> likes['john'] |= {name for name, objs likes.items() if 'wine' in objs}
        >>> # John likes anyone who likes themselves
        >>> likes['john'] |= {name for name, objs in likes.items() if name in objs}

2\. Slightly more complicated family tree.

       >>> male = {'james1', 'charles1', 'charles2', 'james2', 'george1'}
       >>> female = {'catherine', 'elizabeth', 'sophia'}
        >>> parents = {'charles1': 'james1',
        ...            'elizabeth': 'james1',
        ...            'charles2': 'charles1',
        ...            'catherine': 'charles1',
        ...            'james2': 'charles1',
        ...            'sophia': 'elizabeth',
        ...            'george1': 'sophia'}
        >>> # Was George I the parent of Charles I?
        >>> parents['charles1'] == 'george1'
        False
        >>> # Who was Charles I's parent?
        >>> parents['charles1']
        'james1'
        >>> # Who were the children of Charles I?
        >>> {child for child, parent in parents.items() if parent == 'charles1'}
        {'charles2', 'james2', 'catherine'}

3\. Recursion: Towers of Hanoi

        >>> def move_one(x, y):
        ...     print('Move top disk from {0} to {1}'.format(x, y))
        ...     return True
        ...
        >>> def move(n, x, y, z):
        ...     if n == 1:
        ...             return move_one(x, y)
        ...     m = n - <USER2>
        ...     move(m, x, z, y)
        ...     move_one(x, y)
        ...     return move(m, z, y, x)
        ...
        >>> move(3, 'left', 'right', 'center')
        Move top disk from left to right
        Move top disk from left to center
        Move top disk from right to center
        Move top disk from left to right
        Move top disk from center to left
        Move top disk from center to right
        Move top disk from left to right
        True

4\. An example using lists:

This last one is a bit silly in Python as all the tools shown are built-ins.

<comment><USER9> I appreciate you taking the time. Your approach shows the first steps towards building an inference engine in Python, but these are all very trivial examples. The difference between this and a real logic language will become apparent as the database of facts and rules becomes more complicated.

In order to follow this through, you would need to separate all of search code (i.e. the comprehensions) from the declaration of facts and rules. If you were successful in doing so, you will have made a basic logical inference engine in Python.

Consider one of the queries described in the family tree example: "M is the mother of X if she is a parent of X and is female"

In Prolog this might look like:

        mother(X, M) :-
           parent(X, M),
           female(M).

Having built that rule, I can ask

1) Who is the mother of sophia? : mother(sophia, X).

2) Who is sophia the mother of? : mother(X, sophia).

3) Which mothers have male children? : mother(M, X), male(M).

The question is, how would you define the `mother` relation using comprehensions in a way that is agnostic to the specific questions that will be asked? You would inevitably need to write different loop for each variant of the question. The trick is to write an engine that, given a query, automatically generates the comprehensions required to find the answers. It isn't an easy problem at all.

To make this even clearer, consider your claim that the tools in part 4 are trivial in python, because they are all built-ins. But this is not true at all! Python's built-ins are one-way functions, rather than relations. In python I can ask "what is the sum of the elements in this list?" but I can't as easily ask "what is a list with 30 unique integer elements that sum to 100" To do this in python you would need to put some thought in to how you would generate lists using nested loops so that all of the properties were satisfied. In Prolog you just list the search criteria and it does the work for you:

        size(L, 30),
        unique(L),
        sum(L, 100).

Edit: By the way, check out pyDatalog if you are interested in a fully featured inference engine built in python:

[https://sites.google.com/site/pydatalog/](https://sites.google.com/site/pydatalog/)

<comment><USER8> Prolog relaxes the requirement to think linearly, bottom-up. If you write all the facts and predicates bottom-up it's easy in Python. Dictionaries, sets, and comprehensions take care of everything. As you say, it's trivial.

If you want to write top-down, defining what a mother is before defining who are parents and who are female, then you'll need to write functions and it gets trickier in Python. The sticking point is when to transition from functions to dict/set -- what's a predicate and what's a fact. We could get fancy with decorators to create some funky predicate class, but let's stay away from metaprogramming for the moment.

I agree that Python (without getting fancy) requires the programmer to think through a bit more of the inferential logic than Prolog would under some circumstances. How often do those circumstances arise in practical problems? I'm not sure.

However, I've got to accept the challenge: "What is a list with 30 unique integer elements that sum to 100?"

First, there is no list with 30 unique positive integers that sum to 100.

        >>> sum(range(30))
        435

Allowing negatives would create an infinity of possible solutions. So, I'm going to rephrase the problem: Generate a list of N unique positive integers that sum to M.

        >>> from itertools import combinations
        >>> m = 30
        >>> n = 5
        >>> combos = (c for c in combinations(range(m), n) if sum(c) == m)
        >>> next(combos)
        (0, 1, 2, 3, 24)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> In one of my first jobs out of college, I got assigned to figure out how to make the Tivoli Enterprise Console do something useful. They gave up on the IGS guys and picked me because I took a class that used Prolog in my sophomore year.

IBM bundled some ancient prolog dialect (copyright 1991 iirc) and the product was a mess.

But it was a great time... a coworker and I came up with a way to persist facts to DB2 and decode/standardize all sorts of fubar network device alarms. Good times.

<comment><USER11> The embedded Prolog was ProLog by BIM, from BIM Systems, which was the Belgian-based competitor to a US-based company called Quintus, in Mountain View; both offered high-end Prolog systems for Unix.

One of the things that ProLog by BIM had was the ability to have Prolog use Oracle or Sybase databases as if they were Prolog's own native database (Spooky23, if you see this, I was wondering if that helped you use DB2 in this fashion when doing your Tivoli work or did you roll your own from scratch?)

Anyway, Tivoli apparently created a macro language, TEC, that was then compiled down to Prolog to run.

Here's an opinionated look at TEC and the decision to use Prolog:

[http://www.softpanorama.org/Admin/Tivoli/TEC/tec_rules_progr...](http://www.softpanorama.org/Admin/Tivoli/TEC/tec_rules_programming.shtml)

Some more info/perspectives from back-when about Tivoli's use of Prolog:

[https://groups.google.com/forum/#!topic/comp.lang.prolog/LgM...](https://groups.google.com/forum/#!topic/comp.lang.prolog/LgMyadsawME)

<comment><USER10> Yes! Thanks for remembering!

Those BIM features were unknown to us as we had no BIM manuals. We took some open source code in a mailing list that let you dynamically load shared libraries. That's how we interacted with the DB2 client, and we also did a similar thing with Perl so the admins could do some work for us.

The IBM macro stuff was mostly there to power their (Motif based) rule builder GUI and was pretty limited unless you pre-processed events upstream and spoon fed it. That's why the IGS guys struggled -- they were certified against the base product (and had minimal experience beyond installing the thing) and the salespeople were aspirationally selling whatever one of the big financial services places did with the product.

It's been 15 years so I'm hazy but I'm pretty sure I tossed most of the macros that shipped with the product. It was a really fun gig and I learned a lot from it.

</comment></comment></comment><comment><USER12> James, check out Mercury next as it's a faster, better Prolog with some industrial use.

[https://mercurylang.org](https://mercurylang.org)

<comment><USER13> Last time I looked (admittedly years ago), it wasn't an unambiguously "better Prolog", because Mercury's static mode system couldn't capture all of what Prolog can do with unification.

<comment><USER12> I'm repeating what most users told me. This is a new one on me. Care to elaborate?

<comment><USER14> A common Prolog programming pattern involves creating a partially instantiated term (a "structure" with "holes") and filling in the details later. This can improve expressivity, composability, and performance.

For example, this code:

        L = [_,_,_], maplist(p, L)

enumerates all three-element lists whose members satisfy the predicate p. This technique is impossible in Mercury because it does not allow terms with holes.

Of course you can still compute the same result in Mercury, but you will have to do more work: I think you would have to write a specialized predicate instead of using a higher-order predicate from the library.

<comment><USER12> Thanks for the explanation. I agree the example is concise and powerful. I'll run it by Mercury users or developers to see what their answer to that is. They might have a good solution or maybe not due to language's design.

<comment><USER14> You're welcome! I last looked at Mercury about 3 years ago, and I vaguely remember partial instantiation being documented as an eternal low-priority future feature. Maybe there's been progress... or maybe they'll say this is less useful than Prolog weenies like to claim ;-)

Out of interest, in what sort of function do you talk to Mercury users and developers if you don't use it yourself?

<comment><USER12> Oh I just bring attention to tech that people might be interested in. You're the first to mention a drawback. So, I might just ask one of them if there's a list of thing people like about Prolog hard or non-existent in Mercury. Next time I'll be better informed if anyone asks. That's all.

I do have a slight tie-in to my field where I keep logic systems in my peripheral in case they become useful for (a) executable specifications, (b) connections to provers like Milawa, (c) easier formal verification, or (d) commercial deployment in a good one that almost skips the coding phase by keeping code close to specs. Mission Critical IT claims to use Mercury for (a) and (d) with a finance developer linked here a while back using Prolog for whole app. Got easy extensions and fixes as result. So, these conversations might have benefit later.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Have you learned about definite clause grammar yet? Once you do, you may be tempted to rewrite your parser, because it's a much more elegant way of constructing parsing rules.

<comment><AUTHOR> I have not learned about that, but I'm very interested now. Before I go and google it, do you have a specific place you'd recommend I go to learn about it?

<comment><USER15> Don't know... I took it in a class just like yours. IIRC it was the SWI prolog docs site

</comment></comment></comment><comment><USER16> Machine Learning in Prolog [https://www.cs.unm.edu/~luger/ai- final2/CH7_Machine%20Learni...](https://www.cs.unm.edu/~luger/ai- final2/CH7_Machine%20Learning%20Algorithms%20in%20Prolog.pdf)

</comment><comment><USER17> Awesome, one of the most fun i had at university was building a Uri parser with prolog.

After i discovered that you could define operators i built a combinatorial parser, something akin to [https://hackage.haskell.org/package/parsec](https://hackage.haskell.org/package/parsec) (of course nowhere as powerful) with similar syntax and do notation. [https://gist.github.com/ga2arch/e8904177f722c6560e37](https://gist.github.com/ga2arch/e8904177f722c6560e37)

And i didn't have to define backtracking because it is handled by prolog itself.

</comment><comment><USER18> This is really fun. Thanks for sharing!

<comment><AUTHOR> Thanks for reading!

</comment></comment><comment><USER19> Site seem to be down. `Error establishing a database connection`

<comment><AUTHOR> I wasn't expecting so much traffic! It should be back up now.

</comment></comment><comment><USER20> .pl is perl, use .pg for prolog

<comment><USER21> Amusingly perl's documentation says .pl is for a perl library and perl scripts should be .plx (for perl executable).

So nobody pays attention to that rule anyway.

I do get slightly confused switching between #perl and ##prolog on freenode sometimes, but the other regulars just laugh at me and we move on ;)

<comment><USER22> This may be true in Perl 4, but hasn't been a rule in this century, I don't believe.

<comment><USER21> [http://stackoverflow.com/questions/1567546/is-the-perl- plx-f...](http://stackoverflow.com/questions/1567546/is-the-perl-plx-filename- extension-ever-used-in-real-life)

It's not a rule I can remember encountering anybody actually _following_ , but it's still theoretically a thing at least up to about a decade ago, which is very definitely perl5 era.

It's not where I thought it was in the perldoc though, so either it isn't in there at all or I screwed up looking for it.

So, roughly, "I think it turns out we're both sort-of wrong" :)

</comment></comment></comment></comment><comment><USER23> Sometimes, just because you can doesn't mean you should..

<comment><USER24> The author states many times that they did this to learn about networking and Prolog, killing two birds with one stone. This is clearly in no way meant to run any serious server software.

Are you saying that people shouldn't teach themselves powerful technologies?

<comment><USER25> > Are you saying that people shouldn't teach themselves powerful technologies?

That much it was clear they weren't saying. What was being said was that prolog is just about the last lang you'd do this in. Aside from that, I think everyone else was aware that this was an experiment.

To add:

I think this is a great approach. The last highly up voted article suffered from being the same ol' hello world intro to prolog. It's fun to see a real world problem tackled.

</comment></comment></comment><comment><USER26> No! What are you doing?! Let that language die in peace!

<comment><USER24> Any particular reason you think Prolog should be abandoned?

I think it looks like very nice language for untyped, high-level programming.

<comment><USER3> My understanding is that there's a very limited amount of research going into Prolog so it ends up being incredibly slow for larger tasks. And a lot of it's functionality can be done via standard SQL so there's not a ton of use cases for it.

<comment><USER9> Prolog implementations are still the fastest, most researched, and most practical logic languages out there. I don't know what the alternative would be, besides something fundamentally less powerful, like datalog or sql.

SQL only gets you so far. For example, you can't do something as straight forward as logic based arithmetic in SQL.

<comment><USER3> Ah got it - thanks for letting me know. Do you know how popular logic languages are these days? I've watched a few talks on Datalog so it seems there's something there.

Agree with you on the SQL part and was just making the point that a lot of the intro Prolog examples can be done in SQL.</comment></comment></comment></comment></comment>


Show HN: A TodoMVC built with React Easy State (editable code example) - <AUTHOR> https://codesandbox.io/s/github/solkimicreb/react-easy-state/tree/master/examples/todo-mvc?module=%2Fsrc%2FtodosStore.js <comment><USER2> To this day, managing state in React remains an open issue.</comment>


Show HN: I pinged the Internet (IPv4) and generated a map - <AUTHOR> http://imgur.com/gallery/3oZxo <comment><USER2> That's rather interesting, thanks! Any info on date range and how long that took overall? The project and the pings

<comment><AUTHOR> The ping took about 4 hours and the image rendering took another 12 hours. A good suggestion I've received so far has been to do the pings at least once a day and then merge all the positive responses for a weekly snapshot instead of the one-time ping sweep. Note that I've done it in the past on an hourly basis and while there are changes in the number of responses based on time of day it wasn't huge.</comment></comment>


CSS Grid Layout: A New Layout Module for the Web - <AUTHOR> https://webkit.org/blog/7434/css-grid-layout-a-new-layout-module-for-the-web/ <comment><USER2> I don't mean to start a flame war, but I find it interesting that a site talking about CSS layout forces a horizontal scroll bar on my laptop's highest resolution (1366x768) because of the image size and layout.</comment>


Show HN: Finch Developer Tools – Save and Sync Chrome DevTools Styles - <AUTHOR> https://finch.io/chrome/ <comment><AUTHOR> Hey HN! I'm one of two developers at Finch. Thought the Chrome extension is far from perfect, we are super excited to show you what we've built so far. If you have some feedback/questions, I'm all ears!</comment>


LyX participates in the Google Summer of Code 2013 - <AUTHOR> http://latex-community.org/home/news/47-news-latex-editors/478-lyx-google-code

<comment><USER2> My suggestion: Make the LyX program capable of using online LaTeX compilers. (I posted this already to <http://tex.stackexchange.com/q/108283/213>).

This means having an API and usable connections to existing online services. I'm sure the vendors of such services would support it. So a user could simply install LyX, and benefit from the newest TeX version without installing it - slim but capable and up-to-date installations would be possible.

File storage services such as dropbox could be connected, the storage of an online compiling service used, or files could simply be uploaded each time when being compiled - LaTeX files are small, and compressed uploads or syncs would be quick.

<comment><AUTHOR> Then ports of LyX to iOS and Android would be great: so we could use LaTeX on the iPad or Android tablets when we have Internet via WiFi or 3G/4G available.

</comment></comment><comment><USER3> > Do you like the news? It would be great if you would upvote it on hacker > news! Keeps LaTeX in the news.

Oh, c'mon. Link it at the end, or even at the top, but with a "this post is also being discussed on Hacker News" or similar anchor. Don't blatantly pander for votes.</comment>


That "Five Monkeys Experiment" Never Happened - <AUTHOR> http://www.throwcase.com/2014/12/21/that-five-monkeys-and-a-banana-story-is-rubbish/ <comment><AUTHOR> ars posted this link as a comment in a separate thread, and given how often I see the "five monkeys and a banana" story tossed around, I thought this deserved more attention.</comment>


Ask HN: I'm interning in SF this summer. What do I need? - <AUTHOR>

As the title reads, I'm interning at a small YC-funded startup this summer, and I really need to know what I need!
I have never been to San Francisco before, but I have however been to the US (New York, Florida, Miami).
I really need to know the best way of dealing with various issues that I feel I might encounter.
I plan on getting an AT&T sim to pop into my iPhone to use whilst I'm out there for cheap communication. Is this a good idea?
What is the best way to manage my money? I'm guessing I can't open a bank account over there without a permanent residence, but I really don't want to have to pay to withdraw money from my UK based bank account. How can I achieve this?
Is transport between Palo Alto and SF center good? Is it affordable?
If you have any (yes, I mean any) advice you'd like to give me, I'd really, really appreciate it.
Thanks a lot guys!
jlt <comment><USER2> Good points by ChuckMcM.

I second the need to bring warm clothes, be prepared to dress in layers. If you're in Palo Alto most of the time it'll be 10-15+ degrees warmer (Fahrenheit) than SF so bring a mix of cool & warm clothes but again yes be prepared for cold evenings in SF.

Regarding transport between SF to Palo Alto, while it is easily accessible there are two things you need to consider. 1) Commute time: the commute between SF to Palo Alto is at least 35-45 minutes by car, commuting via CalTrain will be slightly longer 50-60 minutes. 2) Where you will live and work: 50-70 minutes assumes you live near the Caltrain station in SF and work near the Caltrain stop in Palo Alto, otherwise your commute can easily be 60-90 minutes one way. If you plan to be working 10-14hours days in Palo Alto you may reconsidering living in SF during this short stint.

Regarding managing money, not sure how long you will be here if it's just two months or so. Something I usually do when traveling, is use a credit card for most purchases. Then I withdraw cash from my bank account one or however many times needed but max the daily withdrawal limit each time to minimize fees as much as possible. You should quickly research which credit cards in the UK do not charge international transaction fees. Capital One does not charge international transaction fees.

</comment><comment><USER3> Warm clothes. Seriously, when the fog comes in it gets damn cold.

A CalTrain pass can get you between 4th and Townsend (the southern end of town, in the 'south of mission' area) and Palo Alto. There are cars with support for bikes, so if you ride your bike you can hope the train to ride south.

If you are a _serious_ bike rider you can check out the <http://sf2g.com/> stuff (Originally Googlers who rode from SF to Google in Mtn View) which has lots of resources for bike commuting to the 'south bay' from San Francisco.

It is also possible to take BART to the Milbrae Station and then transfer to CalTrain south to Palo Alto. The two stops CalTrain makes are 'University' (which is right next to Stanford (and you can pick up the campus busses there) and Calfornia.

AT&T is an ok provider as is Verizon. AT&T coverage in Cupertino around Apple HQ is excellent btw :-)

<comment><AUTHOR> Thanks Chuck, it seems transport is pretty decent in SF then - that's good news!

I really do appreciate your input, thanks again :)

jlt</comment></comment>


SCRIPT-8: An 8 Bit Fantasy Computer Programmed with Javascript - <AUTHOR> https://script-8.github.io/ <comment><USER2> Hello everybody, author here. I hope you enjoy my tiny project.

Regarding language, I chose Javascript for three reasons:

\- the (ab)use of `eval` lets you do all sorts of sorcery, like instant evaluation

\- the JS Redux library makes it easy to work with state, and I couldn't have implemented SCRIPT-8's time-traveling debugger without it

\- I dream in Javascript

I love Lua's small footprint, and very early on I considered writing SCRIPT-8 in MoonScript, which compiles to Lua and has gorgeous syntax. Maybe some day.

And yes, my fantasy computer is definitely not the only open source project, there's several out there, and probably all of them are more stable than mine. Go check them out.

<comment><USER3> > very early on I considered writing SCRIPT-8 in MoonScript, which compiles to > Lua and has gorgeous syntax. Maybe some day.

I know it's no longer considered hip these days, but why not support CoffeeScript?

It's easy to compile to JS on the client-side, so support should be much simpler than Lua or MoonScript. You could steal the trick TIC-80 uses to support MoonScript and say that starting a cassette with the string _" use CoffeeScript"_ marks it as a CS file. Then it's "just" a matter of an _if(String.startsWith( "use CoffeeScript\n"))_-check followed by an intermediate string-to-string compilation step, right?

[https://coffeescript.org/](https://coffeescript.org/)

<comment><USER4> Coffee Script is hell.

Apart from [https://github.com/usefulthink/coffeescript-from- hell/blob/m...](https://github.com/usefulthink/coffeescript-from- hell/blob/master/README.md), it takes the worst approach to spaces as syntax, because it doesn't enforce consistency, so with many devs you can end up with a file with two, four spaces, tabs all compiling but easily breaking. It has features their own syntax checker recommend not using, like defining objects without curly braces (which I think shouldn't even be a feature, but it was once so backwards compatibility)

Coffee Script tries to be beautiful without straying too far from Javascript and it ends up being an easily broken mess. I would then recommend either typescript or purescript.

<comment><USER3> Honest question: pointing out programming design warts that allow for WAT- level code[0] is perfectly valid, and I obviously prefer elegantly designed languages. Having said that, how realistic are the odds of being bitten by these issues when using CoffeeScript?

Also, if our point of comparison is Lua and MoonScript, how do those compare?

EDIT: regarding TypeScript and PureScript, can those be compiled in the browser? By which I mean, I'm sure they can _technically_ but do not-too-heavy implementations of such exist?

[0] [https://www.destroyallsoftware.com/talks/wat](https://www.destroyallsoftware.com/talks/wat)

<comment><USER4> > how realistic are the odds of being bitten by these issues when using > CoffeeScript?

In my experience, minimal if you know the language well and can work around its quirks. Having said that, I prefer working with a language that doesn't require much time to tame and let me do concrete work, at the same time holding my hand when necessary (because of time schedule and pressure and so on). This is less of an issue with private projects, but still there are no downsides in learning a tool that is great for both lone and team work, so there is no real benefit in using coffeescript when there are much more solid languages that compiles to Javascript out there. Hell even heard you can change Glasgow backend compiler to make haskell output Javascript haha

I can't answer about lua and moonscript, I'm completely unfamiliar with them.

About typescript and purescript being compiled in browser, I have never even looked into such approach, they feel unrealistic, because from the top of my head it would require a compilation tool written in JS, which is not particularly efficient for this kind of task that benefits from parallelization, specially if you are not doing deep checks, just translating code. Then there is the matter of what to do with the resulting code. Can we dump it into a file and load it programatticaly? I would be surprised if we could. Eval() the output? Not without some serious security checks that would further compromise performance.

So I believe there is no motivation in not pre-compiling and distributing the result dist code

<comment><USER3> > _About typescript and purescript being compiled in browser, I have never > even looked into such approach, they feel unrealistic, because from the top > of my head it would require a compilation tool written in JS_

Eh, not really: you could write the compiler _in any language that compiles to JS_ , then use the compiled output as your compiler. In the case of TypeScript or PureScript you could basically write a self-hosting compiler this way.

Walt is a compiles-to-WASM language that has partialy done so[0]. Its compiler written in JavaScript, and the generated compiler is also JavaScript. While not self-hosting, the guy developing it has rewritten _parts_ of it in WASM to figure out what the best language design for strings and related JavaScript interop would be.

> _which is not particularly efficient for this kind of task that benefits > from parallelization_

First of all, isn't WebPack written in JavaScript? Seems to do just fine.

Also, if we are talking about a somewhat modern browser that supports Web Workers parallelization is perfectly viable, no? Add Web Assembly and TextEncoder/TextDecoder in the mix and things could get even faster[1][2][3].

(The main performance issue I see is that due to SharedArrayBuffers being disabled (for now), each worker would need its own Uint8Array copy of the source input[4])

> _Can we dump it into a file and load it programatticaly? I would be > surprised if we could._

Saving a file is easy these days, just use a Blob[5].

> _Eval() the output? Not without some serious security checks that would > further compromise performance._

Creating Function object works. It just requires a string as input. I also don't see why this would be more insecure than compiling the same source string ahead of time - you end up running the same code. This isn't the typical user-context in which eval is dangerous.

> _So I believe there is no motivation in not pre-compiling and distributing > the result dist code._

You are arguing this from a _technical_ point of view, which misses the entire point. Namely, that client-side compilation allows for browser-based apps, demos, and sharing. It greatly lowers the threshold to trying things out.

You may dislike CoffeeScript, but being able to try it out in the browser is quite a good sales pitch[6].

For a more ambitious example: Observable is a notebook environment similar to IPython, but for JavaScript, and with one of IPython's biggest quirks removed: cells track dependencies on other cells and re-evaluate as necessary[7]. The server is there for cloud storage and remote collaboration, allowing you to instantly share the notebook. However, I think it does most, if not all of its compilation client-side, since it still works when you are temporarily off- line (also, Jeremy Ashkenas is part of the developer team).

The aforementioned compiler for Walt can easily run in the browser, so last year I tried combining the two. It took me only a couple of hours to get it working[8].

Of course, you lose the benefit of a developer environment _made_ for the language (but IIRC supporting compiles-to-JS languages is on the long-term Observable roadmap), but still: being able to quickly try out some simple WASM code without needing anything except a modern browser is quite powerful.

[0] [https://github.com/ballercat/walt](https://github.com/ballercat/walt)

[1] [https://dzone.com/articles/webassembly-web- workers](https://dzone.com/articles/webassembly-web-workers)

[2] [https://developer.mozilla.org/en- US/docs/Web/API/TextEncoder](https://developer.mozilla.org/en- US/docs/Web/API/TextEncoder)

[3] [https://developer.mozilla.org/en- US/docs/Web/API/TextDecoder](https://developer.mozilla.org/en- US/docs/Web/API/TextDecoder)

[4] [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer)

[5] [https://developer.mozilla.org/en- US/docs/Web/API/Blob/Blob](https://developer.mozilla.org/en- US/docs/Web/API/Blob/Blob)

[6] [https://coffeescript.org/#overview](https://coffeescript.org/#overview)

[7] [https://beta.observablehq.com/](https://beta.observablehq.com/)

[8] [https://beta.observablehq.com/@jobleonard/compiling-walt- in-...](https://beta.observablehq.com/@jobleonard/compiling-walt-in-the- observable-experiment)

</comment></comment></comment></comment></comment></comment><comment><USER5> I find kind of disingenuous that the page does not mention PICO-8 at all, which is the obvious inspiration for this project, starting from the name. Many people who are in the scene, as it were, do know PICO-8 and know to draw the parallels, but it'd still be nice to link back to [https://www.lexaloffle.com/pico-8.php](https://www.lexaloffle.com/pico-8.php) somewhere...

<comment><USER2> That's a fair point. SCRIPT-8 is inspired by many projects, and PICO-8 is definitely one of them. I'll make sure to add a note.

</comment></comment><comment><USER6> I'm an avid Pico-8/fantasy computer fan, and this is a really nice project. There have been quite a number of fantasy consoles coming out within the past few years, so it's nice to see one that offers features that the others don't, rather than simply "Pico-8, but with a twist". The live coding window and sliders in particular are simple things that increase QoL.

Others have noted that the use of JS is somewhat of a turn off, but even as a big Lua fan myself, it doesn't really bother me, I already have one (probably more than one) Lua fantasy console that covers my wishes. However, the author's comment here did mention adding MoonScript support, which would be something I would be very interested in.

</comment><comment><USER7> This looks incredible ! Real time editing, time travel ... and integrated sprite, map, and music editors are a real plus. Only thing is the default color palette that is great but I wonder if we can change it ?

For people complaining about JS vs Lua : go have a look at Amulet. This is not a fantasy console but also has an online editor and is perfectly suited for retro games. Just have a look at "Defender of the Weeping Quasar" in the example section : [http://www.amulet.xyz/editor.html](http://www.amulet.xyz/editor.html)

<comment><USER2> Thank you for the kind words. I have no immediate plans for changing the palette, but you should open an issue here [https://github.com/script-8/script-8.github.io](https://github.com/script-8/script-8.github.io).

</comment></comment><comment><USER8> Interesting how different people arrive at similar ideas. Many years ago I created a retro-like "virtual computer" in Java, called simpleJ, to let teenagers learn how to program by creating simple arcade games. It also had an IDE like environment, with a step by step debugger that could draw a diagram of run time data-structures (arrays, linked lists, trees, etc.), a tile editor, a sprite editor, and a even a book teaching you how to program a video game. You can take a look at it at [http://simplej.com/](http://simplej.com/) (in Spanish).

</comment><comment><USER9> This is exceptional - an online IDE with tutorials, sprite and tune editor, interesting code examples and little games to hack on, even an upload to share feature.

It only looks a bit ~dusty due to the sepia pallet, should be good to have other choices like a neon hue, and even free custom selection. But hats off here, this is a great resource !

</comment><comment><USER10> For those wondering, the biggest differentiator of this from PICO-8 is that this is open-source and PICO-8 is not.

<comment><USER11> No it's not. TIC-80 is open source and there are other open source fantasy consoles. The killer feature here is the Bret Victor inspired live coding support.

</comment></comment><comment><USER12> My main minus to this is not that it's JS(I'm building a JS fantasy computer too) but that it's a node/react piece, which inspires zero confidence that it will have anything resembling foundational stability in the future.

</comment><comment><USER13> I'm super jazzed about this. Wonder if there's anything gained by compiling to web assembly? Thanks for making this.

<comment><USER14> I'm sorry, did you say _jazzed_?

<comment><USER15> You can just go reread it. There's no need to apologize.

<comment><USER14> It's a LEGO Batman quote.

</comment></comment></comment></comment><comment><USER16> Unlike most, I don't see a problem with it being Lua or JavaScript. I'm just curious why people pick such high-level languages in the first place. I'm planning to make a fantasy computer myself (basing it off the z80), and would never think to make it scriptable in something other than machine code.

<comment><USER17> Because we had BASIC on 8 bit home micros and those languages are the natural successors.

<comment><USER18> But BASIC on those computers was interpreted, and thus far too slow. Even the C compilers weren't that great. Every real game, AFAIK, was written in 6502 assembly.

<comment><USER17> True, yet it made lots of kids happy to try out programming their own games and now they work across the industry, including myself.

Not everything is about the ultimate performance.

<comment><USER16> The point is that it's not "javascript interpreted in machine code", which in my opinion would make these computers far more fun, otherwise they're just fancy game frameworks.

</comment></comment></comment></comment></comment><comment><USER19> It's nice but why does it seem to have lower resolution and fewer colors than actual 8 bit computers?

</comment><comment><USER20> Is there a sample game to view?

<comment><USER2> There are game-like demos:

\- [https://script-8.github.io/?id=07b50badd10dc9be002ecb9f9031f...](https://script-8.github.io/?id=07b50badd10dc9be002ecb9f9031f3f0)

\- [https://script-8.github.io/?id=cd8d6811adb3afb472aaf7505729c...](https://script-8.github.io/?id=cd8d6811adb3afb472aaf7505729cf01)

\- [https://script-8.github.io/?id=7f370bc716aff805f593a3f800087...](https://script-8.github.io/?id=7f370bc716aff805f593a3f80008711f)

</comment></comment><comment><USER21> Nice project! It would be great to have on-screen gamepad on mobile!

<comment><USER2> There's an issue for this: [https://github.com/script-8/script-8.github.io/issues/41](https://github.com/script-8/script-8.github.io/issues/41)

</comment></comment><comment><USER22> Congrats, excellent work, I'll be exploring...

</comment><comment><USER23> The time-traveling and live editing features make this incredible.

When I get the time I'd love to replicate this in Go (since I'm trying to learn Go at the moment). Nice work!

</comment><comment><USER24> I love absolutely everything about this except the language choice.

<comment><USER25> What's an alternative that doesn't make massive sacrifices to the feature set?

<comment><USER26> I think Lua is a wodnerful langauge, highly embedable, great feature set/style, quite fast, really lightweight. Pico-8 had it right in everything but the license.

</comment></comment></comment><comment><USER27> "8-bit"

You keep using that word. I do not think it means what you think it means.

Javascript has no 8-bit types, nor does it have memory limits that 8-bit machines had. Pixelated graphics are cool and all, but it does not place you in the same league with people who made games fit in 128 bytes of ram and 2K of ROM, sorry!

<comment><USER28> Other than the phrase 8-bit fantasy, I couldn't find the phrase 8-bit anywhere on the linked page.

<comment><USER27> title of submission is " SCRIPT-8: An 8 Bit Fantasy Computer"

<comment><USER29> There is a big difference between a 8 bit computer and a 8 bit FANTASY computer. But you don't get it, sorry!</comment></comment></comment></comment>


Witness says officers never gave commands before firing at antifa suspect in WA - <AUTHOR> https://www.oregonlive.com/crime/2020/09/witness-says-officers-never-gave-commands-before-firing-at-michael-reinoehl-outside-wa-apartment.html <comment><USER2> ""Officers shot multiple rapid-fire rounds at Reinoehl before issuing a brief 'stop' command, quickly followed by more rapid-fire shooting by additional officers," according to the statement.

Dingess said he never saw a handgun on Reinoehl or saw him reach for anything."

Scary stuff.

<comment><USER3> "Police have said Reinoehld was found with a handgun but have not said if he fired any shots at officers."

"At 4:49 p.m. last Thursday, a Multnomah County judge had signed a warrant for Reinoehl's arrest on charges of second-degree murder with a firearm and unlawful use of a firearm"

Cherry picking quotes can lead to whatever conclusion you prefer.</comment></comment>


Revolutionary browser on Kickstarter - "PolyBrowser" - <AUTHOR> http://polybrowser.com We (at PolyScomuite) are developing an innovative browser, called PolyBrowser, that transforms how people use the web. It's the first browser that lets you see and control all of your websites simultaneously, significantly accelerating how you search and browse the web. With PolyBrowser, your websites are spread out horizontally like cards on a table, enabling you to move through them quickly and easily.
PolyBrowser is currently 80% complete, and to help get it to the finish line, we've launched a Kickstarter campaign (at http://PolyBrowser.com). Please share this, and you can even pledge for free to show support (we are refunding the first 100 backers)... Every backer shows that there is community interest. We would be grateful for any assistance.
Many Thanks, Aaron T. Travis, MBA, CUA CEO PolySuite.com <comment><USER2> The idea is cool and the browser looks like it would have some pretty neat features. But realistically I feel like there's already Google plugins and extensions that will let me do the majority of things shown in the video.

Not to bash on the product, but the logo also reminds me of and makes me feel like I'm using a spam filled search engine that's going to add yet another junk tool bar to the top of my browser.

Definitely love the idea of revolutionizing the web browser though.</comment>


Several Hundred Thousand Germans Opt Out of Google Street View - <AUTHOR> http://www.readwriteweb.com/archives/hundreds_of_thousands_of_germans_opt_out_of_google.php <comment><USER2> (note: I live in Germany)

This never made sense to me. Prior to Street View, at least two German companies did the same thing (photographing every street with essentially the same technology,and putting it online). Noone complained. Now that Google is doing it, it's suddenly a huge privacy nightmare. I just don't understand.

<comment><USER3> Could you link to the companies doing that? I never heard of them, even though I'm from Germany.

<comment><USER4> Das Telefonbuch have a system where you can look up someone's name in a town, and list their address and provide links to view satellite images of the street:

<http://www.dastelefonbuch.de/>

If Germans were _really_ more conscious of privacy then I suspect they'd be worried about this, but as previous posters have said it's more down to misinformation and exaggeration.

<comment><USER5> Das Telefonbuch has _aerial_ images, that's very different from street-level images on Google Street View.

<comment><USER6> Correct. Ariel images show you things that are not visible to a driver or pedestrian. Much bigger privacy risk if you actually thought about it for a second...

</comment></comment></comment></comment></comment><comment><USER7> I'm always amazed to see this come up again. (I do live there) The irrationality culminates when people are interviewed by local newspapers, which then put them in front of the or home in a huge image right above the article where they complain about the privacy issues they have with Google photographing their home.

On a final note there is a short enjoyable parody od the situation from the leader of the political party THE PARTEI, about Google "Home View" (<http://www.youtube.com/watch?v=gYMGkQTpODY>) language is German, though I assume one can follow easily without knowing any German. I haven't found a transcript nor English version. :(

<comment><USER8> "DIE PARTEI" is no real party but an act of comedy / form of satire (they weren't allowed to participate in national elections).

</comment></comment><comment><USER9> "Nazis' Gestapo and the East German Stasi secret police"

Ooops - it seems many people might not realize that Street View images are not live. There was also another statement in a newspaper here (Germany) where some police officers were considering if they could do virtual patrols. Misinformation leads to fear...

I think in the long run, the opposite thing will be much more important: people will fight to be IN street view. If you are a shop owner, not being on street view will be a significant disadvantage.

Not only will outdated pictures be a problem, but also the people living above your shop who opted out of Street View.

</comment><comment><USER10> To put things into perspective: Google has a 97% market share for search here in Germany, IIRC. Don't know the other numbers, but they are probably quite high for online video, too.

Also, I'd say, people here don't have the blind faith, U.S. people seem to have concerning cooperations and free markets.

Under these circumstances, it shouldn't be a surprise that Germans are reluctant to watch some large cooperation build another potential monopoly out of other people's "property" -- namely their privacy.

<comment><USER11> That again? How can photographs taken from public places be your property? How do you have a right to stop anyone, including Google, from taking them?

<comment><USER10> Well, there are some different questions:

First, do they have a right to use a camera mounted in a height above the normal eye level? Why should people be required to adjust the height of their fences to protect themselves from Google's view? Just because there are no laws against this yet, doens't mean Google has a right.

Second, even if they have the right to make the photos, do they also have the right to automatically make them public? There's no human judgement involved, so who's responsible when Google camera catches you naked while sun-bathing in your own garden? Who can be sued for taking these images down and who's paying for the damage that is created while the photos were online?

Third, do the have the right to connect the photos with street addresss so the views are searchable? This decreases search costs and your home will be public not just to bypassers, but to anyone. Who said, they are allowded to do that?

And this is the point: They asked noone but just though they could act as if they are free do however they please. This may work in the U.S. but this doens't work here. Or, at least, that's not how it should work.

<comment><USER11> 1\. Three meters is not an unreasonable height, that's about your eye height in a bus. People already don't have a reasonable expectation of privacy from cameras that height.

2\. They have the right to make them public. It's right there in the law. And if something goes wrong you can sue Google - they are responsible, they have a German address and all.

3\. It's not illegal. You don't have to ask anybody.

Google can take photos in public and I don't want anyone to take that right away from Google because at the same time my right to do the same is also taken away. Can't you see that? You also seem to have a poor understanding of the current legislation in Germany.

<comment><USER12> I'm sorry, I find it grossly naive that you believe a photograph taken from beyond the legislated _privacy_ fence height in most jurisdictions to be not unreasonable. Of course people don't have a reasonable expectation of privacy from 3 meters tall, they have a reasonable expectation that people will respect the spirit of the law and not be a raging moron and _place_ a camera at that height.

I do know that in many jurisdictions, probably including Germany, that it is completely 100% illegal to profit from your photography of another person without their _written consent_. Given that Google photographed several of my friends, didn't get them to sign a released and _is_ making a profit off of its unconsented photography it _is_ violating the law.

So, just for clarification. Google is violating the law in many jurisdictions. I'm unsure about Germany, but I know they are in the UK and Canada even though no charges have been brought. Perhaps because Google isn't specifically trying to make a profit off of the personal images they have taken, but under the letter of the law they are completely violating it at the moment. This is perhaps why they are working on software to remove people from their photographs, because they already know they're breaking the law.

<comment><USER11> It's perfectly legal to profit from photos which happen to have people in them without any consent, written or otherwise. And I damn well hope that it stays that way.

<comment><USER10> Nope: <http://de.wikipedia.org/wiki/Recht_am_eigenen_Bild>

<comment><USER11> Sigh. Doesn't apply.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I'm currently in Germany. When I left the US everybody was talking about Google's net neutrality issues. In Germany those things were barely even mentioned.

I think this alleged "street view scandal" covered up the whole net neutrality scandal (which IMHO is much more important).

</comment><comment><USER14> Premium-grade FUD, really interesting to observe (I live in Germany). What I find interesting is that while no direct legislative action is being taken by politicians on this front, they generate so much noise in the media that people are opting out all by themselves. Sneaky because you can't even actively arbitrage against this.

</comment><comment><USER15> This is a relevant blog post from Ed Parsons, one of the guys that Google pays to think and talk about Geo-related stuff:

[http://www.edparsons.com/2010/09/germany-doomed-never-to- inn...](http://www.edparsons.com/2010/09/germany-doomed-never-to-innovate/)

</comment><comment><USER16> We need an analogue of 'robots.txt' for the real world.</comment>


Ask HN: What's your startup or product? - <AUTHOR>

I'm getting ready to launch my first rails app, and I thought it would be interesting to hear about the software projects people are developing. It's amazing and inspiring to see what problems people are solving through software. So, what product or app have you developed or are you working on? It can be anything from a full-blown startup to a small side-project to a quick hack. <comment><USER2> I'm working on a side project where you can configure various Linux server setups by answering a few questions. It will automatically generate the proper config files and install the software for you. Similar to AWS Marketplace, but more geared towards single installs for dev or production servers.

<comment><AUTHOR> What you're working on sounds like it will make hosting much easier. Keep up the great work!

</comment></comment><comment><USER3> Edit Room is the fastest way to build production-ready responsive web design prototypes.

<http://www.edit-room.com>

Solo founder, bootstrapping in my spare time. Rails and lots and lots of Javascript. Ask me anything!

<comment><USER4> Really cool, you should re-post as "show HN" (recommend later in the day) and make an effort to get exposure on the front page.

<comment><USER3> Thanks, look for it in a couple of weeks at the latest.

</comment></comment></comment><comment><USER5> <http://neufit.com> We are launching at TechCrunch Disrupt SF next month. NeuFit is a social fitness entertainment platform. We are looking to solve the issues of chronic diseases caused by obesity and a sedentary lifestyle by delivering a platform that lets users encourage and motivate each other to get and stay active. We've partnered with device manufacturers and mobile app companies to integrate their products as well. For instance if you are a RunKeeper user or have a Fitbit we automatically pull in your actvity data. We translate your real-world activity into fun game mechanics that allow you complete quests, challenge and motivate others and earn real world rewards.

</comment><comment><USER6> We just launched our ReKognition API - best Face.com alternative. (Face Detection/Recognition, plus Gender)& Scene Understanding. And, will launch our 1st App by the end of this Month. <http://rekognition.com/>

<comment><USER7> I was playing with your demo page and was curious, how do you handle gender classification? Follow-up would be what are you results in broad ethnicity recognition (based on what I've seen, I can tell you at least tried it). Any attempts into age?

<comment><USER6> Thanks for testing our api.

We have trained our system so that it knows typical/common female and male facial features.

Our machine learning algorithm will generate a score from 0.0 to1.0 representing gender.

We are still tuning our age and emotion recognition. We will release (most likely in just a couple of weeks) it when we feel it's good and reliable enough for public use.

</comment></comment></comment><comment><USER8> Just finished the minimum viable prototype for a identity and permissions brokering network: [http://www.youtube.com/watch?v=yLU1TJmMSjo&feature=plcp](http://www.youtube.com/watch?v=yLU1TJmMSjo&feature=plcp)

I'll be initially offering services such as single sign on and aggregated micropayments... think being able to charge as low as $0.25 / month / user for your service, without requiring users to sign up for a long period (which can hurt signup rates) or being hit with a $0.30 fee per transaction.

You can poke at the first demo yourself at <http://prototype.projectmaelstrom.com>

<comment><AUTHOR> Neat. What types of scenarios do you see where site owners would be looking to charge people very low prices for software like $0.25/month?

<comment><USER8> My first target market will not necessarily be for software, but for subscriptions to content. I'm thinking webcomics, small online news outlets, professional blogs, etc. Anywhere that is traditionally supported by advertising.

<comment><AUTHOR> Ah, okay. That makes sense and sounds like it has the potential to be pretty lucrative.

</comment></comment></comment></comment><comment><USER9> I'm working on creating a "School of Crossfit" <http://wodacademy.com> to bring functional fitness and nutrition to those who don't have the time or the funds to pay for high quality personal training.

<comment><USER10> Interesting. I'd suggest focusing more on benefits (get in shape, feel better, whatever) that "learn about the WOD" on your splash page.

<comment><USER9> Yeah I agree... I'm still working through the concept and I've landed on the Coadcademy for Fitness and Nutrition.

</comment></comment></comment><comment><USER11> A meta-startup, rapid web application development for early stage entrepreneurs. Prontotype - <http://prontotype.us/>

<comment><AUTHOR> Thanks for sharing! What do you mean by rapid web application development? Does Prontotype have a drag-and-drop interface or does it involve programming?

<comment><USER11> Well Prontotype isn't a product, it's a service -- we do the web development (rapidly) for clients.

</comment></comment></comment><comment><USER12> Working on <http://rapidslides.com> \- a way generate business presentations based on visual input such as photos, whiteboards, flip charts & sketches. We use your CI / your website as basis and deliver the result back to you in max. 24h.

</comment><comment><USER13> Will soon be launching site with information on products releasing in the future and to gauge level of anticipation of people.

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

Wish you the best of luck with your app!

<comment><AUTHOR> Thanks for the kind words! What you're working on sounds neat; is it focused more on tech products than physical products?

</comment></comment><comment><USER14> I created and am continually improving Indie Intern which is software intended to help filmmakers go from script through production.

<http://www.indieintern.com>

You didn't say what you were working on.

<comment><AUTHOR> Thanks for sharing your site. I'm not someone who produces or films movies, but I do have some friends that enjoy making movies.

I'm working on an application called PillHQ, which will be a reminder service to help people remember to take their medications.

</comment></comment><comment><USER15> SeedTG is like a wider breadth yC clone focused on transgender founders, and is designed to bring down the high unemployment rate in the transgender community as a long term side effect of helping trans-owned businesses become successful. Seedtg.com/wordpress

</comment><comment><USER16> I'm working <http://officecheese.com>, a community on a mission to help increase smile count in the work environment through funny jokes as well as resources on how to be funny and stay positive.

<comment><AUTHOR> Very nice! I think this could help out lots of different offices.

</comment></comment><comment><USER17> We're working on a realtime filtering engine for Twitter. Think "gmail filters + labels", but for Twitter. <http://tweetdig.com>

</comment><comment> adam-_- I'm still assessing the viability of a new social media analytics and monitoring solution - <http://twitcherhq.com>

<comment><USER18> I was thinking that I have seen that design somewhere and I was right.

[https://wrapbootstrap.com/theme/its-beta-landing-page- WB00G9...](https://wrapbootstrap.com/theme/its-beta-landing-page-WB00G9306)

<comment> adam-_- Yes I needed something To get started quickly. I highly recommend buying a template.

</comment></comment></comment><comment><USER19> I help families finding home-care help for their loved ones.

<comment><AUTHOR> Thanks for your response! What you're doing sounds very rewarding and interesting. I'm assuming that the families you are helping have loved ones who are elderly or may suffer from conditions that prevent them from properly taking care of themselves. Is this the market you're addressing?

</comment></comment><comment><USER20> Mobile Data Collection for the Vernacular Languages world: MobQuery : <http://www.mobquery.com>

<comment><USER21> You might want to work on your pitch ;)

<comment><USER20> Realised. Cut short. Thanks.

</comment></comment></comment><comment><USER22> Helping you make fact-based trading decisions at TradingClearly - <http://tradingclearly.com/>

</comment><comment><USER23> Working on a personal finance startup here in Sydney, Australia - <https://www.pocket.bo/ok>

</comment><comment><USER24> Record and share your gameplay <http://everyplay.com> launched just a few days ago.

</comment><comment><USER25> Resumonk - <http://www.resumonk.com> \- Beautifully simple online resume builder

<comment><AUTHOR> Wow, the design for Resumonk is beautiful and the functionality looks great as well. May I recommend requiring people to pay for the product up-front instead of doing a free offering? I feel business-wise that freemium might not be as profitable. Of course though, I could be wrong!

</comment></comment><comment><USER26> I'm working on advertising supported niche tools/game aides on Android. Though honestly, that's more a vehicle to build my resume.

<comment><AUTHOR> That sounds good. Building apps to boost your resumé is never a bad thing.

</comment></comment><comment><USER27> Add filters to your facebook photos and mail photo postcards. <http://airbrush.io>

<comment><AUTHOR> This looks pretty cool; thanks for sharing!

</comment></comment><comment><USER28> We're doing some crazy AI-powered music recommendation service based on user location, activity, mood and some other stuff.

</comment><comment><USER29> We are a daily deal platform. We host Groupon clones: <http://www.zuupy.com>.

<comment><USER4> Since most of the people who are going to be your customers will likely not be in the business long (let's be realistic), why not charge a large up front fee for them to purchase the software as opposed to letting them pay a monthly subscription? The daily deal business is extremely difficult (I work at livingsocial) and most of those clones won't last more than a couple months.

<comment><USER29> Because that's not in our interest long term. If we charge upfront a large amount (and inevitable disincentivize ourselves from providing great support and upgrade to them thereafter -- which are crucial since it's an "extremely difficult" business), we will get negative word of mouth that will not be great for our sales and marketing.

</comment></comment></comment><comment><USER30> Working on "helping you drive economically, everywhere". <http://www.mylpg.eu>

<comment><AUTHOR> This looks like a great tool. I think changing the domain name might be a good idea since some people may not infer that mylpg = miles per gallon.

<comment><USER31> nitpicking: mylpg = my Liquified Petroleum Gas, as this is a site for lpg- fueled cars. Also, given the context of the site (x stations in Europe, .eu TLD), it's unlikely he'd want 'mpg' in the domain name as Europeans don't use miles or gallons.

</comment></comment></comment><comment><USER32> Review19 - <http://review19.com> \- Collaborative decision making for teams

<comment><AUTHOR> Thanks for sharing. Review19 looks interesting and the site design is fantastic. Keep up the great work!

</comment></comment><comment><USER33> We are online test and interview platform. <http://simplyhire.in/>

<comment><USER34> Service Temporarily Unavailable

<comment><USER33> Sorry for unavailable. I am in process of moving the website to new datacenter. You can check back in 12 hours. I don't know why linode is so slow for traferring machine.

</comment></comment></comment><comment><USER35> <http://www.sofreakinannoying.com> \- a place to vent</comment>


Conduct a short coding interview, remotely - <AUTHOR> http://i.seemikecode.com/

<comment><USER2> There are a number of sites that do stuff like this, and I think that the way in which this one is superior is that the tab key functions in more or less the expected fashion.

i have both interviewed and given an interview using a different one of these, and there's nothing more frustrating on either side than listening to someone swear under their breath at the tab key switching up the dialog boxes and hitting the space key like it was going out of style.

</comment><comment><USER3> This is actually a really good idea! I wonder if there is a more full-fledged solution where the code can be actually compiled and the output returned from the web browser. This might be a pretty good startup idea in the making.

<comment><USER2> there was one that did this on HN a couple of weeks ago.

<comment><USER4> care to share the link to it ?

</comment></comment></comment><comment><USER5> looks cool, though i feel like etherpad (now open sourced) solves this problem</comment>


Chutes and Ladders: Basics on Markov Chain (for parents) - <AUTHOR> http://www.r-bloggers.com/basics-on-markov-chain-for-parents <comment><USER2> Pardon me but is that really for parents or am I just a dumb? I am an undergraduate student but I'd expect a more human friendly explanation on this topic.

<comment><USER3> Basically, for each turn you calculate the probability that the pawn is on a given square. You can then calculating the probabilities for the next turn by applying all possible moves to all possible positions, while weighting for the chance of the position and the chance of the move.

</comment></comment><comment><USER4> For parents that were mathematics majors

</comment><comment><USER5> They come up with an expected number of rolls-to-complete of 32. This surprisingly large number is why that game tends to drag on forever.

<comment><USER6> It is not that surprising. If you leave out all the snakes and all the ladders, the rolls-to-complete is 100/3.5, or about 28.5. So, it seems the average loss due to snakes is larger than the average gain due to ladders.

<comment><USER5> Yes, I realized this simple explanation only after doing the Markov chain analysis myself a couple years ago.

But for some reason, looking at the game, you don't think it will take so long.</comment></comment></comment>


Why race science is on the rise again - <AUTHOR> https://www.theguardian.com/books/2019/may/18/race-science-on-the-rise-angela-saini <comment><USER2> Racism is on the rise and ironically one of the worst offenders is Israel, a literal ethnostate that has sterilized Ethiopian Jewish immigrant women without their consent and forced male Chinese laborers to sign "no sex" agreements</comment>


Texttop – An interactive X Linux desktop rendered in TTY and streamable over SSH - <AUTHOR> https://github.com/tombh/texttop <comment><USER2> Author here. Surprised to see this here as I've been literally spending the last 2 weeks on a complete rewrite from scratch that actually layers REAL text over the blocks. You can get an idea of my approach with this function: [https://github.com/tombh/texttop/blob/webext- rewrite/webext/...](https://github.com/tombh/texttop/blob/webext- rewrite/webext/src/text_builder.js#L165)

After the success of hitting the front page here last year, I really wanted to sit down and do this properly. So not only am I working on real text support (that you can of course copy and paste without even zooming). But I've removed the dependencies on ffmpeg, Xorg (for Firefox at least - Chrome strangely doesn't support webextensions in headless mode), docker AND it will work on all webextension-compatible browsers. It's going to be a single cross- platform, static, Go binary, that launches your preferred browser in the background.

Generally it's bad luck to talk about something before it's finished, but seeing as it's suddenly on the front page I wanted to let all those interested know that I'm making this 10 times better. And an early apology, because I'll definitely be posting the rewrite (and rename) here and hoping to get all your attention again.

<comment><USER3> You might get a slightly better resolution with the approach taken here: [https://github.com/stefanhaustein/TerminalImageViewer](https://github.com/stefanhaustein/TerminalImageViewer) (= find best matching block graphics character for most prominent colors in a cell; there is a comparison to half blocks at the end).

<comment><USER4> Cool, TIV looks great! (Just compiled, ran, and tested it.)

I thought [cacaview]([https://github.com/cacalabs/libcaca](https://github.com/cacalabs/libcaca)) was the only terminal image viewer player in town with their attendant `cacaview' prog. I'd very much appreciate it if anyone here knows of any other libs or especially the sanest way to do this in either C/C++ or Ruby … It's for a terminal-based project I have in mind :)

<comment><USER3> Some alternatives are listed in this askubuntu thread: [https://askubuntu.com/questions/97542/how-do-i-make-my- termi...](https://askubuntu.com/questions/97542/how-do-i-make-my-terminal- display-graphical-pictures/)

</comment></comment></comment></comment><comment><USER5> While the geekery is really really cool I also wonder if this method can be beaten with the best in video comepression. Extremely low bandwidth encoding perhaps provides better results (if you put cpu/gpu load aside), for example see this x265 example over 50 Kbit/s. [http://wp.xin.at/archives/4020/comment- page-1](http://wp.xin.at/archives/4020/comment-page-1) People are watching Netflix in low quality in 100-200 Kbit/s. With the upcoming AV! (AOmedia Video 1) it gets even beter. Another avenue is Citrix/RDP connection work ok over 30-50 Kbit/s. Then there is the counterpart FreeRDP. Wouldn't FreeRDP be the preferred solution here, except then that Mosh solves the potential latency issue? With linux desktops running on low power clients already, why bother? Does it use less battery life so you can get 48 hours surfing the internet in the mountains or forest while the solar powered server runs at home?

<comment><USER2> I certainly think you can get close with video. But one of the things about this method is that I wanted it to be as universal and as accessible as possible. As in: accessing a fully modern JS-enabled browser over just an SSH client.

</comment></comment><comment><USER6> I did project with Webkit that renders to the terminal:

[https://github.com/callesg/termkit](https://github.com/callesg/termkit)

<comment><USER2> Waat! We need to talk - I'm taking a very similar approach in my rewrite. There are some very interesting algorithm problems. Eg; I'm actually comparing pixels in 2 screenshots --with and without text rendered--, in order to get text colour and visibility. This way is actually more performant than using `getElementAt(x, y)` and `getComputedStyle(element)`.

<comment><USER6> I rewrote mine to. One big problem i hit before rewriting was performance and also css :after classes they are not reachable in the DOM if I remember correctly. So I resorted to patching phantom to give me access to the WebKit render tree.(which is a tree similar to the Dom tree but not the same.

I can't remember if there was some big issue that eventually made me stop developing. I think the final issue was characters with dual width like many Chinese characters the gui library blessed did not understand the concept of characters with non standard width and a single such character would destroy the entire layout. And issues with correlting the render tree and the Dom tree.

<comment><USER6> Now I remember the main problem before switching to the render three was text rows. there is no good way of knowing where a text line will break without resorting to the render tree or to use some form of ocr.

<comment><USER2> Ah yes, that was a big hurdle, but that's actually fully supported now with DOM Ranges - basically codified selection boxes, those regions that highlight when you select with a mouse. There's still some extra leg work though to render whitespace in the same way as the browser.

<comment><USER6> I did that to if you are referring to getBoundingClientRect & getClientRects, before I switched over to the render tree.

It does work perfecly for single line text but not multi line text. The rect will become larger than the text and you won't know where each line starts.

Well that is what I remember happening.

<comment><USER2> Oh! Sorry I just assumed they weren't around then. That's really interesting to know. Hey could I have a chat with somewhere, IM, or something? Would be really good to hear your story with this.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Previously on HN: [https://news.ycombinator.com/item?id=11744221](https://news.ycombinator.com/item?id=11744221)

</comment><comment><USER8> It uses Xvfb, ffmpeg, hiptext (with fixes from the author), and a custom interfacer written in go, which employs xzoom in C and termbox-go (with fixes from the author).

The interfacer alone looks fun, seems like I can control a remote X session via ssh.

</comment><comment><USER9> This looks amazingly cool!

And I apparently starred the repo previously, but don't remember ever having seen this particular badass shit before.

Am I losing it?

<comment><USER10> If your situation is anything like mine, it goes much more like: "oh, neat; I'll look at that tonight" followed by a browser bounce, or something else becoming a _bigger_ priority, lather, rinse, repeat.

There is so much great content -- both "empty calories" and otherwise -- that it is so easy to get buried under it. I came to HN to retrieve _one specific link_ and ended up with 7 new browser tabs open, counting this one.

<comment><USER11> HN Tabs are like an unstoppable cancer. I'm on XFCE and I have a whole workspace dedicated to over a year's worth of articles, books, discussions, etc from HN that "I'll eventually get around to reading".

<comment><USER12> I use [https://www.linkpack.io/](https://www.linkpack.io/) on iOS as my black hole for links.

<comment><USER13> Didn't know about that one. Pocket would also work, esp if you're using Firefox. Also works on the Kobo e-reader.

Other options I'm aware of are conventional bookmarks, and OneTab.

</comment></comment></comment></comment></comment><comment><USER14> [https://github.com/HouzuoGuo/headmore](https://github.com/HouzuoGuo/headmore)

Another interesting project, that's similar, but for VNC.

</comment><comment><USER15> Finally, good news in the world of computing. The zoom function is a nice touch...

</comment><comment><USER16> I expected this to be an elaborate joke, but the author obviously has a good use case for it. That is quite ingenious!

</comment><comment><USER17> > Why not VNC?

Why not ssh -Y and use X protocol as intended?

<comment><USER18> > sometimes I don't have very good Internet. If all I have is a 3kbps > connection

I don't think X would handle that very well, and you may not have an X server at the other side.

<comment><USER19> 3 kbps is not enough for smooth TTY text-only ssh either...

<comment><USER20> I've done pretty productive work over much tighter links than that. Think 300bps.

One of the systems I'm responsible for currently can only be reached over a 1200bps dialup connection.

<comment><USER19> But does this work require full refreshes of 80x24 screen or larger?

</comment></comment></comment></comment></comment><comment><USER21> Hmm I wonder how many of these I can run at the same ti

</comment><comment><USER22> For more detail, there's sixels, see [https://github.com/saitoha/libsixel](https://github.com/saitoha/libsixel)

<comment><USER2> I did look into that, but it's not as widely supported as the UTF8 half-block.

<comment><USER23> With many bytes necessary to print just six pixels, it wouldn't be as low- bandwidth, right?

On the other hand, how about libcaca? [https://en.wikipedia.org/wiki/Libcaca](https://en.wikipedia.org/wiki/Libcaca)

<comment><USER2> The TTY "graphics" rendering is actually relatively trivial, it's really just a few lines of JS in my rewrite now. So there's no need for an external rendering lib. Also with the new approach, I'm focussing on real text as the main feature, so you'll actually be able to turn off the colour blocks and just surf the web as raw text, with all the goodness of full CSS rendered, realtime text and JS.

</comment></comment></comment></comment><comment><USER24> Wow. I definitely like the Idea.

After reading the first few paragraphs i also finally understand why it would be such a great idea to have a blocky firefox.

</comment><comment><USER25> This is awesome, I've always wanted something like this. Zoom is the killer feature.

</comment><comment><USER26> I wonder how you'd implement something like this in Wayland? Would you have a composer on the remote side rendering the text to a terminal (that you'd connect to over ssh/mosh)?

</comment><comment><USER27> Wow! Can't wait to try this! Coolest thing I have seen in a minute!

</comment><comment><USER28> That's a good idea. I'll continue reading about it.

</comment><comment><USER29> very creative, looking forward to giving it a try.

</comment><comment><USER30> rick roll opportunity totally missed ;D

</comment><comment><USER31> Why not stream X directly over ssh?

<comment><USER32> Because X over SSH requires a somewhat low latency and high bandwidth. The guy's requirement is unpredictable latency and low bandwidth (like 3 kbps). X is no fun at all over that kind of connection.

</comment></comment><comment><USER33> Finally, high-performance remote display!

<comment><USER33> No sound though :)

<comment><USER34> It's a feature not a bug ;)

<comment><USER33> Thus the smiley :)

</comment></comment></comment></comment><comment><USER35> BUy all your drugs at drughouse.store

</comment><comment><USER36> That's fucking nuts!

</comment><comment><USER13> Given the quality of text (or the requirement to zoom) I'm not sure what the fuss is about. It looks abysmal, and having to zoom all the time is a habit I am glad we got rid of due to higher resolutions. Though still existing on mobile devices it is also user-friendlier to zoom there, and the reason for the feature is the device is more mobile.

You could already run a browser in a framebuffer for ages. Which means you're not bound to X11. My friend, X11 hater (he was former Amiga user), just used CLI and a CLI web browser (well, he used Emacs) but sometimes he did need GUI and that was his solution. We're talking end of '90s/begin of '00s here during a time where X didn't even compositing.

If you want to run X11 over SSH, that's also possible, e.g. via NX Server. Another route could be SDN plus (Free)RDP. Mosh is great for latency, tho can't be used for SSH over Tor due to UDP.

<comment><USER2> I'm actually in the middle of a complete rewrite (I was hoping to stay under the radar until then). I'm ditching X11 and ffmpeg and actually rendering real text as a layer over the TTY blocks. See: [https://github.com/tombh/texttop/blob/webext- rewrite/webext/...](https://github.com/tombh/texttop/blob/webext- rewrite/webext/src/text_builder.js#L165)

<comment><USER13> Can't edit my post anymore but I just tried Texttop out. I ran it according to your Quickstart guide in Docker as you suggested. In Terminal the keybinds didn't work, in iTerm zooming at least works. Whilst I was zooming in, I noticed my CPU fans suddenly went crazy on my MBP compared to Chrome RDP. The only time that happens on RDP is when I play a game remotely, or watch a video remotely. Htop confirmed it was iTerm.App. I didn't see either of these terminals in your known to work list either.

<comment><USER2> Thanks for trying. Yes the iTerm keybindings are a known problem. Like I said, I've completely rewritten Texttop from scratch - it's now merely a lightweight Go binary (to receive a websocket and print to STDOUT) and a webextension. So it's significantly more performant.

<comment><USER13> Tom, my bad. It seems there is a bug in Docker for Mac which causes high CPU usage [1]. Def made the overheating worse. I'll give it a whirl on a different environment instead.

EDIT: Just tried it on Windows. Is there a terminal you can recommend working on Windows? I tried CMD.exe, Powershell, Bash (WSL / Ubuntu) and Cmder. None worked well.

[1] [https://github.com/docker/for- mac/issues/1759](https://github.com/docker/for-mac/issues/1759)

<comment><USER2> Oh, interesting, I never tried it on Windows. What doesn't work? Everything!? Can you make an Github Issue for it?

<comment><USER13> I was using RDP. Had different issues with each terminal but am going to try local, and I'll report the issue(s) on GitHub.

<comment><USER2> Thank you :)</comment></comment></comment></comment></comment></comment></comment></comment>


The First VC Meeting (2009) - <AUTHOR> https://bothsidesofthetable.com/the-first-vc-meeting-post-1-of-many-a74bc6823a18 <comment><USER2> Since there's no link at the of Part 5 to part 6:

Part 6 : [https://bothsidesofthetable.com/sorry-guys-it-s-the-size- of-...](https://bothsidesofthetable.com/sorry-guys-it-s-the-size-of-the-wave- not-the-motion-of-the-ocean-22d0ebf1954e)

Part 6cont : [https://bothsidesofthetable.com/pitfalls-in-market-sizing- pa...](https://bothsidesofthetable.com/pitfalls-in-market-sizing- part-6-continued-59e2d3222013)

Part 7? : [https://bothsidesofthetable.com/pitching-a-vc-dealing- with-c...](https://bothsidesofthetable.com/pitching-a-vc-dealing-with- competition-5c34bcf4151)

... and then the numbering / search functionality seems to hit a dead-end. Pointers welcome...

</comment><comment><USER3> I appreciate that Mark Suster is upfront in saying he's only interested in the correct pedigree. Even the "wrong" pedigree is a recognisable pedigree.

The rest of us don't exist.

(Edit: a better phrasing might be "the rest of us are not found in his taxonomy, possibly because it would muddle the discussion")

Which, given his position, is understandable. VCs can lean on brutally inefficient filters, since they get so many opportunities to recover from lossy rejections. And on the flipside, they can't afford to drown in lossy acceptances. C'est la vie.

<comment><USER4> If you don't have the pedigree, go get it. Become that Stanford masters student, or go work at Google or Facebook for a few years. Then when dingbat investors like Suster ask for pedigree, just namedrop Google.

Of course, keep in mind that Suster himself doesn't have the right pedigree (he studied econ at UCSD and got an MBA from Chicago). Then again, maybe that's why he has a shitty portfolio (Upfront is certainly no Sequoia).

<comment><USER3> > _If you don 't have the pedigree, go get it._

I am fortunate to be in a position where I can.

But on the whole, it is probably cheaper (in time, money and stress) to find different investors than to go to Stanford.

</comment></comment></comment><comment><USER5> Kinda an obvious post; the name dropping of schools is a bit obnoxious in my opinion esp since the current highest valued private company is run by a UCLA dropout - something Suster would obviously have loved to invest in after the fact. I find the exceptionally smart "startup" people are very knowledgable about their competition and their companies relation to them and can project out to the future.

</comment><comment><USER6> As somebody whose bio checks all the boxes Suster mentions, but without any particular drive or ambition, it seems like I could do cracking business renting myself out to real entrepreneurs as a face for these pitch meetings...

You hear people talking about colleges as nothing but signalling mechanisms, but holy shit, this article's ridiculous.

</comment><comment><USER7> From Part 5 (Doing a demo):

> The stories should roll off your tongue since you've done it hundreds of > times...

If I were a VC (not that it is likely to ever happen), and if your stories rolled off your tongue, it would set off some alarm bells ringing for me. If the stories roll so smoothly, just how many times have you told them before (apparently, without success)?

</comment><comment><USER8> > Maybe you're not a tech-head but you've hired a 23 year old from Harvard > with a 1,600 SAT who's your CTO (another real world example I heard just > this week!)

Is it normal to mention SAT scores in an investor meeting?

<comment><USER9> No. At least, I've never heard of it happening, and I'm pretty sure the investors I've met would think it was silly.

<comment><USER7> Many years ago, my ex-boss was in an informal pitch meeting with a very prominent tech lady (who is/was a limited partner at a major SV VC fund as well as an angel investor) and he mentioned that he had signed up an experienced Harvard MBA as the CFO and her reaction was along the line of 'Well, so what?'.

</comment></comment></comment><comment><USER10> This is 7 years old.

<comment><USER11> Surely it is about this VCs personal preferences, but has the dynamic markedly changed in that time?

My favorite high-tech product marketing book was written in the 1980s...

<comment><USER12> > My favorite high-tech product marketing book was written in the 1980s...

What book are you referring to?

<comment><USER11> [https://www.amazon.com/Marketing-High-Technology-William- Dav...](https://www.amazon.com/Marketing-High-Technology-William-Davidow- ebook/dp/B001D1YCU4)

Now, granted, this is about technology products as opposed to consumer facing apps: think Intel vs. Motorola CPUs back in the day or the various TI-vs- everyone DSP tangles. It's still very applicable to any number of technologies in robotics, energy and even things like MRIs.</comment></comment></comment></comment>


X Does Not Always Equal X | Startup Lawyer - <AUTHOR> http://startuplawyer.com/preferred-stock/x-does-not-always-equal-x <comment><USER2> Although i'm not personally familiar with the "standard series seed" documents, I would think this problem could be easily avoided through appropriate application of copyright to the original documents.

Something to the effect that the document may only be amended in certain ways which would be apparent on reading the amended document (ie. all amendments must be made by way of special condition).

Allowing investors to make changes to "standard" draft documents which will only be picked up by experienced startup lawyers defeats the purpose of having those standard form documents.

EDIT: fixed grammatical error.</comment>