Our experience moving to SF to do YC - <AUTHOR> https://posthog.com/blog/moving-to-sf/ <comment><USER2> Really cool to see you guys talking about your journey, hope to see you succeed.

I caught Posthog a bit early as it was trending on Git, and sent the repo link out to a few startup + dev groupchats on WhatsApp because I think it complements Metabase incredibly well. The combination of PostHog + Metabase lets you stand up a really powerful free BI and product analytics stack in a few seconds, and these are two areas I see so many early-stage startups faltering on. Not collecting product and usage/user data and using it to gain actionable insights.

Excited to continue following along from the sidelines to see what the future holds for you.

<comment><AUTHOR> Thanks - it's really nice to see the community sharing it!

To your point on "in a few seconds"... We're currently trying to build out more libraries as fast as we can so people working on apps in lots of languages can easily integrate it - we've done Python, Ruby, NodeJS, JS, Go and PHP, and an API for the rest. Feature requests for new libraries as issues in the repo ([https://github.com/posthog/posthog](https://github.com/posthog/posthog)) very welcome.

<comment><USER2> The Docker bit (which seems an obvious choice) is what makes it cake.

I just run a few bash commands and deploy PostHog + Metabase for friends on Cloud Run, since it's practically free (2,000,000 requests/mo) and has no operational burden. God bless Serverless Containers & Cloud Run.

Throwing up an open source containerized BI, analytics, and observability/monitoring stack is usually the first thing I do for companies. It's super easy and delivers a ton of value. PostHog fits really well there.

<comment><USER3> What would you use for "observability/monitoring stack"?

</comment></comment></comment></comment><comment><USER4> Amazing article! It sounds like you guys made the right choice to move to SF. Thank you so much for the super kind words about Kyte! The whole Kyte team much appreciated this and we are looking forward to delivering many more cars to your door in the future! :) The best of luck for PostHog!!!

<comment><USER5> I see the pricing is per day. Have you thought of hourly pricing ?

</comment></comment><comment><USER6> I wonder how you'd solve the visas in a situation like this. It seems to me the only way to found a company in the US is either via a O1 visum, a greencard, or a citizenship, all of which are rather hard to obtain, harder than the alternatives where you join an existing company. There is no big tech with on-campus immigration offices sponsoring you.

<comment><AUTHOR> It's really tough - we had to get professional advice.

YC connected us with an immigration attorney the moment we got accepted and he helped greatly to make sure we approached this in the right way. It would have been a maze to do this without him. It's still not easy and it's a lot of extra stress.

Certain countries like the UK have ESTAs for up to 90 days, but the program is 3 months + then you generally will want to be here to raise afterwards, so you should get some advice on how to do this specific to your home country.

Even the VISAs are painful - for example, an O1 (even if you do manage to get it) means IIRC your spouse can't work even if you can.

<comment><USER6> Thanks for the answer. What did you end up doing in your specific instances?

<comment><USER7> I'm interested in this as well.

</comment></comment></comment></comment><comment><USER8> > I used to run sales teams, my job was to try to give a realistic figure for > how much our revenue would increase. Any experienced VP Sales will play down > the number – most would prefer hitting a $20M target, over missing a $22M > number by $1M and ending up at a higher number. That's how you optimize for > not getting fired.

8 bosses, Bob!

Good write-up.

<comment><AUTHOR> Thanks :) I actually find this a really interesting topic. This approach can have some merit - ie it leads to you not overspending and running out of money if you are reliant on new business targets being hit. However, the ideal situation is that your CFO manages the spending conservatively whilst the VP Sales goes out and pushes things as far as they can. There are some morale issues too with giving very high targets when you are a managing a team who are judged against those - for fast growth, you want to give people a sense of accomplishment (so constantly undershooting huge targets is a quick way to prevent that) but also for them to push the boundary of what is possible.

</comment></comment><comment><USER9> Great post!

I went ahead and read all your posts in the series:

[https://posthog.com/blog/before-the-yc- application/](https://posthog.com/blog/before-the-yc-application/)

[https://posthog.com/blog/the-yc-interview/](https://posthog.com/blog/the-yc- interview/)

[https://posthog.com/blog/moving-to-sf/](https://posthog.com/blog/moving-to- sf/)

[https://posthog.com/blog/pivot-to-posthog/](https://posthog.com/blog/pivot- to-posthog/)

[https://posthog.com/blog/after-the-hn- launch/](https://posthog.com/blog/after-the-hn-launch/)

I'd recommend them to anyone who liked the linked post.

</comment><comment><USER10> omg finally a positive post on moving to San Francisco! Sure it has it's problems but the Bay Area is truly lovely in so many ways.

</comment><comment><USER11> This was a really refreshing take on this type of blog post. It came across as genuine and humble. I wish you folks the best of luck on PostHog!

</comment><comment><USER12> Cutting yourself off from civil society so you can totally dedicate yourself to enriching the VC class doesn't seem positive to me. In fact it seems like this is how we keep getting so much software (and hardware!) that solves no actual human need of any kind.

</comment><comment><USER13> Did I miss it but where did they move from? A comparison of before and after would have been great.

<comment><USER14> They do mention London down in the article, but I already knew UK because of the spelling of sceptical and the use of "hired" where Americans would say "rented."

Nice to see an article where they aren't slamming on my city, btw. :) Although I question the "rarely windy" comment.

<comment><AUTHOR> Ha! It is way harder than you'd think to write in US English.

<comment><USER14> No need, the Britishisms add character.

<comment><AUTHOR> It's also definitely less windy than you think it is.

<comment><USER14> Not sure how long you've been here, but summers are the worst for cold. Average high temperature in July is significantly lower than that of Alberta Canada. And yeah, wind. The hotter it is in the central valley of California, the colder and windier it gets in SF.

Glad you are enjoying it here though.

</comment></comment></comment></comment></comment></comment><comment><USER15> I love the logo - it adds a nice sense of playfulness.

</comment><comment><USER16> Nice read! Call me jaded but _walking_ up to twin peaks in the dark? Be careful!

<comment><USER17> Why not walking?

<comment><USER18> Lots of crime, someone was shot there not long ago.

</comment></comment></comment><comment><USER19> This mentions their first group office hours. Does YC now do group office hours instead of individual? If they do, I'd hadn't heard about it, and it seems like it could be an important innovation.

<comment><AUTHOR> There's a mix, so you can request 1:1 office hours whenever you want to speak to a particular partner. The onus is on you to drive the agenda in these. We tend to use them to talk through what we're doing next. ie after our HN launch we wanted to discuss "we have some momentum, what should we do next". Basically, whenever we've too many ideas and need help being more focussed.

The group ones are a once every two weeks thing. The reason they're cool is that you hear about others raising issues you wouldn't have thought to raise yourself.

</comment></comment><comment><USER20> What 'YC' is wasn't explained by the end of the first two paragraphs so I stopped reading.

<comment><USER21> > so I stopped reading

dirtydroog, if you want to be an entrepreneur, you need a lot more persistence than that. Not only is "YC" well-known, and the operator of this site, but it's the first result in google when you search for "YC" or "what is YC".

Not trying to insult you, but you need to raise your game several levels.

The whole "stopped reading" meme needs to die. Generally it indicates a problem with the reader, not the author.

<comment><USER20> Why. Why should I have to google it?</comment></comment></comment>


Recommendations for where to earn my comp sic degree online - <AUTHOR> Hello all
So in a nutshell, I'm looking to earn my comp sci degree due to both having an interest in it, and to remove this glass ceiling that my career seems to be hitting. I'm also employed full time, so going off to some university for four years in (insert town here) isn't an option that my wallet will support, and the local universities (U of T, Ryerson) aren't exactly flexible at all.
So I'm wondering if there's any online degree options for this degree at all that would be accredited, or aka not a diploma mill. I've done some calling around for schools in Canada with no luck so I'm pretty much assuming that I'll have to look outside the country, but figured the community might know of a reputable option....if one exists. <comment><USER2> If you already have a degree and are looking for a MS in CS you'll be hard pressed to find a better program than OMSCS from Georgia Tech. [http://www.omscs.gatech.edu/program-info/admission- criteria](http://www.omscs.gatech.edu/program-info/admission-criteria)

<comment><AUTHOR> Saw that one and yes if i had my BA itd be perfect. Sadly Ive only got a high school

</comment></comment><comment><USER3> This discussion (Ask HN: Fully online CS degrees? "[https://news.ycombinator.com/item?id=15899383"](https://news.ycombinator.com/item?id=15899383")) came up three days ago and has over 100 comments.

<comment><AUTHOR> The link returns a 404?

<comment><USER4> There's a trailing quote: try [https://news.ycombinator.com/item?id=15899383](https://news.ycombinator.com/item?id=15899383)

<comment><AUTHOR> Ah that's why. It wasn't showing on mobile.

And my bad. I searched for computer science and online degrees, but it missed that thread. Whoops</comment></comment></comment></comment>


Ask HN: Review My Startup: Szpil - <AUTHOR>

Be well organized. Keep detailed contact histories. Review past calls and conversations. Search contacts and notes. Collaborate with your colleagues. See who spoke to whom and what was said. See what you did a year ago today. Work remotely or offline.
https://szpil.com
I would appreciate your feedback. <comment><USER2> I can't seem to find any screenshots of _how_ your app does what it promises to do. And the only way I know what it's supposed to do is because you told us in the HN submission, not on the site itself.

The first interaction is for me to type in some pretty sensitive information (email, phone number, etc.), which I am simply not going to do until I feel it's worth it.

Also: your site breaks in weird ways in Opera (10.60).

<comment><AUTHOR> Opera not supported.

<comment><USER3> For me that's an instant disqualification.

<comment><USER4> What!? You're joking I assume.. What % of the market does Opera have again?

<comment><USER2> For an Opera user, it's still damn annoying to have to start up another browser. I tend to have Chrome running as a fallback but it does always grate me when people don't bother to fix their sites. And it's not as if Opera was that fussy.

</comment></comment></comment></comment></comment><comment><USER5> Ok, I really like your app. It's very javascript based so I'll be viewing your source heavily, because I'm also creating similar javascript based applications and I get into a big problem with code growth/complexity, so I'm hoping to learn something from you.

Here's some helpful criticism. I hope I don't come off too harsh, since I really actually like this app.

Some questions:

\- What are your unique features? It seems to be very javascript centric and it feels fast, I guess that's a good feature.

\- What is "an account" in szpil?

\- Is there some list of all contacts? I just found "Today" - but that feels like everything I've done today, not _everything ever_

What I like:

\- It's fast to use.

\- It's simple

What I don't like:

\- The single-colored interface - some icons might help

\- The full width layout (uncomfortable on a widescreen display) - you should at least use max-width

\- It was confusing that I didn't have to sign up and I didn't realize I had started.

\- I didn't realize that my name when I signed up was my username, so I put my long name with all the icelandic chars...

\- You could do better with the feedback button. Some simple feedback form or something like that.

Bugs:

\- My name got formatted in a weird way: "ArnóR HeiðAr SigurðSson" (Should be Arnór Heiðar Sigurðsson) - that also had complications when I logged in/out again

\- My stored password seems to not be bound to username, it's just always filled in - probably because you're not using a regular login form, but a javascript method that takes the variables and submits... too bad :/

\- When I logged in again, everything I did "today" was gone. So now I can't find the contact I created.. :P

Good luck and keep up the good work.

<comment><AUTHOR> Thanks for the feedback and hope you get some good architecture ideas from the source. Copywriting re: "account" must be improved (an account could be a company/organization/project). Contact lists will come when I figure out how to do them right. For now, there's the search bar in top right. This is probably the easiest way to switch contacts or see all contacts in a company etc. Re: interface, the idea is to keep it "text as interface", and keep the color simple so your data can speak for itself. The goal is to keep cutting down on "app chrome". There is "max-width" on some elements. Re: feedback link, good point. The formatting of your name is a bug in a titleCase function (fix coming soon). Please check back on Monday/Tuesday for some new features.

<comment><USER5> Great!

You know colors really help out. You don't have to have colors all over the place, but humans are inherently bad at scanning for text and monotoned objects.

Maybe a word for accounts: Group ..?

Keep it up!

<comment><AUTHOR> "Group" was the first name I used for "Account" in fact.

</comment></comment></comment></comment><comment><USER6> Just focusing on the design aspect, I'm split between thinking "I love the simple, clean, minimalistic look" and "It looks like it's half built, I'll come back when it's finished". Perhaps even just the inclusion of a small logo or a bit of colour anywhere, would give the added impression that at least "something" has gone into the design and that this isn't just the default look & feel of a CSS framework.

<comment><USER7> It doesn't look any more inviting after some data has been added.

It's hard to tell what this site offers, since as far as I could see, it only stores name, email, and phone. I can get more than that free with more trusted, well-known services (Google, Plaxo, etc.). It's missing import/export, sorting, communications logging, attachments, related tasks, related documents, notes...

As currently presented, this product isn't compelling enough to use _even for free_. $10 a month is way too much.

<comment><AUTHOR> Re: "it only stores name, email, and phone" that's true only when adding your first contact (to keep the landing page simple). Leave that specific interface within the app and come back and the form will show more fields, Skype etc. Re: "communications logging", once you've added a contact, click the link to their name in the success notice that pops up, or search in the top right. From there you can log.

</comment></comment></comment><comment><USER8> Who is this app aimed at? If it's aimed at people who would pay to manage their contacts, then it must be able to import from any reasonable email system. That includes outlook, Notes, Eudora, Thunderbird, Mail etc.

Importing means basically scraping most of the context and content of email, contacts, notes and appointments.

To me this sounds like a CRM system, and if someone came to me and said, I want to build a CRM system, I'd ask what they could bring that would persuade me to use their system instead of something established.

Typing my details manually into a web form would not make it past that bar.

I may be missing something here, and I don't want to be gratuitously harsh, but it doesn't really seem like the basis of a viable startup.

<comment><AUTHOR> Thanks, VCard import exists. Outlook import coming. Let me know what you need.

</comment></comment><comment><AUTHOR> Clicky: <https://szpil.com>

</comment><comment><USER9> 1\. If the whole app experience is as quick & snappy as the screens I've seen just poking around without entering data, you're doing something very right.

2\. As a potential customer, I need a screencast that shows me what your service does, how it will help me accomplish X and Y better than my current system, and why I should spend time exploring it. See dropbox for an awesome example.

3\. You should come right out and name your competition and explain what you do better. It's a giant pain in the ass to switch CRM midstream, and yet there's so much room for improvement.

4\. The name is atrocious. It fails multiple tests (can your users pronounce it? spell it? remember it? understand it?). You should really consider changing it.

Good luck!

<comment><AUTHOR> Re:

1\. Thanks. It gets better when you add more data. 2\. The idea is to let you jump right in and try it for real. 3\. Let me know what you're using so I can build an importer for it. 4\. What do you suggest?

</comment></comment><comment><USER10> I want to look around more and learn about the features, see some screenshots, read about the pricing, et cetera, prior to "adding my first contact".

<comment><USER11> Ditto. What does it do??

</comment></comment><comment><USER12> I peeked the code a bit and you got some good stuff there, like the Model class and the Http class to wrap on top of Prototype Ajax and also support Jsonp. I'm actually building an app that has the contacts feature as well so it's interesting to see another design and coding approach .

With the foundation of your application right now, you can extend it to support CSV (or sources other) import in no time, or adding a bunch of new functionalities. The biggest question is to find out how to charge people for your service. I truly believe in startup that aims to make money on day 1 and this is the only future-proof way to keep your service running for the long run.

Also, get at least IE7 support. IE is a must for serious businesses, not like this:

        if (Prototype.Browser.IE || Prototype.Opera) {
          var safari = Html.a({ href: 'http://www.apple.com/safari' }, 'Safari');
          var chrome = Html.a({ href: 'http://www.google.com/chrome' }, 'Chrome');
          var firefox = Html.a({ href: 'http://www.mozilla.com/firefox' }, 'Firefox');
          var links = safari + ', ' + chrome + ', ' + firefox;
          Notice.error('Your browser is not supported. Please use:', links);
        }

Good luck!

<comment><AUTHOR> Thanks you're right. I'm happy for early adopters to use a decent browser, and would prefer to innovate for them. I'm sure that's a large enough market. The idea is to enable everything to be done offline, and IE7 doesn't support that.

</comment></comment><comment><USER13> Make a painless iPhone (and for some folks - Android) + GMail sync and I'll probably pay you $10. Although, I can still sync iPhone contacts with GMail (using a payed app because MS Exchange integration is a pain in the ass), so I'm not sure. I like that it's simple, but there should be some killer feature that would make me want to switch.

But maybe I'm just not your target client. What's you target audience?

<comment><USER11> Are you on MacOS? You can sync your address book to gmail contact without using a paid app. Add you gmail account in address book preferences and use iSync...

</comment></comment><comment><USER14> I got as far as adding my first contact, and couldn't really find then where it was added. No contact list given, no real info given about the product. Not going to sign up, sorry, not even for free ... no clarity to this product, $10 per month for this is a little crazy. I don't think that this solves any real world PROBLEMS since I'm quite happy with my contact management already. Looks more like a college project than a real world product... Apologies if that seems harsh, but it's an honest opinion.

</comment><comment><USER15> The homepage has very little salesmanship going on, making the whole thing rather cryptic (On the other hand, the minimalism is very refreshing so there is a balance to be struck).

You should go read "Sign up and ramp up design patterns" by Adaptive Path:

<http://j.mp/dynuJs>

I think you'll find it really helpful. Good luck.

<comment><USER16> Full url: [http://www.90percentofeverything.com/2008/06/16/sign-up- ramp...](http://www.90percentofeverything.com/2008/06/16/sign-up-ramp-up- design-patterns-from-adaptive-path/)

<comment><AUTHOR> Thanks.

</comment></comment></comment><comment><USER17> I get a white page with a spinning icon top left, and this in my JS console:

Error: uncaught exception: [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "<https://szpil.com/javascripts/application.js> Line: 7562"]

Firefox 3.6.6, OSX 10.6.4

</comment><comment><USER18> I like the speed and simplicity, but without the ability to import contacts, I'm going to treat it more like a toy than a tool.

<comment><AUTHOR> VCard import is already there (available in Firefox and Chrome and any browser supporting FileReader). Outlook import on its way.

</comment></comment><comment><USER19> No way to browse contacts. When I use the search, Chrome's suggestions appear on top of your suggestions, which is quite confusing. Quite neat though for a first draft, though not sure that it offers much beyond standard webmail contact management.

</comment><comment><USER20> Am I going to have to manually enter each call myself? If so, then no.

</comment><comment><USER21> Might I suggest a fade in with a graphic of some type?

$10/month for contact synchronization is too high. Dropbox's 50gbytes is at that level and I think that's over priced.

<comment><AUTHOR> Good idea. I actually tried something like that but couldn't get it right. What price would you suggest?

</comment></comment><comment><AUTHOR> A variant of "szpil", "speel" means "play" in the South African language Afrikaans.

<comment><USER10> My first impression is "spill", like "oil spill".

<comment><USER22> +1

</comment></comment></comment><comment><USER23> I would be interested in the technology and architecture behind it.

<comment><AUTHOR> Javascript. NodeJS. TokyoCabinet. Views and controllers are HTML and JS. 2 static files: index.html and application.js served by Nginx. Server is an API. Authorization and filtering done at the meta-data level: set union and intersection on database indexes to avoid JSON deserialization/serialization overhead.

</comment></comment><comment><USER24> I think it will help if you are more descriptive about the problems it solves and how it solves it. Before I am welcomed on your site you are already putting pricing in my face. Asking me to put a contact before I can 'have a seat'. It is all too sudden

What I would advise is this, visit 37 signals and copy the format of their apps like BaseCamp. It is pretty the industry standard for productivity software.

Best of luck.

<comment><AUTHOR> Thanks the idea is to not be too industry standard.</comment></comment>


Analysis of Radio Frequency Identification (RFID) Chip - tech-e http://witscience.org/analysis-of-radio-frequency-identification-rfid-chip-prevalence-in-3-discrete-united-states-populations/

<comment><AUTHOR> Satire with no trace of humor = evil.</comment>


Anonymous-OS - a response from SourceForge - <AUTHOR> http://sourceforge.net/blog/anonymous-os-response/

<comment><USER2> "However, as the day progressed, various security experts have had a chance to take a look at what's really in this distribution, and verify that it is indeed a security risk, and not merely a distribution of security-related utilities, as the project page implies."

Why are we giving this group any media attention again?</comment>


Will string theory finally be put to the experimental test? - <AUTHOR> https://www.scientificamerican.com/article/will-string-theory-finally-be-put-to-the-experimental-test/ <comment><USER2> What this article means by "experimental test" is "whether or not string theory can incorporate inflation". Which is not an experimental test at all-- if it's any kind of "test", it's a theoretical test.

</comment><comment><USER3> This post by Peter Woit, a string theory skeptic, may be relevant:

[https://www.math.columbia.edu/~woit/wordpress/?p=11675](https://www.math.columbia.edu/~woit/wordpress/?p=11675)

<comment><USER4> The most important bit:

"It seems to be very hard to get some people to understand that the number of "tests of string theory" is not "very few" but zero, for the simple reason that there are no predictions of string theory, generic or otherwise."

What's the counterargument to that, then? I'm curious!

<comment><USER5> I think the other comment puts it well. String theory is a model builder or a model factory. Models are testable, factories should be viewed from the point of view of the user. Physics theorists are the users here, some think the testable models it puts forth are rubbish, others think it puts forth good models. Would you say Math itself is rubbish because it allows for such models to exist? I don't think so. I think string theory (as a model factory) might be the best tool for finding minimal elegant testable theories that satisfy known constraints, after all isn't that what science, especially Physics is really doing?

<comment><USER6> If the string theory framework has yet to come up with a verified model nearly 40 years later, is it really that good of a framework?

<comment><USER7> The problem is that it's produced _many_ verified models that could work with all of known physics. The problem is coming up with a test that distinguishes them somehow.

<comment><USER8> It hasn't produced any model that reproduces the confirmed predictions of the Standard Model, so no, I don't think your claim there is true.

<comment><USER5> This might be interesting to you:

[https://physics.stackexchange.com/questions/22559/how- does-s...](https://physics.stackexchange.com/questions/22559/how-does-string- theory-reduce-to-the-standard-model)

<comment><USER8> What that says is that String Theory can predict anything, therefore it can predict the Standard Model. This is not a good look for a "theory".

<comment><USER5> That's what I'm trying to get across, its not a good "theory" its a model factory. Forget the "theory" in string theory, its not predictive yet, but it will be once we have established the parameters of our low energy world well enough. What it does do, is define what a theory of everything probably looks like and that helps theorists agree on what proper measurements even look like.

<comment><USER8> If it allows one to predict anything, then it is totally useless. It doesn't help theorists do anything but extract $$$ from gullible funding agencies.

The notion that "it will be once we have established the parameters of our low energy world well enough" is not supported by any evidence, unless you are saying "once we have given it the correct theory to imitate, it will imitate it correctly". A sheet of paper could do that, though.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> String theory is a _framework_ (to build models) and not a _model_. It cannot be falsified anytime in the near future — if certain models happen to be falsified by observational/experimental constraints, then the framework provides ways to construct other models circumventing the constraints. Likewise, even if this particular experiment provides support for the models under consideration, clever theorists will probably construct other non- stringy models explaining the same result. So take everything with a pinch of salt.

Now, "falsification" itself is a silly/naive cartoon-ish framework for how to do science. It has its uses, but we mustn't cling to it too much (which would be cargo culting). We certainly have many other useful approaches as well.

In fundamental physics, unlike models of other limited domains, experimental results/constraints over history keep composing on top of each other. So, it is very hard to build a theory that satisfies _every one of the past constraints_. In a sense, string theory is the _only_ example we've managed, on that front. Other "alternatives" consider a much more limited domain (quantum gravity), for better or for worse.

Whether we must continue investing effort/resources on that front is a _political_ question, not a scientific one. And that is a complicated question, with many aspects to consider. Let's please not get hung up on the "falsification" bugbear. If we were really nitpicky about falsification, we would completely cease doing/studying/researching psychology, economics and a whole host of complex topics.

<comment><USER10> >Now, "falsification" itself is a silly/naive cartoon-ish framework for how to do science. It has its uses, but we mustn't cling to it too much (which would be cargo culting). We certainly have many other useful approaches as well.

i don't understand your point. you're saying something like "even though GR supersedes Newton it doesn't falsify Newton, and Newton is still useful". yes incorrect theories can still be useful but that doesn't make them correct. As soon as i use Newton for very fast things (or very small things) and i get poor results that is falsification of the claim that Newton is a GUT. maybe that isn't an interesting claim (though certainly there are a lot of theorists that are interested in that claim) but that's subjective not formal.

<comment><USER11> That's because broken theories can be used as frameworks to predict outcomes in coarser grained slicing of systems. Falsification is used when it comes to modelling but as a scientific test or rigor it's still important to pursue it because it finds the limit of your theories.

</comment></comment></comment><comment><USER12> Does this mean, in particular, that the inflaton field has not yet been successfully modeled in string theory?

</comment><comment><USER13> Will Betteridge's law of headlines finally be wrong?

no.

[1] - [https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...](https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)</comment>


RIM Sues Motorola, Motorola Sues Back: Just Another Lawsuit That Won't Really Effect Either of Them? - <AUTHOR> http://www.cio.com/article/185200/

<comment><USER2> Ahh... yet another pair of companies exchanging patent lawsuits. There should be a name for this.

Patent ping pong?</comment>


40 Percent Of Americans Will Be Freelancers By 2020 - <AUTHOR> http://www.businessinsider.com/americans-want-to-work-for-themselves-intuit-2013-3 <comment><USER2> Misleading title, unless we now consider contractors and temp workers as freelancers.</comment>


The Alpha AXP, part 1: Initial plunge - <AUTHOR> https://blogs.msdn.microsoft.com/oldnewthing/20170807-00/?p=96766 <comment><USER2> _" But it goes further than that: If you specify zero as the destination register for an instruction, the entire instruction may be optimized out by the processor"_

What's the logic for adding logic to the CPU for doing that? It may make such code run faster, but if programmers want faster code, they can just leave out such instructions.

<comment><USER3> IIRC, the instruction has a bit field to specify a register as a destination. If you specify a register that is hardwired to have the value zero, the instruction is, effectively, a NOP.

<comment><USER2> Not _is_, but. _may_be_. At least that's what I read.

My question is why would they spend effort (and it is an effort; they would have to add logic to not set carry/overflow/zero flags when writing results to that register, for example) making that a no-op if no sane programmer would use them?

<comment><USER3> Sorry. I was thinking about stores. Other instructions may cause side effects that could be hard to avoid.

It's fine to keep some behaviors of the ISA undefined. Different implementations may act differently. One generation may really avoid any side effects by retiring the instruction during the decoding stage while a simpler, say, low-power implementation may leave some side-effects (a carry that was set during an addition while the result is ignored). Stating that it _may_ be ignored keeps the implementations free to do whatever is more convenient.</comment></comment></comment></comment>


Javascript news for this week. Best IDEs for Javascript development - <AUTHOR> http://www.js-monkey.com/archive/javascript-newsletter-4.html

<comment><USER2> Somehow...it makes me more want to stick with Vim.

<comment><USER3> I'm with you, except I'm sticking with Emacs ;-)

</comment></comment><comment><USER4> Has anyone found a pleasant way of doing off-line development of Javascript on the iPad?

I'd quite like to play with it on the train to and from work, but don't get internet. This might simply be a bad idea.

<comment><USER2> Well..I don't know about iPad. But there's an App on the Android market called Terminal IDE that lets you do programming using Vim right inside your device. It even come bundled with Android SDK.

"Yo dawg, I heard you like to program Android. So I put an IDE in your Android so you can program Android while you're using Android!"

</comment></comment><comment><USER5> index page not found.

<comment><AUTHOR> Fixed. Thank you :)

</comment></comment><comment><USER6> Visual Studio is by far the best IDE for Javascript, it actually runs the code in a VM and then use the info to offer autocomplete

<comment><USER7> Jetbrains editors probably sweep the floor with VS or any other IDE developed. [http://www.jetbrains.com/editors/javascript_editor.jsp?ide=w...](http://www.jetbrains.com/editors/javascript_editor.jsp?ide=webstorm)

<comment><USER8> I'd say Netbeans is a comparable free option. VS isn't generally known for its JavaScript capabilities.

<comment><AUTHOR> The problem I see with NetBeans is that it consumes a lot of resources. There are better & lighter options.

<comment><USER8> While I don't have Webstorm, IntelliJ IDEA Community Edition consumes 250,000 kb with an empty project open while Netbeans consumes a bit under 400,000 kb, both without any sort of tweaking -- that's not that great of a difference to me. Vim, for instance, would be light.</comment></comment></comment></comment></comment>


It's Time for an Open Twitter - <AUTHOR> http://justinvincent.com/page/1972/its-time-for-an-open-twitter <comment> e-dard An alternative to Twitter has existed since 2008. It's called identi.ca

<http://identi.ca/>

The issue is getting people to start using such a service.

<comment><AUTHOR> If app.net can get the press it has gotten it probably means that the marketplace has reached boiling point. I'm thinking developers and many twitter users are ready for a more reliable and trust-able system.

<comment><USER2> How does the "marketplace has reached boiling point [with Twitter]", for app.net, differ from the marketplace reaching a boiling point with Facebook -> DIASPORA*, yet the trends speak pretty loudly (<http://www.google.com/trends/?q=diaspora>) that boiling point & press != success.

I'm hopeful to see app.net take off, but have been unable to find any arguments/discussions talking about how app.net will succeed where DIASPORA failed.

(Ignoring the obvious of having a better name, of course!)

<comment><AUTHOR> Facebook is (mainly) a single web app and the market knows it as such. Real time messaging is a smorgasbord of different clients on different platforms built by different people. The distributed nature of multiple vendors marketing efforts might give it the edge.

Coupled with a lot of negative sentiments that Twitter users and developers feel might make it an interesting story in the tech press. Diaspora had a lot of press when they first started but they couldn't live up to the promise.

In this case it would be easier to live up to the promise because most of the client code already exists. It would largely be a case of clients adding new endpoints to the frontend and abstracting the rendering functions.

It would also be super easy for users to import their Twitter profile into a new system. Just enter a Twitter username and you could easily get the bio & avatar. Very low cost of transfer. If the press pushed it, and it was so easy to move over, it would have a chance IMHO.

I should also point out I don't think app.net has this opportunity, I think it could only happen for a truly free non-profit system.

</comment></comment></comment></comment><comment><USER3> How about we just use XMPP. You know, the currently existing, extensible, email address syntax using distributed messaging platform?

Why does nobody seem to think of this?

<comment><USER4> Does XMPP allow you to follow a person and see all their public messages as they're posted? Does it allow you to see historic posts for a user? Can you search the network for all messages with a given tag, and get a live stream of updates? Can you see trending tags?

<comment><USER3> XMPP is extensible, so the answer could be 'yes'.

However, the actual answers are 1\. Yes 2\. Yes 3\. Potentially 4\. Yes 5\. Potentially

Instead of having central aggregation, the free market would drive sites aggregating users messages to improve their features. You could sign up by just adding the site to your list.

Of course, it would require some work and a draft standard. I'm not saying it's perfect. Apparently identi.ca has a federation system too.

<comment><USER5> There exists an extension protocol for Microblogging over XMPP: <http://xmpp.org/extensions/xep-0277.html>

Also check out buddycloud (.com / .org)

</comment></comment></comment></comment><comment><USER6> It would be relatively easy to build a Twitter service on top of email. Participating email providers would give every email account its own listserv account. Followers would be subscribed to the list. Tweet emails would have only a 144-character subject, no body (plus any multimedia attachments). You could still use your email normally, but also access the full Twitter functionality with a special client via the web, phone, or computer. Anyone with a normal email account could follow you, though they would have to have an account with a participating email provider in order to tweet or retweet. If a couple of the big players implemented it, the service would have critical mass overnight.

<comment><USER7> Why not build it on NNTP?

<comment><USER8> this wheel already exists. it does not need to be reinvented.

<http://www.w3.org/community/ostatus/>

<http://ostatus.org/about/>

</comment></comment></comment><comment><USER9> I'm no zealot, but arguably it's always time for an open alternative to any service or product.

</comment><comment><USER10> I like the idea of a 501c3 twitter competitor. It would be like wikipedia business-wise I guess.

Centralization has it's benefits, and they could be maintained without all the crap that's happening with twitter right now.

<comment><USER11> A 501c3 twitter is almost a brilliant solution. What grantmaker wouldn't want to support an organization dedicated to people's speech and open journalism? Valuing extensibility, openness, and free access, the mission is strong and the market is there. If Caldwell wanted to move this way, and offer $50 sustaining memberships for new features and $100 memberships for developers, nobody would blame him and all of a sudden he's open to some amazing funding opportunities.

<comment><USER12> Amazing funding opportunities perhaps, but not so great profit opportunities. Let's not forget: app.net is actually looking to make a profit (an excellent idea, if you ask me), not just replace Twitter.

<comment><USER11> A well run not-for-profit damn well better be making a profit, it's just not turned back to the owner. They just take their allotted salary. Which is a pretty fine idea too.

</comment></comment></comment></comment><comment><USER13> from <http://www.thimbl.net/> "Thimbl, the free, open source, distributed micro-blogging platform. If you're weary of corporations hi-jacking your updates to make money, or if being locked in to one micro-blogging platform tires you — well, then Thimbl is for you!"

<http://www.thimbl.net/faq.html> "Isn't this just like identi.ca/ostatus.net?

The similarity is only superficial, in that we draw upon similarities with web2.0 platforms in how we communicate our use-case.

Diaspora, Crabgrass, NoseRub, StatusNet, identi.ca and the rest are just web- apps with some sort of federation bolted-on. None of them are truly distributed multi-tier systems like the classic internet applications such as email, usenet, irc, or finger. Thimbl, on the other hand, is just a finger & SSH client that illustrates that "microblogging" has already been possible on the internet for decades. It's done by simply presenting the data differently and making it look like the now-familiar Twitter interface. You don't need anything from the Thimbl project running on your server to participate in Thimbl, just the software that is already in your repository - namely SSH and xinetd/finger or compatible alternatives."

</comment><comment><USER14> We need something along the lines of Diaspora (Open and Distributed). This would encourage geeks to develop on the platform due to it being distributed it would be hard/impossible to shutdown thus shall be around for ever (Twitter might not be). And due to the openness of the codebase etc people would start setting up hosts (Just like Wordpress or Diaspora etc.)

<comment><USER15> Because Diaspora has done so well.

The number of people that care about why Diaspora exists and why a Twitter clone in the same vein would exist is extremely small. Small userbase means the service is basically dead on arrival.

<comment><USER16> Completely this. Developers seem to think that the business stances Facebook and Twitter take can be solved purely with more development. They can't be. The problem is hearts and minds of users.

<comment><USER17> Actually lack of good development may be the problem. Mike Cardwell's opinion of status.net certainly isn't very high:

<https://twitter.com/mickeyc/status/236796994532827136>

and a lot of disaspora's momentum was destroyed by their early security issues (someone correct me if I'm wrong on this, I wasn't following diaspora that closely at the time).

Remember that as soon as even a few distributed or open systems get going they can be linked together. At that point any new competitors to FB/twitter have a strong incentive to be open as well because it gives them that precious starting network. Then, like good guerillas, you engage the centralized service in a drawn out struggle. They have to win every time, because as soon as their userbase slips it's never coming back. You only have to win once. (You can lose unlimited companies/protocols as long as more and better ones are taking their place)

EDIT: P.S. I totally stole this strategy from a Pournelle book (Prince of Sparta). "We Helots be coming back for more. Again . . . and again . . . and again." Just because they're the bad guys doesn't mean we can't use their tactics!

</comment></comment></comment></comment><comment><USER18> My best wishes. Will contribute by code and kind. And the day such a service exists, I am closing my twitter accounts.

</comment><comment><USER4> I wonder how hard it would be to add a stalking function to an IRC server, so you can follow someone and see all their public messages; and then log messages so recent chat can be viewed by looking at a channel... are there any other reasons to use twitter over IRC? :P

<comment><USER11> Wouldn't you always have to be connected, that way?

</comment></comment><comment><USER19> And Automattic is the company to build it.

</comment><comment><USER20> "How can one commercial company be allowed to own a protocol such as http or email?"

Twitter's "protocol" is not a protocol but an API that runs on top of HTTP and they created it. The ONLY responsibility Twitter has as a corporation is to do whatever it takes to make the largest profit. If it failed at this, it would actually be in violation of the law as that is the purpose of a corporation.

The world isn't entitled to anything Twitter builds.

<comment><USER21> You're missing the point amidst your rage. The author means protocol as an abstract mechanism, not a specific implementation. Email is not a specific protocol either - I can receive email using JSON over HTTP - but a abstract mechanism that is implemented by a collection of those.

And that's not Twitter irresponsibility; its responsibility is to do whatever its owners want it to, following the law. Especially since it's a private company, not a public one.

 _The world isn't entitled to anything Twitter builds._

Nobody says it is. The article is saying that Twitter is not entitled to be the sole mechanism for distributing Twit-like messages, and that we should build and use a different one.

<comment><USER7> >> The world isn't entitled to anything Twitter builds.

>> Nobody says it is.

I would say the choice of wording by the OP suggests otherwise.

From the OP:

>> Twitter has the power to topple regimes, but by following advertising dollars they are building a walled garden and making _anti-competative_ (link to: <http://thenextweb.com/twitter/2012/08/17/twitter-4/>) decisions.

If I'm not mistaken, the OP characterizes Twitter's imposing of developer unfriendly guidelines as anti-competitive, which it is not. If Twitter was being anti-competitive, they would be preventing competing platforms like App.Net from existing - and that's not what's happening. Limiting what is essentially a "free ride" is not anticompetitive.

From the same paragraph:

>> It does not bode well for our world that such _a commercially driven company should wield so much power_ and be the epicenter of global conversation.

As far as I know, all companies are commercially driven. Twitter wields power because people like to use it. But so does Facebook. That the author tried to "build a business on Twitter's platform for the past 3 years" and then be upset by Twitter's change of heart suggests a little sour grapes on his part.

Further:

>> Dalton Caldwell has an interesting idea, but I don't think it will end the _Twitter monopoly_

While Twitter is the market leader, it does not have a _monopoly_ on "status updates". The last time I checked my Facebook feed, it was full of the same type of updates that Twitter provides, and Facebook is pretty popular. Google+ is also a well funded competitor to Twitter.

<comment><USER21> _the OP characterizes Twitter's imposing of developer unfriendly guidelines as anti-competitive, which it is not_

I don't see how such characterization, accurate or not, mean that OP says the world is entitled to what Twitter builds.

 _As far as I know, all companies are commercially driven._

Firstly, I still don't see how does that tie to my post. I wasn't making an apology of the article. That said, OP did use a qualifier ( _"such"_ ). I'd claim that there are less commercially driven companies, e.g. Canonical.

 _Twitter wields power because people like to use it._

People like to use Gmail too, but if they kick you out, you can still communicate with everyone there. Twitter wields power because it's a locked-in system.

 _But so does Facebook._

So?

 _That the author tried to "build a business on Twitter's platform for the past 3 years" and then be upset by Twitter's change of heart suggests a little sour grapes on his part._

That's called an ad-hominem fallacy. The fact that he may be pissed does not make him wrong.

 _While Twitter is the market leader, it does not have a monopoly on "status updates". The last time I checked my Facebook feed, it was full of the same type of updates that Twitter provides, and Facebook is pretty popular. Google+ is also a well funded competitor to Twitter._

Again, I fail to see how is this related to my post.

<comment><USER7> >> Again, I fail to see how is this related to my post.

So to requote your original post.

>> >> The world isn't entitled to anything Twitter builds.

>> Nobody says it is.

Let me put it more succinctly. My interpretation is that the OP is basically saying that the world _is_ entitled to anything Twitter builds.

My subsequent quotes weren't so much related to rebutting you but to highlight the parts of the OP that I felt supported my point.

<comment><USER21> I understand your interpretation; I just don't see how is it supported by the article, particularly by the points you've quoted.</comment></comment></comment></comment></comment></comment>


"How much do you make from that webcomic thing?" - <AUTHOR> http://catandgirl.com/?page_id=2431

<comment><USER2> Awesome graphs, it's worth it just for that.</comment>


Ask HN: Maintaining useful business documentation - <AUTHOR>

This question goes for lean business development folks, and patio11 : what is your method for maintaining business documentation?
Target of that product is myself, 2 months down the line; there is this landing page I put together while mentally holding a thousand insights in my head. I'm about to do multivariant testing, but will not recall what my assumptions were during the creation of the page. And I will learn new things, but later on will not recall, due to me having a very short-term memory.
Or there is this crazy idea I have, that has no relevance to the business as it stands right now; but I know for a fact that 3 months down the road will become very important.
So I guess this question has two parts:
What to document?
And: how to document to maximize recall?
Any helpful pointers would be appreciated <comment><USER2> At my day job, we put everything permanent in a wiki and everything temporary in Trac (our issue tracking software). It turns out that engineers spent most of their time in trac rather than the Wiki, so that gradually is becoming the authoritative option.

For my business, I have three things: I have a succession of paper notebooks for any idea that can get garbage collected in less than a week. This is good for, e.g., A/B tests. (Why am I doing an A/B test with the Dropbox style invites? _Flips open notebook to last page._ Oh, that's why.)

You're going to laugh at me for this, but for long-term, searchable business documentation... I use my blog. What the effity was I thinking when I launched this feature two years ago? Search for my blog post about it. (Issues too minor for the blog have commit notes in subversion.)

If I were more worried about exposing my ideas to the world, I'd use an internal wiki-style software instead of the blog.

The third thing, which is perhaps less useful as an answer but still true, is that I have very, very good memory for the written word. (This is one reason I write so darn much. Anything I write and almost everything I read, I get to keep.)

</comment><comment><USER3> When I'm doing work on my own projects, I prefer to work with a sharpie marker and blank paper. It's the easiest way to get my ideas out as quickly as possible. The downside is that it's not digitized or searchable. Usually when I'm done writing and sketching out a lot of ideas, I'll just put those papers into a manila folder with a descriptive label and file it away. I bought a nice filing cabinet and label maker last year when I started doing GTD, so it works pretty well. Every meaningful thought is documented, and it's pretty easy to find it when I need it.</comment>


Two rival AI approaches combine to let machines learn like a child - <AUTHOR> https://www.technologyreview.com/s/613270/two-rival-ai-approaches-combine-to-let-machines-learn-about-the-world-like-a-child/ <comment><USER2> This seems so obvious I'm mildly surprised it hasn't been done already. Am I missing something?</comment>


The unreasonable effectiveness of declarative programming - <AUTHOR> https://bollu.github.io/mathemagic/declarative/index.html <comment><USER3> Back in the day when I was making videogames ([http://www.mysterystudio.com](http://www.mysterystudio.com)), I implemented something similar for my framework.

Most of the framework was declarative. There were Sprite objects that had an associated Image and a position (among other things). The onUpdate(dt) method of the "screen" didn't explicitly draw things on the screen, it only updated positions and other attributes of the Sprites, and the renderer would do the rest (back in the days of software rendering, it updated only dirty sections of the screen, etc).

Still, making programmatic animations was difficult, and for videogames you want things to look very nice (smooth movement, easing in and out, transparency effects, that kind of thing). There was a lot of { srcX, srcY, dstX, dstY, time } sets, for every thing that moved.

At some point I had an idea similar to what this blog proposes. I called them SpriteControllers, and they could be "attached" to a Sprite. The engine would call each SC's onUpdate(dt) method on every frame, and the SC would change the position, rotation, alpha, or tint of the Sprite.

By default all the attached SCs would work in parallel, so the next step was to have a SCSequence to run things in series. Also each SC was allowed to declare when it was "done". Some did (like linear motion from A to B), some never finished (like a pulsating glow).

It was a fun development in the sense that it made something that was very difficult to do by hand surprisingly easy, and took our games to the next level in terms of visual quality, just by adding a bunch of very short classes.

Making games was fun in a way. Alright, back to work. These protos aren't going to copy themselves into other protos by themselves!

<comment><USER4> My friends and I love playing "Murder, She Wrote" on a big TV screen during downtime at LAN parties. We streamed it on Twitch for a while. We're big fans, great work!

<comment><USER3> OMG, seriously? You made my day <3

Try the two Sherlock games if you can get them somewhere - these have a special place in my heart :)

<comment><USER5> Do you know where to get your games still? My wife would like them... The reason you are not just putting them on archive.org is because of the contracts you had I guess?

Edit: read your other comment and saw the licensing stuff... Shame about games (and such) that you just cannot keep them for sale forever... But just let them die.

<comment><USER3> Looks like Big Fish Games still sells them: [https://www.bigfishgames.com/games/2452/the-lost-cases-of- sh...](https://www.bigfishgames.com/games/2452/the-lost-cases-of-sherlock- holmes/)

Never thought of putting our first-party games on archive.org, sounds like a great idea, I'll look into it :)

</comment></comment></comment></comment></comment><comment><AUTHOR> I wrote this to show off how to write a compact and powerful animation library. It turned out to be a nice case study in declarative programming as I wrote it! I'd love feedback on the API design, website design, and content as I'm trying to actively improve in all of these areas.

<comment><USER6> Not that I want to disparage as the library looks neat and clear, but is that what declarative means in 2020 ? The code looks like mainly a builder pattern for an animation datastructure.

I've always heard declarative as a sort of synonym to programs defined in terms of equational reasoning such as Lustre for instance - a rule of thumb to separate declarative languages from imperative languages is that in declarative languages

        x := 1
        y := x + 1
        x := 2

y will be 3 as "y := x + 1" must hold.

e.g. it's not enough to just construct a graph-like datastructure for things to be declarative, the language has to do it itself.

Also, note that the par / seq model ([https://en.wikipedia.org/wiki/Series- parallel_graph](https://en.wikipedia.org/wiki/Series-parallel_graph)) is not as powerful as a general dag as things such as the K4 graph cannot be represented in it - even though it may make sense in some animation scenarios.

<comment><USER7> IMHO in a declarative language your example should be an error. You defined x twice. Intentionally or not, this is confusing, for others and for you in a week when you have to look at the code again.

Also, why should the second binding override the first? You introduced a temporal dimension where later lines of code somehow override earlier lines of code. That is not a necessity in a declarative language. It may be how we humans read text (from top to bottom), but it does not mean the computer has to process it in the same way.

<comment><USER8> >> IMHO in a declarative language your example should be an error. You defined x twice.

This would be an error in a language with immutable data structures. Declarative and immutable are not the same thing and there is nothing that says a declarative language _must_ have immutable data structures.

<comment><USER9> I think the idea is that declarative statements use "equals" like math uses equals, not as assignment. If you say x = 1 and then later say x = 2, that is a contradiction. Usually if you evaluate each statement in order from top to bottom, that is procedural programming. And if you don't do that, it's hard to assign multiple values to one variable because you need a way for the compiler to know _when_ the variable has each value.

</comment></comment></comment></comment></comment><comment><USER10> In Haskell, one can make more general combinators in the following way:

       type Anim a = (Duration -> a, Maybe Duration)

       -- Linear interpolation
       linear :: Anim Duration
       linear = (id, Nothing)

       -- Sequencing
       seq :: Anim a -> Anim b -> Anim (Either a b)
       seq (f, Nothing) g = (\t -> Left $ f t, Nothing)
       seq (f, Just df) (g, dg) =
            (\t -> if t < df
               then Left $ f t
               else Right $ g t
            , df + dg)

       -- Parallelism
       par :: Anim a -> Anim b -> Anim (a, b)
       par (f, df) (g, dg) = (\t -> (f t, g t), max df dg)

       -- Constant
       pure :: a -> Anim a
       pure a = (const a, Nothing)

       -- EDIT: forgot delay
       delay :: Duration -> Anim ()
       delay d = (const (), d)

I know there's an Applicative in there, but I'm not sure where else this lies in the typeclass hierarchy.

EDIT: More fixes

EDIT: I should really test in GHCI before I post these things. But I'm lazy.

<comment><USER11> pedantic stuff:

typo here:

      seq (f, Maybe df) (g, dg) t

s/Maybe/Just/

and `par` should be

      par :: Anim a -> Anim b -> Anim (a, b)
      par (f, df) (g, dg) = (\t -> (f t, g t), max <$> df <*> dg)

\---

i'm not sure about `par` - if my understanding of Anim is right, it'll take the shorter animation over its specified duration. what if it was something like:

      par a@(_, da) b@(_, db) = (ab, max <$> da <*> db)
        where ab t = (a `at` t, b `at` t)

      at :: Anim a -> Duration -> a
      at (f, Nothing) t = f t
      -- freeze when t exceeds dur, i.e. the animation is done
      at (f, Just dur) t = f (min dur t)

might be less elegant but i'd expect the combinator to respect an animation's duration.

or is that not what the duration represents? i.e. is this correct:

      stretch :: Float -> Anim a -> Anim a
      stretch factor (f, dur) = (\t -> f (t / factor), (factor *) <$> dur)

<comment><USER10> Replying to your edit:

As I was writing it my headspace was that the duration was for seq to know when to switch. I wasn't really thinking about stopping the animation too.

(I also notices that my seq is wrong. The subsequent animation should start at the beginning, so it should be `g (t - df)`, not `g t`

I believe you are correct. Your implementation is more at the heart of what I wanted to show. . The main point I wanted to get across was the interface itself.

<comment><USER11> it's a nice idea, i was just in a nitpicky mood :)

</comment></comment></comment></comment><comment> cool-RR Looking at the first code sample, I wouldn't call it declarative at all. For me, the defining feature of declarative code, is that it doesn't have a list of actions to be performed one after another. That code sample is such a list of actions, which for me makes it _imperative_ code, meaning "first do this, then do that, then do the other thing."

The "list of actions" approach is what makes code complexity grow exponentially, because whenever you look at a series of 10 instructions, you have to think "what state was created by the combination of the first 7 instructions, and does the eighth instruction depend on that state?"

<comment><USER12> So you would call:

      arr
        .map(x => x + 2)
        .filter(x => x % 3)
        .map(x => other(x))

Imperative?

<comment><USER13> Compared with SQL it's definitely imperative. It's definitely using higher- level abstractions than a `for` loop, but it still specifies the order of operations.

<comment><USER14> Actually it doesn't unless you're assuming eager evaluation and that 'arr' is something like an array, rather than something which monadically collects functions for evaluation later.

In C#, the functions being passed could be passed as analyzable syntax trees, and the implementation could actually be in SQL.

</comment></comment></comment></comment><comment><USER15> Interestingly, if you watch the Erlang: The Movie ([https://www.youtube.com/watch?v=BXmOlCy0oBM](https://www.youtube.com/watch?v=BXmOlCy0oBM)) they use the term 'declarative programming' to refer to what we would now call 'functional programming'. It's an interesting way of thinking about it - <USER2> sort of declarative interfaces are very simple in languages with first class function support.

<comment><USER16> C has first-class functions support, but I don't think it's very easy to define such interfaces in C. Closures and automatic memory management seem to be the "magic dust" that makes this nice to use, first-class functions are necessary but not sufficient.

<comment><USER17> C doesn't have first-class functions, because you can't define new functions in general places (only at top level).

<comment><USER16> The definition of first-class functions is the ability to treat functions as data, which C supports. Yes, they are cumbersome to work with, since they must always be defined at top level, but that is just missing syntax sugar. GCC even allows nested function definitions.

<comment><USER17> > Yes, they are cumbersome to work with, since they must always be defined at > top level, but that is just missing syntax sugar.

It's not just syntax sugar. Try writing a function that takes an array of integers and an integer x, and sorts the array mod x by calling qsort. In C this is not just cumbersome but impossible.

<comment><USER16> We can do it with a global variable.

        static int reg;
        int cmp(int a, int b) {
           return a%reg - b%reg;
        }
        void qsortModX(int[] a, size_t len, int x) {
          int tmp = reg;
          reg = x;
          qsort(a, len, sizeof(*a), cmp);
          reg = tmp;
        }

We could even wrap qsort so that you could pass something much closer to a closure to it :

        static void* g_ctx;
        static int(*g_cmp)(void*, const void*, const void*)
        int compare(const void* a, const void* b) {
           return g_cmp(g_ctx, a, b) ;
        }
        void qsort_cls(void*[] a, size_t len, size_t elem, int(*cmp)(void*, const void*, const void*), void* ctx) {
          void* tmp = g_ctx;
          g_ctx = ctx;
          int(*tmp_f)(void*, const void*, const void*) = g_cmp;
          g_cmp = cmp;
          qsort(a, len, sizeof(*a), compare);
          g_ctx = tmp;
          g_cmp = tmp_f;
        }

With this, you can define a `struct closure` that encapsulates a function and some data and use that to pass to qsort_cls. You can even make it thread safe by using thread local variables instead of globals.

Basically, if you want higher-order functions in C, you can do it, but you need to take a context pointer and a function which accepts a context pointer. The writers of qsort didn't think of that, so we had to resort to global variables to do it, but you could also re-write qsort to avoid the need for the global variable.

As I said, we're missing a lot of syntax sugar, but we can still work with functions as first class objects in pure C.

<comment><USER17> What you're proposing requires extra work to be threadsafe, is even less typesafe than normal C functions (you've lost checking that `ctx` is actually an `int`), requires you to reimplement it for each standard function you want to use, and is significantly syntactically more cumbersome even after you've done all that. If that's "first class" then how bad would things have to get before you called them "second class"?

<comment><USER16> I am sympathetic to what you're saying, and in the end this is just a matter of definitions.

I would note though that with C's type system, you always have to choose between type safety and genericity, this is not exclusive to higher order functions. C doesn't have a notion of threads or thread safety, so talking about thread safety in pure C does not make sense. And the fact that the designers of the stdlib didn't think about supporting closures still doesn't mean that the language itself doesn't support them. Other foundational libs, like pthreads, do have support for this style of closures built in.

<comment><USER17> > with C's type system, you always have to choose between type safety and > genericity, this is not exclusive to higher order functions.

True, but functions defined via some kind of "struct closure" scheme are non- typesafe even when monomorphic (e.g. if all the types are int).

> C doesn't have a notion of threads or thread safety, so talking about thread > safety in pure C does not make sense.

I'd hold that a function that relies on a global variable is noticeably second-class in a number of ways. Multithreading is one place where this comes up, but you also have to be careful about using it in a recursive context, or use in a library that might be called from more than one place.

> And the fact that the designers of the stdlib didn't think about supporting > closures still doesn't mean that the language itself doesn't support them.

Any Turing-complete language "supports" any feature of any other language in a sense, because it's always possible to emulate that other language. If we say functions are first class then we mean not only that it's possible to represent functions as values (because that will always be _possible_ ), but that functions represented this way are just as good values as the language's built-in notion of values, and just as good functions as the language's built- in notion of functions.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Declarative is great, and I wish more people created clean declarative API with regular languages instead of writting yet another DSL.

But remember that the problem with a declarative syntax, is that it needs a runtime, which typically the end user doesn't touch. And if the runtime doesn't take into consideration one use case, the user is stuck. Don't forget to provide an escape hatch.

<comment><USER19> Declarative code doesn't need a runtime if you have a compiler

<comment><USER20> Even if the language is compiled, you still need a runtime.

GHC compiles to native code, but there's still a runtime for instance to handle the garbage collection, to sort out the lazy evaluation, and to translate the blocking IO API at the haskell end into a non-blocking IO api at the kernel end.

I surely wouldn't want to be debugging my haskell code on a time budget by directly looking at the machine code that is running. I know some people do that and it can be quite illuminating, but the fact that I can debug haskell in its own terms is good.

</comment></comment></comment><comment> one-punch I believe this library would be very useful for simple animations. The small size and simple API should make this usable in many cases.

As for more sophisticated animations, I can think of reanimate [1], which outputs animations in SVGs, and should work on the web with wasm if integration is needed [2][3].

I completely agree that declarative programming (and functional-style programming) shines for composing animations. Imperative programming does not show the intent as clearly, and makes it hard to reason about or time travel animations.

[1]: [https://reanimate.readthedocs.io/en/latest/glue_tut/](https://reanimate.readthedocs.io/en/latest/glue_tut/)

[2]: [https://github.com/tweag/asterius](https://github.com/tweag/asterius)

[3]: [https://github.com/Lemmih/reanimate](https://github.com/Lemmih/reanimate)

</comment><comment><USER21> As others have pointed out, I wouldn't necessarily call this "declarative programming"\--this actually is more what I'd call "literate programming". That's semantics, but I will add that in my opinion, literate programming is way more effective than declarative programming.

Literate programming is just syntactic sugar around functional programming. For example:

        qux(bar(foo,baz),garlply)

...becomes:

        foo.bar(baz).qux(garply)

This is the sort of thing that typically emerges when you have immutable objects, and demonstrates a sort of equivalence between immutable OOP and FP. This is why I don't generally care about functional programming versus object oriented programming debates: they're equivalent if you don't mutate. I'm much more interested in immutability than a slavish loyalty to functions over methods. And I tend to agree with the OP that literate programming is very effective.

What people usually mean when they say "declarative programming" is they want to write a config file in, say, JSON, and have that be their program. But that would mean that the implementer of the language would have to think of every possible way that you could possibly want to configure the program, so they start adding customization points where you can write code in an actual language which is called in certain spots. So now you have to know how to program in a normal language, _and_ know how all the different customization points work. Oh and while you're doing that, you can forget about getting anything helpful like a stack trace, because it was _declarative_ so you don't need to worry about what is calling what, right? So you get things that just fail silently and you don't know why, like:

        class Mail(models.Model):
            ordering = '-received'
            sender = models.EmailField()
            receiver = models.EmailField()
            received = models.DateTimeField()
            body = models.TextField()

This orders by received ascending, even though you clearly are telling it to order by received descending... have fun figuring out why! I'm picking on Django here but it's actually one of the _best_ examples of declarative programming. The problem isn't that they didn't validate for this case: I don't think they could do that reasonably. The problem is that it's not really possible to implement declarative programming in a way that catches all the possible errors of this sort.

</comment><comment><USER22> Unsolicited code review regarding code readability:

If you write a comment saying x is y. Then rename x to be y. The comment adds a layer of abstraction. Now every time you encounter x you refer to the table of abstractions to get to y.

In a similar way the library has shortened function names. This is another layer of abstraction so you need to decompress the shortened function name once again.

</comment><comment><USER23> If you want to show off how simple your API is then I can think of several things that would improve clarity:

1\. Don't use parentheses in comments. They make things more visually confusing when javascript imposes enough syntactic clutter as it is.

2\. What's with /* */ ? Doesn't js allow keyword arguments?

3\. Your method names are probably a little short for my taste. I'd be happier with sequence() and parallel() instead of seq() and par(). Par especially seems a little too obscure when first encountering it.

4\. "cx = location | cr = radius" \- why not allow both forms? - or just the clearer one rather than the shorter one.

<comment><USER24> > 2\. What's with /* */ ? Doesn't js allow keyword arguments?

No.

<comment><USER23> I couldn't remember if that was one of the things they fixed with ES6.

I wonder if passing in a dict is a good alternative in this case. More syntax clutter but at least the params have some semantic meaning.

<comment><USER25> Object destructuring in the parameter list comes _very close_ to supporting keyword arguments, with only a couple of characters overhead.

</comment></comment></comment></comment><comment><USER26> I was expecting an article on the topic of declarative programming. Instead, it's about a JavaScript animation library.

</comment><comment><USER27> Declarative would be more like:

circle is at position 10,10 at time 1.5

circle is of size 50 at time 5

circle is at position 20,50 at time 3

And so forth. And because of this statements, an animation is computed that respects the declarations.

</comment><comment><USER28> Qt with QML does exactly this with animations. It works very well. You don't really need a functional language to do this kind of thing. I've written classes in C++ which are composed to produce different behaviors. Composition in OO is a way to accomplish this without using a functional language.

</comment><comment><USER29> A great example of the power of [1] _fluent_ API's (aka _The Builder Pattern_ ).

Basically, method-chaining allows you to concisely express programs, by hiding irrelevant complexity behind abstractions.

[1] [https://en.m.wikipedia.org/wiki/Fluent_interface](https://en.m.wikipedia.org/wiki/Fluent_interface)

</comment><comment><USER30> I don't like weird sounding headlines. Why they keep inventing them?

<comment><USER31> >I don't like weird sounding headlines. Why they keep inventing them?

It's the opposite -- they are reusing the old ones.

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

</comment></comment><comment><USER32> For me, there are only two benefits to declarative programming: Safety and quick Understandability of code. I would say that markup languages fall into this category (HTML, Markdown etc.)

Everything else is better to be done by some sort of imperative language. The declarative stuff can be a subset and a convention but you can always break out of it.

<comment><USER33> I see it almost the opposite way: now that the machines are so powerful you should _prefer_ the higher-level declarative languages (like Prolog!) unless and until you need the _efficiency_ that imperative languages can unlock.

</comment></comment><comment><USER34> I'm curious about how one is supposed to reason about the time and space complexity of declarative programs. I don't work in a realm where CPU and memory costs can be assumed to be infinite (or even cheap). How do declarative programming paradigms typically offer guarantees or bounds on computation cost?

I'm assuming that any declarative language powerful enough for general use is expressive enough to represent an NP-complete problem; i.e. : Find a set of booleans X1..XN that satisfy Y logical statements (or prove that there is none possible). Therefore absent opening up the "black-box" of the language, the time and space complexity could be unbounded.

With an imperative language, of course, since the programmer is probably specifying the exact order of operations and data structures being used, reasoning about and bounding the cost is usually straightforward.

<comment><USER35> Quite simple: you don't. Time and space complexity is an implementation detail, if you care about those things then declarative programming is out.

</comment></comment><comment><USER36> You should look at Actions in the Python implementation of Cocos2d. It uses operator overloading to allow '+' for sequential actions and '|' for parallel actions. These are composable and reversible for quickly creating complex animations.

[http://python.cocos2d.org/doc/programming_guide/actions.html](http://python.cocos2d.org/doc/programming_guide/actions.html)

Example:

            bounce = Jump(150, 0, 4, 2)
            scale = ScaleBy(2, duration=1.5)
            rot = RotateBy(360, 0.80)
            scale_and_rot = scale | rot
            bounce_in = bounce | scale_and_rot
            bounce_out = Reverse(bounce_in)

            logo.do(bounce_in + bounce_out)

</comment><comment><USER37> Your article reminds me a lot of Brandon Kase's talk regarding Algebriac animations written in Swift

Highly recommended watch:

[https://youtu.be/dyiLLdkzzRc](https://youtu.be/dyiLLdkzzRc)

</comment><comment><USER38> Interesting read. Until safari on my iPhone 7 crashed.

Could it be a memory leak? Or simply too many animations for my ageing phone to handle?

<comment><USER39> For me animations mixed with text is bad UX. Would be better with buttons to start the animations when you have read the relevant paragraph.

<comment><USER10> Basically auto playing anything for me is bad UX.

</comment></comment></comment><comment><USER40> > As an example, a staggered animation is a nice way to make the entry of > multiple objects feel less monotonous.

Hopefully readers considering this sort of thing for UI transitions will bear in mind: this is _nice_ if the goal of your application is entertainment, _deeply irritating_ if the goal of your application is productivity.

</comment><comment><USER41> s/refrentially/referentially/g

Very cool though!

</comment><comment><USER42> The unreasonable effectiveness for toy examples to ignore real world complexity.

<comment><USER43> A pity the author didn't provide you with a more professionally polished version you could add to your github and call your own.

<comment><USER33> Two snarks do not make a witticism.

</comment></comment></comment><comment><USER44> In non-declarative way it would look shorter and clearer

anim_set("cx", 100); anim_set("cr", 0); anim_interpolate(ease_cubic, "cr", / _val=_ /10, / _time=_ /3));

etc

don't know what are you trying to achieve here

<comment><USER45> First off, this part:

>anim_interpolate(ease_cubic, "cr", /val=/10, /time=/3)

is still declarative.

In any your example is incomplete and proves nothing because the end result should be a function that takes _t_ and returns _cy_ and _cr_. Not sure what your code is supposed to be really.

Secondly, the author explained at length what the advantages of their approach are (purity, composition, time travel debugging, ...).

I'm not sure what you're trying to achieve with your comment except trying to make yourself look smarter by deriding others.

<comment><USER44> You confuse declarative and functional. Declarative is when the sequence of execution is not related to the order of operators in the program text, but is derived at run time. The animation, where sequence of events is known exactly, is the poorest example for declarative programming.

<comment><USER45> > You confuse declarative and functional.

No I'm not. Also functional programming _is_ declarative programming (but not the other way around). If your code is supposed to be functional, it is also declarative.

I was trying to freely guess what your incomplete example was supposed to do. Maybe I was wrong, but then you didn't provide much to work with.

> The animation, where sequence of events is known exactly, is the poorest > example for declarative programming.

This wasn't a competition to come up with textbook examples of declarative programming.</comment></comment></comment></comment>


Gliese 581 g - <AUTHOR> http://en.wikipedia.org/wiki/Gliese_581_g

<comment><USER2> Wikipedia is destined to be renamed "The Hitchhiker's Guide to the Galaxy" at this rate. Someone should add "mostly harmless" to that page.</comment>


Ask HN: Proof of concept for my web site - <AUTHOR>

I recently had an idea and put this together: http://www.me-vc.com
Since financing is a well-explored area and micro-financing is such a hot topic, I'm sure I'm missing something.
What do you think about it?  You can leave comments on the site or here.  I will update the site with some of your comments as this process goes forward.  I'm available at: email@example.com
Thanks for your help! <comment><USER2> You haven't explained your proposed legal structure so it's hard to comment. How do you plan to structure it? Will the money each person contributes be a donation, or a loan, or an equity investment, or ???

<comment><AUTHOR> The money each person contributes will be an equity investment.

<comment><USER2> You cannot advertise equity investments to the general public in the USA without registering with the SEC. Do you plan to do this?

<comment><AUTHOR> Thanks for your help. This was just an idea I wanted to run up the flag pole. I don't plan to implement the site unless I can partner with someone who would be able to handle the main part: the SEC and legal.

That said, I'm dying to see someone (anyone) implement something like this. It's simply the future of funding web applications, in my opinion.

</comment></comment></comment></comment><comment><USER3> i like the idea of investor "bidding" but of course it seems like a hard task keeping everything honest.

the whole concept seems burdened "legally" so to speak.

would be neat to see something like this fly, though

<comment><AUTHOR> Thanks for your feedback. I agree -- this biggest hurdle is creating the legal framework for it.

Generally, it seems to me like a natural progression. Web startups don't need VC in many cases -- they need funding closer to 20,000 than 2,000,000, and that would lower the due diligence somewhat, allowing more deals to be made. Angels are location-centric, but web startups are happening everywhere.

This would change things so that if some web startup only needs 20,000, it's a matter of 200 people around the world who believe in their idea enough to put in $100. Plus the valuation would be more market-driven.</comment></comment>


Man gets threats–not bug bounty–after finding DJI customer data in public view - <AUTHOR> https://arstechnica.co.uk/information-technology/2017/11/dji-left-private-keys-for-ssl-cloud-storage-in-public-view-and-exposed-customers/ <comment><USER2> There's also some good, previous discussion here: [https://news.ycombinator.com/item?id=15721268](https://news.ycombinator.com/item?id=15721268)

</comment><comment><USER3> I'm (naively, but also positively) surprised to learn just today that DJI is a chinese company!</comment>


Firefox OS: New Design - <AUTHOR> https://www.youtube.com/watch?v=JIiIjjIsuzc <comment><USER2> While design is always useful, there's diminishing returns in optimizing usability.

I really hope that FFOS can see beyond that trap and commit resources to embracing mesh networking as its USP and killer app-space.

Not only would this empower those with sporadic or poor internet connectivity in the developing world, but also take readily abused surveillance and billing power away from centralised carrier communications topologies and fundamentally help to keep society free.

Bug on the subject (vote and follow if you agree) [https://bugzilla.mozilla.org/show_bug.cgi?id=945047](https://bugzilla.mozilla.org/show_bug.cgi?id=945047)

PDF on the subject [https://bug945047.bmoattachments.org/attachment.cgi?id=84072...](https://bug945047.bmoattachments.org/attachment.cgi?id=8407268)

Sad example of current paradigm that FFOS could fix with mesh support: [https://news.ycombinator.com/item?id=10117791](https://news.ycombinator.com/item?id=10117791)

</comment><comment><USER3> Looks like everyone is jumping on the Material Design train in terms of expressive and intuitive animations.

I thought I first saw elements of this in the Windows Phone OS, but Material extended and perfected it, in my opinion.

</comment><comment><USER4> Looks like a great idea. But I wish they'd showed some web pages and maybe a bit of info on hardware pricing and release.</comment>


Uniqul - World's First Face Recognition Payment System - <AUTHOR> http://www.fastcompany.com/3014379/fast-feed/forget-credit-cards-in-finland-you-can-pay-with-your-face

<comment><USER2> Time to pull out my Bill Gates face mask.</comment>


The Rise and Fall of the Fireman's Pole - <AUTHOR> http://gizmodo.com/the-rise-and-fall-of-the-fireman-s-pole-1618281408 <comment><USER2> Is there a _practical_ reason why slides haven't caught on? They're intrinsically safer, and you can also send gear down them if necessary.

</comment><comment><USER3> " it's one of the last reigning symbols of the antebellum firehouse."

Antebellum in a US context used to mean "before the Civil War". There have been a bunch of wars since 1878, so I'm not sure how the word applies.

</comment><comment><USER4> Trade offs to avoid lawsuits. Poles are dangerous. Stairs are 30 seconds slower and you can also fall on them, but there won't be safety lawsuits.

Sleeping on the floor where car maintenance is performed is also dangerous, there are extra fumes and toxins.

</comment><comment><USER5> Why not install a hatch or some such around the base of the pole, so that there is only a large hole in the floor when it's needed?

</comment><comment><USER6> Is it just me, or does "The Rise and Fall of the Fireman's Pole" sound like an XXX movie title?</comment>


John Carmack on government (2010) - <AUTHOR> https://www.facebook.com/permalink.php?story_fbid=1895320834035758&id=100006735798590 <comment><AUTHOR> Sorry for the Facebook.com URL, I couldn't find it on the Internet Archive. Here is a Pastebin mirror for those not interested in visiting Facebook: [http://pastebin.com/FbkyPxz5](http://pastebin.com/FbkyPxz5)</comment>


Show HN: Cedreo – Home construction drawings and 3D models - <AUTHOR> https://cedreo.com/en/ <comment><USER2> I'm about to move into a new (to me) house, and typically 3D model my place by hand so I can do stuff like this. Definitely interested in taking this for a spin.

Heads up: when I tried to sign up, I got "Uncaught (in promise) null" in the console. The login form was stuck on "Please wait while processing your subscription..." This appears to be an issue with something involving hubspot's CTA tracking JS. Could be a problem if users with adblock can't complete signup (unless that's by design).

The following were blocked by content blockers:

GET [https://www.googletagmanager.com/gtag/js?id=UA-113086282-1](https://www.googletagmanager.com/gtag/js?id=UA-113086282-1) net::ERR_BLOCKED_BY_CLIENT GET [https://snap.licdn.com/li.lms- analytics/insight.min.js](https://snap.licdn.com/li.lms- analytics/insight.min.js) net::ERR_BLOCKED_BY_CLIENT GET [https://js.hsadspixel.net/fb.js](https://js.hsadspixel.net/fb.js) net::ERR_BLOCKED_BY_CLIENT GET [https://js.hs- analytics.net/analytics/1556347500000/4358184....](https://js.hs- analytics.net/analytics/1556347500000/4358184.js)

<comment><USER3> Google SketchUp works really well for me. I've done it for the last 2 apartments I've lived in, and even shared the file with the tenants moving in after me.

Edit: saw the video on the site, ok with SketchUp I just draw the floorplans, but it does have IKEA furniture in its online library which I can import, so I can try layouts on screen instead of in real life.

<comment> d-sc FYI, Trimble bought SketchUp from Google so it's technically no longer 'Google Sketchup'.

</comment></comment></comment><comment><USER4> I use lego blocks, scale 20 cm (8") / stud, which seems to work quite well.

</comment><comment><USER5> Sweet Home 3D is my go to tool for home modelling - [http://www.sweethome3d.com](http://www.sweethome3d.com)

<comment><USER6> I do agree, it's really good.

The only thing a bit difficult is to find objects/models to use: the gallery system in the app doesn't have search/filters and the website does provide a list and third parties, but overall it's a little bit of work to locate one precise item you need for your project.

</comment></comment><comment><USER7> Since I am in a process of upgrading my house I thought that this could be quite useful. However, I was unable to use this service.

I tried to sign up, but the Sign up page does not work. I entered email (not allowing copy paste is a bit annoying) and then clicking 'Sign up!' button resulted in nothing and clicking more times showed error 'uncaught exception: null' in the console...

Moreover, there is 'Hurry up! 100% free', but no information about any prices. This looks shady for me.

<comment><USER8> Hello, we have an issue with the adblock softwares. Try to turn it off while subscribing, it should work like a charm :)

</comment></comment><comment><USER9> Would love to try but sign-ups seem dead: "Sorry, there was an error with your subscription, please try again."

<comment><USER8> Hello, we have an issue with the adblock softwares. Try to turn it off while subscribing, it should work like a charm :)

</comment></comment><comment><USER10> As I understand the market target is the non-professional home builder. Products for this market are not new and never seemed to be successful.

By the other hand, if you try to capture professional (or even semi- professional) market share, the quest is not easy also: Sketchup with a multitude of plugins is hard to beat. Where I see opportunity is on VR software for drones that could make plans/3D models with minor human input.

Disclaimer: I'm an architect and not in the US, I might be biased.

<comment><USER11> If non pro home builders won't be interested in this, where do you feel the attraction in vr lies? Genuinely interested since i think it's a popular (if not obvious) idea (I. E. For realty agents, real estate brokers etc).

</comment></comment><comment><USER12> I would highly recommend SketchUp for this kind of simple 3d 'sketching'. It's highly intuitive and well documented.

It was bought from Google a while back by a company called Trimble who made it kind of shit, but there are .exes for Google SketchUp 8 floating around. This lets you export in a wide variety of formats and runs beautifully in an XP VM if you are of the Linux persuasion

</comment><comment><USER13> Use homeidea3d for free

[https://youtu.be/4U7PVCZwxMk](https://youtu.be/4U7PVCZwxMk)

</comment><comment><USER14> I looks like there's a lot of good code in there, and a lot of hard work so good job thus far. What I want to know is why is it so narrowly focused, as in all it can do is residential homes specifically, residential homes. Wouldn't it be better if it were a generic modeller/CAD program?

</comment><comment><USER15> The "Easy as 1,2,3 steps" part of the video seemed like it was glossing over a lot of work. "Just add the roof" is a step that I wasn't convinced by the video is trivial using your software.

If it is easier to use Cedreo you might consider copy like 'other home building apps make you do x to achieve y but with Cedreo it's just w and z!'

<comment><USER16> It depends on the complexity of your roof but we have automatic algorithms to create roofs depending on your needs

</comment></comment><comment><USER17> What would make this ultra killer is to have a VR component. Imagine being able to walk around a design (obviously you'd have to be in a large enough space—basketball court, warehouse, empty parking lot, etc…). You would be able to experience the design at a human scale.

</comment><comment><USER18> I just use sweethome3d to create simple models when doing internal positioning system demos.

</comment><comment><USER19> Any plans to support WebVR or similar? I always thought it would make lots of sense for real estate companies to allow a VR walkthrough of their properties.

Pretty sure most people would be blown away with a HTC Vive setup to walk through your future home!

<comment><USER19> ..actually I think I would add a "order VR Kit" button/landing page and just see if there's any interest.

Then start shipping a "good-enough" VR headset (possibly branded with your company) and support for your 3D files.

<comment><USER20> I can for sure say there is interest! 100% percent on board with getting you these kits. Email me firstname.lastname@example.com

</comment></comment></comment><comment><USER21> Decided to check it out. The very first thing I drew, and I'm already frustrated!

1) Draw a wall (via the mouse) -- it's off by ~3/4'

2) Try to refine its length exact dimension (via keyboard)

Can't?!?

<comment><USER16> You can refine the exact length by moving the wall attached to this one with your keyboard arrows :-)

<comment><USER21> Tried again.

So here's my list of frustrations after just 10 mins of use: I'm unable to refine the dimension of wall by keying it in directly - I must use the mouse or arrow keys. I couldn't get the dimension of the wall to exactly 11 feet. It would inexplicably jump from 10 3/4" to 11 1/4" using the mouse of arrow keys! If I add an extension to an existing wall it immediately merges it. If I accidentally started to add a wall I couldn't just hit ESC to quit/redo. The aspect ratio of the grid surface doesn't seem right e.g. a 12 X 10' room looks almost exactly square on screen.

So... that's all. I won't bother y'all again with my quips. :)

</comment></comment></comment><comment><USER22> Looks great! Our house is about a month from being finished, but I would have loved mocking up our house as we discussed it.

</comment><comment><USER23> Does someone know how I can select multiple walls to move a room?

<comment><USER16> You can't do it for the moment but if you want to resize a room, you have a dedicated tool

</comment></comment><comment><USER24> does this support importing revit models? I just paid for a 3d laser scan to do as-built conditions.

<comment><USER16> Unfortunately not for the moment

</comment></comment><comment> jo-m This has existed for years: [https://www.archilogic.com/](https://www.archilogic.com/)

It only allows interiors though AFAIK.

<comment><USER25> So....it hasn't _actually_ existed.

<comment><USER16> Indeed, no solution exists today to generate high quality renderings of a 3D house from scratch in less than one hour.</comment></comment></comment>


Dustbot the street cleaning robot - <AUTHOR> http://news.bbc.co.uk/1/hi/world/8072619.stm

<comment><USER2> garbage robot capacity: 1 garbage bag

therefore, at any given time, there should be 100's of robots roaming the streets, visiting various addresses (and then plopping the bags in convenient piles for the real garbage truck to retrieve)

homework for Italian hackers: create your own "robot parade" by war-dialing 100's of robot garbage pickup calls at carefully selected times and locations

</comment><comment><USER3> It looks like the platform was designed around a Segway. Ultimately, while the execution and development of the hardware is excellent, I think the logistics of everyday life will be the ultimate downfall of the machine. How does it perform in various weather environments? Will it require a trip back to the drop off depot after every single bag? Just how many robots are required to handle the amount of garbage generated every day in just a few blocks of the city? How does it deal with human interference enroute to the pick up/drop off point?

Seems like there are a lot of questions to be answered before I'm convinced it is a reasonable solution.

<comment><USER4> There are ways to make this more efficient in terms of numbers of robots and distance traveled per bag. You can have larger dump trucks on major thoroughfares, and use the smaller dustbots to manage the last mile to the houses.

I'm with you that this version seems highly inefficient, but there are obvious ways to improve and optimize.

</comment></comment><comment><USER5> The eyes on the thing remind me of the robots from Disney's "The Black Hole." (Those were probably given big, highly visible eyes in order to be more appealing.)

[http://zomgablog.files.wordpress.com/2008/03/robot_vincent.j...](http://zomgablog.files.wordpress.com/2008/03/robot_vincent.jpg)

</comment><comment><USER6> Even today the mafia is still deeply involved in garbage collection in Italy. How long before we get mafiabots?

P.S.

I couldn't resists the Futurama punchline, but please do not vote me up for it.

</comment><comment><USER7> How do they deal with theft?

Aside from that and a bunch of other questions, I'm still really excited to see stuff like this. I can't wait till we have robots rolling all over the place.</comment>