Promote JS - <AUTHOR> http://promotejs.com/

<comment><USER2> This site generates a link to a random page of the Mozilla Javascript reference, with various keywords added in title and alt attributes. It would be better if they used text instead of an image as the link anchor.

Here's how this should be done instead:

* Register a new domain, say javascriptdocs.com or javascriptreference.org

* The new domain should be used for hosting the JS reference as well as the link generator. Using an unrelated domain means you are wasting a lot of links from people that want to support the cause.

* The documentation should get a SEO treatment by someone who knows what he's doing. You need good titles, sensible site structure, a small excerpt to be used on top of each page and in the meta descriptions.

* Contact people and websites that link to bad docs, make them aware of the better docs you are offering and get them to switch.

* A reward program for people that put up links, refer visitors from their website, etc. Give them a Mozilla t-shirt or a hat or something.

<comment><USER3> Good stuff...

it would also pay to look less like a communist movement.

<comment><USER4> I don't think many people worry about robot dinosaur communists, now that the Cold War is over.

</comment></comment></comment><comment><USER5> I don't really buy all this big campaign to promote MDC.

First of all, I do it anyway. I constantly promote the MDC resources when ever I write a blog or forum post about some JavaScript thingie.

Secondly, the MDC site itself is not a perfect guide to JavaScript. Just look at the main page - <https://developer.mozilla.org/en/JavaScript> \- it's overwhelming. Even though I use it frequently, it still makes me feel lost. Plus it has the same academic feel as W3C pages, and you know what... HTML spec is not the first result in google for "html" either.

Compare all this to the w3schools page on JavaScript: <http://www.w3schools.com/js/default.asp> It might not be teaching the best practices, but it sure as hell is a lot clearer than the MDC page.

Therefore I would suggest that MDC guys follow the first rule of SEO: just make a better site.

<comment><USER6> Not to mention they don't seem to be scaling well:

"Service Unavailable

The service is temporarily unavailable. Please try again later."

<comment><USER7> I use MDC reference rather often and their loooong response times and occasional "Service Unavailable" messages annoy me very much.

Every time I have to use it I am thinking of making a mirror of it.

</comment></comment></comment><comment><USER8> This is a bad idea.

1) It's essentially spam, which Google works to prevent. It seems likely this will actually hurt Mozilla's rank in searches.

2) It's unnecessary. Google's results are usually fine. If you really want a page on Mozilla Dev Center you just add the letters "mdc" to your search, and it's the top result every time.

<comment><USER9> the point is you need to add mdc, people searching for javascript that do not know about mdc get sent to barely related sites at best, but more often misleading and wrong documentation

<comment><USER10> Oh my god... This is so awesome!

Call me stupid - but I am one of those persons who was unaware of MDC - and to be honest Mozilla sites hierarchy can be hard/impossible to traverse for the un-initiated.

I was wishing so much to find something like that JavaScript Guide. I love JS - but the little intricacies that are common knowledge to greybeards were so hard to find about - now I got it all here.

!!! Yay!

<comment><USER11> _Mozilla sites hierarchy can be hard/impossible to traverse for the un- initiated_

I wonder if they'll improve this.

<comment><USER12> Well, it's not for a lack of trying.

</comment></comment></comment></comment></comment><comment><USER13> Googling for 'javascript' brings up some sites about javascript, such as Wikipedia and Crockford's, along with some not so good tutorial-ish sites. The only really bad thing I see is the java.com reference at number three. Searching for 'javascript documentation' or 'javascript docs' pulls up the MDC doc site. Not sure why this is that big of a deal. I don't see a need for enlisting "the community" to drive SEO here.

</comment><comment><USER14> Why do we only get to promote a certain part of the JS documentation instead of the general JS guide (<https://developer.mozilla.org/en/JavaScript/Guide>) ?

<comment><USER15> I find that w3schools also offers great documentation for JavaScript: <http://www.w3schools.com/js/default.asp> .

<comment><USER9> the w3c documentation is terrible, I mean the first function you see on the home page is document.write

<comment><USER16> I don't think w3schools has any affiliation with the W3C. But I agree with you, their documentation is terrible: bad examples, idiosyncratic code conventions, confusing layout, (no syntax highlighting,) lots of distracting ads, and very little of the "what are the corner cases", "how does this work in every browser", &c. details that are essential in this type of resource.

</comment></comment></comment></comment><comment><USER17> It would go much further for the mozilla development center to do a little basic, white-hat, on-page SEO. For example, this URL: [https://developer.mozilla.org/en/JavaScript/Reference/Global...](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array) has a title of "Array - MDC". Even when it does come up in search results, most users wouldn't have context from the title what it's about. "MDC" adds nothing to the title. Words like "JavaScript" or "documentation" might help. Similarly, "documentation" isn't even on the page, and "Javascript" is first found halfway down the page and mostly in extra small text.

That said, the search results seem fine for this. [javascript array] turns up this page, albeit at position 9. It also shows w3cschools.com's page on the javascript array at the top, as well as several other great references. The only less than ideal results that I see are the two from javascript-array.com which tends to smell a little over-seo'ed from the fact that the hyphenated domain matches the query.

<comment><USER18> We are going to be doing some basic SEO very soon, but some of the current issues are due to the wiki platform we are using. We'll be investigating way to improve the overall markup for all docs.

Thanks. \- Jay, MDN product manager

</comment></comment><comment><USER19> It's a great idea to have a comprehensive and user-friendly standard place to look for JavaScript information. Just two problems:

1\. That site will naturally get links if and when it exists (natural SEO)

2\. It isn't necessarily the best idea to have it so closely tied with one browser vendor

</comment><comment><USER20> Keeping this on the frontpage will help as well :)

This is a great idea. One of the reasons why JavaScript is frequently misunderstood is because if you search for anything JS related you will find posts explaining how to do some DHTML thing in IE5/6 and Netscape.

It's great that Mozilla considers themselves to be the patron saints of JS, but much of the recent growth in the JS community is due to projects like V8 and node. Why doesn't Joyent or Google get to host the docs on their servers?

Perhaps it's a better idea to establish a Javascript Foundation that runs javascript.org or something. This approach will probably not last and then it'll be a wasted SEO effort.

<comment><USER21> I am one who doesn't really understand javascript hype (and have used it in advanced ways), there are few types, objects are automatically converted to strings, few functions support even for the web (urlparse). I am in favor of a VM to the web, supporting more programming languages.

<comment><USER20> I'd be interested to know by what standards you asses programing languages.

JavaScript has an admittedly clumsy and unnecessarily Java-like syntax and few built-in functions, I agree. But underneath there is a very elegant functional programming language. Who needs more built-in functions? Most scripting languages' built-in functions are just libraries written in that very language anyway. There's tons of such libraries for JavaScript.

A lot of the recent hype is due to node.js, too. Node.js is (somewhat simplified) a set of evented IO bindings for the V8 JavaScript engine. Those bindings enable us to build webservers using JavaScript. JavaScript was designed to be run in an event loop without any concurrency or blocking, which makes it incredibly easy to build software the scales reasonably well.

That said, I do agree that you should be able to use more languages in the browser. IIRC somebody has already ported Mono to Firefox which allows you to run tons of scripting languages in the browser. The next thing we need is standardization.

<comment><USER22> Having JavaScript on the server side makes me a bit weary, because of the difficulties of developing with it on the user side well mainly the no compilation/type checking and lack of concurrency. With the push to multi- processor systems concurrency is becoming much more important to take advantage of which makes me curious how does a non concurrent loop scale well (I don't know much about this node.js library).

On the user side however I have learned to like it. The lack of type checking does bug me since I tend to make cludgy spelling errors which compilers pick up, but its tolerable. I do wish js had a built in type checker for development.

Another driver of hype, more negative hype is GWT. But it is a bit disappointment and is a wrong approach to the whole browser independence issues. My brother and I have been working on a project for over 4 months, which initially started with using GWT and after two month of struggling with it, we threw it out, and switched to JQuerry. Our productivity instantly shot up.

More language support would certainly interesting, but I agree JS standardization across browsers is a more important issue to have resolved.

<comment><USER23> Concurrency is not much of an issue, you write concurrent JS apps like you write them in other languages.

There are three types of applications, and two are easy in JavaScript.

The first is something that is well within the capabilities of one modern CPU core. This class of applications includes every program that's currently running on your machine. Servers that only do IO (message queues? memcache? SMTP?) can also be included, in many cases.

This is easy to handle because there is no concurrency. For IO, you use an event loop, of course.

The second class of application is something like Facebook. One machine will never be enough to handle it, so you design for it to be as distributed as possible. Each app is "shared nothing" and passes messages to communicate with other components.

Obviously, JavaScript will do fine here. Each tiny component runs on one CPU core, and then you run a million copies of the app on 250,000 4-core servers. Easy. Need to double capacity? Just buy more servers. Wonderful.

The third case is the Enterprise Application. This is something like your company's HR portal or your online bank. It's an application that's the swiss- army-knife of applications. It slices, dices, and reads email too. Just compiling it is a week-long process involving 10 engineers and 4 consultants. For maximum SPEEEEED, everything happens in its own threads, which share 100% of everything with the other threads. (How could you read email and RSS feeds and check your paycheck if there weren't threads!?)

This type of app can only ever run on a single machine; if it's too slow, IBM and Oracle would be happy to help you out with a marginally-faster box for a few million more dollars. Since everything is shared, once you hit the most expensive hardware, that's the best you can ever do. If you wonder why it takes 120 seconds to load your bank account balance... this kind of app is why.

And no, you can't write one of these in JavaScript. Shared-state threads are not implemented. What a loss...

</comment></comment></comment></comment></comment><comment><USER24> Why can't I zoom in on that site on an iPad?

<comment><USER25> Probably this in the <head>:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum- scale=1.0;">

<comment><USER26> Perhaps I'm asking the wrong person, but what is that trying to achieve?

<comment><USER25> They must think their sizing/font choices are good enough for everyone, so they've essentially stopped zooming.

Used properly, the META viewport should help pages adapt to smaller screens. For example, I think an iPhone-specific viewport setting would make the HN front-page more legible on iPhones by wrapping submission titles.

Unfortunately, lots of sites seem to pick settings that either don't work well on all mobile devices (like assuming iOS dimensions even for non-iOS devices) or prevent native zooming (Google mobile sites and the default WordPress mobile theme are offenders here).</comment></comment></comment></comment>


Mozilla launches voice search, file-sharing and note-taking tools for Firefox - <AUTHOR> https://techcrunch.com/2017/08/01/mozilla-launches-experimental-voice-search-file-sharing-and-note-taking-tools-for-firefox/ <comment><USER3> Some more information in the official blog post: [https://blog.mozilla.org/blog/2017/08/01/new-test-pilot- expe...](https://blog.mozilla.org/blog/2017/08/01/new-test-pilot-experiments/)

I was especially interested in the Voice Fill (speech recognition) technology. Landing page: [https://testpilot.firefox.com/experiments/voice- fill](https://testpilot.firefox.com/experiments/voice-fill)

It seems the project is here: [https://github.com/mozilla/speaktome/](https://github.com/mozilla/speaktome/)

This seems as if it actually is a webservice. From the code ([https://github.com/mozilla/speaktome/blob/master/extension/c...](https://github.com/mozilla/speaktome/blob/master/extension/content.js)), I see: const STT_SERVER_URL = "[https://speaktome.services.mozilla.com";](https://speaktome.services.mozilla.com";)

Actually, I think this can be very easily done fully client-side, with good accuracy. Even on Android, the voice recognition can run client-side / offline.

I wonder if the project is in any way related to their DeepSpeech project ([https://github.com/mozilla/DeepSpeech](https://github.com/mozilla/DeepSpeech)). Maybe they use DeepSpeech on the server-side? At some other place they call it Pipsqueak, not sure if this is yet something else.

And maybe also related is their common voice project ([https://voice.mozilla.org/](https://voice.mozilla.org/)). Recent discussion here on HN ([https://news.ycombinator.com/item?id=14794654](https://news.ycombinator.com/item?id=14794654)).

Some more information also here: [https://research.mozilla.org/machine- learning/](https://research.mozilla.org/machine-learning/)

<comment><USER4> "this can be very easily done fully client-side" : maybe, if you have the voice model _and_ and inference engine that runs well on devices. Mozilla doesn't have that yet, so this experiment uses a backend running a Kaldi server and model that uses too much memory to run locally.

Once DeepSpeech is ready I'm pretty sure they will switch to that, and ultimately to on-device voice recognition with PipSqueak (PipSqueak is expected to be an inference engine usable on devices). Unfortunately none of these projects are far along enough to be usable.

Common Voice is mostly related to DeepSpeech as this will help getting data to train the engine.

</comment></comment><comment><USER5> Browsers should be browsers, not a way to get a whole bunch of trojan horse software installed on your machine.

If I wanted voice search, file sharing and/or note taking I would find the appropriate piece of software for that task and install it separately.

All this does is increasing the attack surface of the browser in a ridiculous manner providing features that only very few will use. File-sharing? What could possibly go wrong?

And in the meantime Thunderbird, a stand-alone program that had a decent following got the axe in favor of more browser bloat.

I really no longer understand Mozilla's mission.

<comment><USER6> The title is misleading. These are not part of Firefox. They are in the Test Pilot program, which is a way for Mozilla to gather feedback on what features they should include, how they should change them if they do include them and all in all is completely open-ended. They might also release these as extensions or somesuch. They are all coded as WebExtensions (except for that file-sharing thing, that's just a webpage), so that's very well a possibility.

Also, browsers already have code to record from your microphone, due to the WebRTC web standard, so it's not like this opens an entire new class of potential vulnerabilities.

<comment><USER7> > _The title is misleading. These are not part of Firefox._

Doesn't matter. They shouldn't be part of Mozilla's output either...

</comment></comment></comment><comment><USER8> I just wish it was .. faster.

Lately I've been moving away from Google everywhere I can. I moved everything but Google Voice. Yes, even Google Search - I've moved to DuckDuckGo. On windows however, I had to fall back to Chrome, because I was just shocked at how slow Firefox was.

Opening pages like Twitch.tv proved to be shockingly slow. Furthermore, my habit of opening many tabs in the background like I do in Chrome/Safari was massively slower in Firefox because while Chrome doesn't autoplay new-hidden tabs, Firefox does - I imagine Chrome feels faster there because it's not running nearly as much stuff at once.

Pretty much everything of Firefox felt slower for me. And this is from someone that _really wants to get away from Chrome!_ On OS X, I've long switched to Safari and DuckDuckGo, and been quite happy. I've had zero complaints about performance with Safari.

So.. I don't know what they need to do, but I'm really hoping they do something.

<comment><USER9> It doesn't help that they keep cramming features into Firefox. Chrome feels pretty bare in comparison.

<comment><USER10> Chrome has consisted of significantly (i.e. millions of lines) more code than Firefox has for quite a while now.

<comment><USER11> I feel like I heard that a Chrome install was comparable in size to an average Linux install a year or two ago.

</comment></comment></comment></comment><comment><USER12> Didn't they say not a few months ago that "the reason Firefox has fallen behind is that we focused on stuff that wasn't browser-related like MozillaOS etc."?

Learning from own mistakes anyone?

<comment><USER13> Seriously. They're behind in speed, security, quality of the developer tools etc. and introduce new useless toy features and one re-design after the other.

I appreciate a lot of stuff Mozilla do outside the browser for the open internet, but the development of Firefox is pretty bad and it looks like the project leaders are incompetent.

Firefox is a sad example of how a successful software can be overtaken by a new competitor within only a few years due to a lack of focus.

<comment><USER14> >due to a lack of focus.

And due to their competitors ability to advertise on the majority of people's home page. For most people, chrome wasn't a firefox alternative, it was an internet explorer alternative.

<comment><USER13> I'd like to know how much of an impact that had, but nonetheless Chrome is technically in many areas the best browser today and Mozilla, being the clear market leader at one point, could have done a lot more to prevent that.

Firefox was in need of technical improvements for some time, but they only started acting when Chrome already had a noticeable market share and that's not how you stay at the top.

</comment></comment></comment></comment><comment><USER15> Mozilla should focus on building the browser instead of building app that competes with other developers. They need to start listening to the developers community and stop being arrogant and ignorant. You build the foundation, and developers build the app.

<comment><USER16> That's a weird take. Mozilla has a wide variety of developers, working on all sorts of things. One of those things is experiments to figure out what the browser "foundation" should actually include.

I like that they're experimenting to figure out what good usability looks like and what the next generation of "browser" should deliver. Some things should just be there when you want them...not an app you install separately or a website you go to for the functionality. I don't know if all of these new things fit that category (voice stuff probably yes, notes probably yes, large file sharing maybe?), but I know I want Mozilla to keep trying new things.

Also, if Mozillians aren't building user-facing things with the "foundation", they don't actually know what the foundation should look like for developers. You have to be a developer using the platform daily in order to understand what it does right and wrong. I don't know how they could do that without actually building things that sit atop the platform.

<comment><USER15> I just found it damaging to their vision and brand. Take Hello and Persona as example. User focused? Yes. Failure? Absolutely. They need to be developers focused. Less and less developers are testing their apps with Firefox as the primary platform.

<comment><USER17> That's becuase of their declining marketshare (which is mostly due to strategic disadvantages in distribution channels and marketing budget) not their brand or split focus.

<comment><USER15> Budget has always been their disadvantages, yet in the pre-Chrome days, they were core product focused and won many developers support. Their vision was once inspiring and admirable. This was how they won over IE. However, ever since Chrome was introduced, most of their innovations are either catch up or gimmicky features - not to mention the political turmoil/non sense. I really wish they can focus on their core product again.

<comment><USER17> They got kind of lucky too. Their main competition abandoned development of their browser for about 4 years. Now, there are four browsers in active development each regularly communicating with web developers.

Given their pick it's obvious web developers would rather focus on the browsers with the most share of users.

</comment></comment></comment></comment></comment></comment><comment><USER18> Sorry, but I will not use any speech recognition service until it becomes a pure on-device service.

</comment><comment><USER19> I hope Firefox succeeds and destroys Chrome.

<comment><USER20> After the 54 release, it is the better browser frankly, low latency, and not a resource hog. Plugins, extensions, privacy and security defaults all seem to be better as well.

Using firefox focus on android is pretty great too. The normal firefox on android is just slow, not sure why.

<comment><USER21> because its webview which is just chromium. They don't use the gecko engine like in desktop firefox

<comment><USER22> I believe Firefox Focus (on Android and iOS) uses the OS native web view (effectively, Chrome or Safari), but the actual Firefox for Android uses Gecko.

<comment><USER20> ^ This seems right from my quick googling, there is this project for a gecko webview, which needs work: [https://wiki.mozilla.org/Mobile/GeckoView](https://wiki.mozilla.org/Mobile/GeckoView) and mentions firefox focus' gecko build option.

Firefox on android is too slow to use a lot of times. Something mozilla should be able to do better.

<comment><USER23> Mozilla just don't care about Firefox on Android, the naive observer would be forgiven for thinking they're actively sabotaging it.

</comment></comment></comment></comment></comment></comment><comment><USER24> Slightly off-topic, but does anyone use a Vim plugin for Firefox? I keep trying to switch, but the scrolling of VimFX drives me crazy. Here's an issue outlining the behavior: [https://github.com/akhodakivskiy/VimFx/issues/830](https://github.com/akhodakivskiy/VimFx/issues/830)

Are there any other Vim plugins without this issue?

<comment><USER22> Vimium-FF <[https://addons.mozilla.org/en-US/firefox/addon/vimium- ff/>](https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/>) is the only Vim-keyboard-binding plugin I know that will work with Firefox 57 and above. I haven't noticed any scroll jankiness as you describe, but it's possible I have my key-repeat-delay set low enough that it doesn't affect me.

<comment><USER24> Gave this a try, and it works! No weird jump after the first scroll.

Also, for anyone using 1Password, they have a beta of a multiprocess compatible FireFox extension that seems to work fine.

Thanks!

</comment></comment></comment><comment><USER25> I find it hard to believe that speed is really the issue here. I suspect it's more likely it's the aggressive advertising scheme in which Google push for Chrome.

I think these projects which Mozilla test/launch are an indication that even they don't know how to stop the eroding of Firefox market share.

If I were Mozilla I'd be seriously worried about Electron.

<comment><USER26> Speed is definitely an issue on the mobile app. Personally I think Mozilla should try harder with the mobile market. Providing an ad and tracking blocking browser is still desirable on Android. Firefox is just too slow at the moment.

<comment><USER27> Doesn't Firefox focus fill that gap? [https://www.mozilla.org/en- US/firefox/focus/](https://www.mozilla.org/en-US/firefox/focus/)

Super speedy as it uses an Android Webview and privacy focused.

</comment></comment></comment><comment><USER28> I wonder what happens to the previous Test Pilot experiments.

I loved the experimental home page and the Tab Center [1]. I really hope it continues to live.

[1] [https://github.com/bwinton/TabCenter](https://github.com/bwinton/TabCenter)

<comment><USER29> On the main [https://testpilot.firefox.com/](https://testpilot.firefox.com/) page, scroll down and click "view past experiments". Each one gets a write-up when it's over.

<comment><USER30> Hey, we're a little behind on writing up the last few experiments unfortunately. We'll be adding full reports over the next few weeks.

</comment></comment></comment><comment><USER31> I don't know here Mozilla got their inspiration, but Send looks pretty similar to our E2E encrypted file sharing app Whisply: [https://whisp.ly](https://whisp.ly)

PS: Whisply even has more features and a detailed description how its encryption works: [https://whisp.ly/static/whisplyTechnicalOverview_20151201.pd...](https://whisp.ly/static/whisplyTechnicalOverview_20151201.pdf)

<comment><USER32> There's many such tools available, RiseUp runs one called Up1. See [https://share.riseup.net/](https://share.riseup.net/)

It's quite nice, has integrated image and video viewers as well as a pastebin all end-to-end encrypted.

<comment><USER31> Up1 looks nice, but is internally using SJCL which is slow and does not support bigger files ("This is not a problem with sub-10MB images"). Send - and Whisply - are built on the new WebCrypto APIs which are faster and allow bigger files, up to 1 GB in both cases.

</comment></comment></comment><comment><USER33> I've seen all the promo videos, and some questions remain unanswered:

1\. What's Send encrypting with? It doesn't show anything related to setting up a password during the video.

2\. What's Notes syncing with?

3\. What's Voice using to analyze the voice commands?

<comment><USER34> >What's Send encrypting with? It doesn't show anything related to setting up a password during the video.

Likely a random string that is added to the download URL as Fragment (the part after # that doesn't get sent to the server).

The download URLs look like this:

[https://send.firefox.com/download/50d43ef5f3/#GqCJXOUnCyxYGc...](https://send.firefox.com/download/50d43ef5f3/#GqCJXOUnCyxYGc7amk7opQ)

I agree that there is very little explanation beyond "look at this cool thing".

</comment></comment><comment><USER35> Wowsers. The Nightly version of Firefox is FAST.

</comment><comment><USER16> Somehow, I assumed "Notes" would be "notes for this page". But, it's just a notepad...no awareness of where I am. That's much less interesting/useful than I thought it would be.

Is there a browser plugin out there that provides a notes sidebar for the page you're currently on, and allows flipping through the notes with a link to the pages they relate to? Because that'd be awesome. Googling only reveals some kitschy "post-it on a web page" type note things, which is definitely not what I want.

<comment><USER36> Look at Hypothesis, which does something better : it allows you to annotate your web pages.

<comment><USER37> Note that Hypothes.is notes are public.

</comment></comment></comment><comment><USER38> Opera 12 called and it's rotating in its grave. Unite was such an amazing feature. And notes were available in Opera even before I started using it. Opera, I miss you, it still hurts.

</comment><comment><USER39> I wish they'd stop focusing on the flavor-of-the-week technology gimmick bullshit and focus on making Firefox the better performing browser. Chrome outperforms it in nearly every way by margins that grow with every release. My reasons for sticking with FF grow fewer every day.

<comment><USER40> Are Mozilla paying for people to do these experiments or is it people sending patches? I don't know but I'd imagine a lot of it is the latter.

Have you tried a recent Nightly? Firefox is getting faster: [http://www.techradar.com/news/firefoxs-blazing-speed-with- hu...](http://www.techradar.com/news/firefoxs-blazing-speed-with-huge-numbers- of-tabs-leaves-chrome-in-the-dust) [1]. As Mozilla continues to pull in code from Servo and implement e10s, Fiefox will perform better and crash less.

[1] discussion: [https://news.ycombinator.com/item?id=14848836](https://news.ycombinator.com/item?id=14848836)

<comment><USER41> > Are Mozilla paying for people to do these experiments or is it people > sending patches? I don't know but I'd imagine a lot of it is the latter.

As far as I'm aware, it is mostly developed by Mozilla employees, but heavily used for new devs to get their feet wet. Not only is it not mission-critical when they make mistakes there, they also get a ton of feedback on their work.

</comment></comment></comment><comment><USER42> Voice fill is awesome feature. Kudos to Mozilla :)

</comment><comment><USER43> Is Mozilla committing publicly to supporting these new features for a significant period of time? I've been slightly wary of integrating new Firefox features into my workflow ever since they cut off support for Firefox Hello in Firefox 49.

<comment><USER41> No, not at all. These are in the Test Pilot program, which is specifically for trying new things and getting feedback if and how they should be included in Firefox.

So, most of these are not here to stay for the long term.

They might be included, they might be published as an extension either officially or just forked by someone, but overall, no guarantees on anything.

</comment></comment><comment><USER44> When is the end of life for these features?

<comment><USER41> These Test Pilot experiments usually last for a few months, but there's no fixed end date, I don't think. It's mostly just a matter of having gathered enough feedback.

But well, if it seems like a feature that people want, then it gets included into Firefox itself and stays for longer.

Then, again, I for example can't at all imagine them including that file- sending mechanism. I doubt they even have the server capacity for that...

</comment></comment><comment><USER45> Looks like a good waste of resources to implement things people don't want in a browser anyway, in a desperate attempt to get people to consider using Firefox again.

If I was Mozilla I'd allocate programming time to catch up with Chrome now that they don't have the phone OS thing anymore, instead of creating more distractions.

They really blew it. I remember a few years ago when I used both Firefox and Thunderbird as my default browser/email client...

</comment><comment><USER46> I feel like I must be reaching the "get off my lawn" phase of my life, because I can't even comprehend a situation where I'd ever want to talk at my browser... maybe when I'm at home alone and, couldn't type for some reason? Certainly not in the office. Am I missing a use case, or am I just old now?

<comment><USER29> Lots of people are faster at speaking than typing. Or maybe you're reading from a document (or pill bottle) and don't want to type with one hand or whatever. But what I usually use it for is if I'm having a conversation with someone and we want to look something up. It feels more anti-social to type silently for a while than to make the computer part of the conversation.

<comment><USER46> But it's _only_ for searching after you've already navigated to a search engine, right? You'd have to be extremely slow at peck-and-hunting for it to save you much time (especially as search strings are so short) - and in the video you have to click "submit" to even do the search (and then presumably navigate normally with mouse). I can't see many instances where this could be worth it. Maybe I'm actually too young to see why it's useful!

<comment><USER47> Maybe the search engine is your homepage, or you just have to hit "g" and enter to get there, or it's bookmarked. Maybe you don't have hands, but you have an easy way to move a mouse around and click. Maybe you're eating a sandwich with one hand and don't feel like putting it down. Maybe you won't use it for a short query like "weather", but you will for sentence-long queries. Maybe you want to search "linux won't recognize wireless keyboard".

It's very easy to think of instances where this will be helpful.

</comment></comment></comment></comment><comment><USER48> But why?

It's a browser. All it should do (and do well) is display content.

I don't want a bunch of extra garbage tossed in because it sounds good on some marketing slide.

Chrome has been and continues to eat FF's marketshare alive because it has been both faster and lighter. More junk is not going to help FF beat them.

<comment><USER49> > Chrome has been and continues to eat FF's marketshare alive because it has > been both faster and lighter.

I believe Chrome got a larger market share also because it had the giant force of Google marketing it heavily on its properties for years, whereas Firefox only had some support of that sort from the Yahoo search deal (IIRC). More people land on Google's online properties than on Yahoo's.

I personally don't agree that Chrome is faster and lighter. For me (as a heavy multi-tab user) it has always been slow as molasses and a laggy browser.

</comment></comment><comment><USER50> I just want to browse the web!

<comment><USER51> What's stopping you? Optional experimental plug ins?

</comment></comment><comment><USER52> what will happen to test pilot after the non-webextension are not allowed?

As far i know must of these feature are implemented as extension and i don't thing webextension have the api to do a lot of thing that are in test pilot.

<comment><USER30> We're moving to a webExtensiony future. The idea here is that we'll be a first party consumer of the webExtension APIs so we can help test/drive/expand capabilities.

</comment></comment><comment><USER53> I don't need any of this in a browser, and if I did, it feels like extension territory. Weren't Mozilla over this? Here I am, looking forward to Project Quantum technologies.

</comment><comment><USER54> What would be useful in FF is a content blocker, especially in the mobile version. Not pocket, file sharing apps, voice, notes. There are web apps for that.

<comment><USER41> Go into about:config and set "privacy.trackingprotection.enabled" to true. This is default-enabled in Private Browsing.

Also, uBlock Origin and similar are perfectly functional extensions. Takes just three clicks to install uBlock Origin on a fresh desktop Firefox installation.

If you're wanting to tell me that this content blocker should be default- enabled, good luck explaining to webpage owners that they won't make ad money off of Firefox anymore, but should still support it.

<comment><USER54> I already have uBlock Origin on Firefox on the desktop. It shoudn't be enabled by default but a content blocker would be an useful addition to a browser rather than notes, voice, pocket, chat and who knows what lass than useful feature they might think of next.

</comment></comment></comment><comment><USER55> I was interested in Send until I realised it wasn't p2p.

:(

</comment><comment><USER56> I only want a sweet WaveNet-based TTS voice. Baidu's DeepVoice seems promising.

</comment><comment><USER57> I don't know about other users but I use FF less and less. I don't need all this additional stuff. And it was painful how we lost features like the firebug plugin.

It's a pity considering a few years back I was the greatest FF fan.

</comment><comment><USER58> send.firefox.com says that my browser (Safari) is unsupported. Anyone know what particular "web technology" the site uses that Safari doesn't support?

<comment><USER29> This is the only one I can think of, not sure why that site would require it though. [https://caniuse.com/#feat=input-file- directory](https://caniuse.com/#feat=input-file-directory)

<comment><USER58> Found it. It's checking for window.crypto.subtle. Looks like Safari TP supports this. I believe the problem with Safari 10 is that it implemented an older version of the web cryptography standard.

<comment><USER30> yep

</comment></comment></comment></comment><comment><USER59> This browser is more and more bloated... :-(

<comment><USER35> These featured come in an optional extension and your comment is fud.

</comment></comment><comment><USER60> Mozilla is doing everything but what is supposed to do:make Firefox blazing fast.

<comment><USER61> They actually did, the recent switch to multiprocessing made a massive difference. I've been happily using Vivaldi for a few months now, but I'm tempted to go back to FF as the speed gap has been wiped out of late - <USER2> cold startups are a bit slower, actual pageload is absolutely on par or better. This on Mac, at least, but I expect it will have been similar on other platforms.

<comment><USER60> Last time I tried it still was slow... I'll give it another try.

<comment><USER62> When was the last time you tried? R55 is way snappier than Chrome. Nightly is also fast.

</comment></comment></comment></comment><comment><USER63> None of these will get me to switch. Chrome is still faster than Firefox, sorry Mozilla.

</comment><comment><USER64> Firefox is the browser I really want to like, but can't use. I recently tried to switch back, I kept running into problems with webpages not working, figured it must be an add-on, removed them all, still frozen pages persisted. A web browser that chokes on pages frequently is dead in the water for me.

Then there's the lack of compatibility with their mobile browser for extensions, so most of my extensions didn't work on Android tablets. It was definitely faster than it had been the last time I used it, but at this point, it needs to be significantly better than Chrome to win back users and it's not there except for a small group of people.

I do feel that the Voice Fill is a step in the right direction. I'd prefer that the notes application was a dedicated product with an add in that tightly integrated with the browser, a webapp in a wrapper would be fine really.</comment>


Programming With Types, Not Tutorials - <AUTHOR> https://www.fpcomplete.com/user/chowells79/types-not-tutorials#desk-darkness <comment><AUTHOR> This article gives a nice glimpse into the essence of why modern strong static type systems like Haskell's are such a huge win for development. The type system gives you a way to bound the number of things that you must understand about an API in order to use it. The confidence that we get from having these guarantees makes code reuse orders of magnitude easier in Haskell than it is in pretty much any other language in mainstream use today.

All this reminds me of a comment made by a friend of mine awhile back when he was learning Haskell. He said that programming in Haskell feels less like programming and more like putting together a puzzle. I think this article very nicely captures what he was getting at.

<comment><USER2> > ... like putting together a puzzle

It's funny how lots of good formalisms, notations, and DSLs all achieve this quality in different ways.

In particular, this reminds me of the mathematics of tensors, or Bra-Ket notation in QM. Both of these systems use notation to give each piece of the puzzle a particular _shape_ , so that if you know all of the pieces you can often see immediately how they should fit together.

This seems (to me) to be the most important part of designing an API, and the brilliant strength of a good type system is that you get this quality for free.

<comment><USER3> > [...] get this quality for free.

Let's say, for much cheaper. Designing a good API in Haskell still requires work---but it's arguably easier to get right than in most other languages.

</comment></comment></comment><comment><USER4> I honestly have no idea what all of that does. I'm sure I could work my way through it, but still... in other languages you can get a glimpse of the purpose of a program even if you don't know the syntax. You can tell whether it is a parser, a game, a Hello World, or a web application.

The other thing I dislike besides the opaqueness of Haskell is what another commenter described as "mechanically filling in" of code. I get that feeling every time I try strongly typed functional languages. I had the same feeling when I started with C++ and stuggled with `const`. I had an idea in my head, but couldn't convert it to code because the compiler didn't allow it. Instead of helping me, the syntax slowed me down, took me out of the "flow". It rarely, if ever, helped me avoid bugs. Now, I've probably learned avoidance strategies, and rarely have problems with `const` anymore. Haskell gives me that old feeling of programming in a straightjacket, multiplied by 1000.

<comment><USER5> If you don't know functional programming, of course you won't be able to understand functional code at a glance. You wouldn't expect someone who doesn't know imperative programming to intuitively understand imperative code at a glance either. It's not opaque, it just requires learning.

Not being able to convert the code in your head into type-safe functioning code just means that you don't understand the code well enough yet. That's not a bad thing about you or about the language, it's just the state of things. Once you gain that understanding, you'll be able to write code that compiles, and you'll also discover that now the compiler is your best friend. Writing Haskell is extremely comforting to me, because I know that the compiler has my back. It's not a straightjacket, it's a guardrail alongside a mountain highway.

<comment><USER6> I don't think it's about functional programming, not even type systems. It's about all the idiosyncrasies Haskell throws at the programmer. Even the author adds in the end:

> I still don't really understand free. I definitely don't have a clue what > kan-extensions are in general, or what Coyoneda is specifically.

So, he got a working program (because it's assumed it works if it compiles), but can't explain why, what the components are or do. I'm sure there are a plethora of strong points about Haskell, but his conclusion that you can just gloss over it is not making a good case for it in my opinion, it's actually a huge red flag.

<comment><USER5> I think you misunderstood the article. He knows exactly what the components allow him to accomplish, he just doesn't know how exactly they work or any of the math behind them. This is directly analogous to the situation in every other programming language: very few programmers know exactly how every library that they use works. This is good, because in practice there isn't time to learn the intricacies of every one of your dependencies.

To be clear, this also has very little to do with Haskell. kan-extensions is a library, it's not a part of Haskell itself. His point is that if you had a kan-extensions package in some other language, it would be a hell of a lot more difficult to use it in your program without learning the math yourself. And again, the key point here isn't that you can gloss over what the library allows you to do, it's that you can gloss over the complex abstract mathematics that went into the creation of the library. You can get the benefits of free monads without taking a course in category theory. That's definitely a good thing.

</comment></comment></comment></comment><comment><USER7> Sort of off-topic, but wow, this is a really neat presentation format for tutorials. Love the markdown source[0] and the "open snippet in IDE" features.

[0]: [https://www.fpcomplete.com/tutorial- raw/5133/cf0de9edd526ea5...](https://www.fpcomplete.com/tutorial- raw/5133/cf0de9edd526ea54e3b79358039b3090fbfddd37)

</comment><comment><USER8> Is this a good thing? What the development process in this post appears to involve is a mostly-mechanical filling in of function definitions to match a pre-given type signature; but, if it's mechanical, shouldn't the compiler be able to do it for us?

<comment><USER9> Haskell is absolutely fantastic. In C, when I'm given only the prototype of a function like:

> int foo(int, int);

Even if you tell me it is referentially transparent, I have no idea what that bloody function really does.

But with HASKELL, with just the type signature you can write a program that does what you want even though you don't know what the components you used do! Mind/Blown.

<comment><USER10> I Love Haskell but I think sometimes people give it more credit than deserved. So you say

> int foo(int, int);

Doesn't tell you anything. Ok, you are right! But that code translated to Haskell would be:

> foo :: Int -> Int -> Int

How does that give you more information about foo than the C code above?

Now if you say you use type synonyms in Haskell, I would agree, but you can use typedefs in C as well.

<comment><USER11> Well it does tell you that there are no IO computations with side effects. So you really are restricted to the Int type and the operations that can be performed on it.

You get much stronger statements by using type variables (not type synonyms). This is actually laid out rather clearly in Theorems for Free by Wadler[1]. The essence is that the more generic a type signature gets, the more you can reason about it's behavior. Since if you want to perform (+) (-) (*) (/) for example you'll need to include a (Num) constraint.

[1] [http://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf](http://ttic.uchicago.edu/~dreyer/course/papers/wadler.pdf)

<comment><USER12> > So you really are restricted to the Int type and the operations that can be > performed on it.

That's so vague it's almost meaningless, and doesn't support the original assertion, which was "But with HASKELL, with just the type signature you can write a program that does what you want even though you don't know what the components you used do!"

Even given a simple thing like foo:: int -> int -> int, there's really no way to tell what it's doing. It could be multiplying the arguments together, dividing, adding, computing psuedo-random numbers using two seed values, ...

Not only that, but I'm not sure it's true that it's limited to the Int type because there are things like System.IO.Unsafe.

<comment><AUTHOR> > Even given a simple thing like foo:: int -> int -> int, there's really no > way to tell what it's doing.

Ahh, this is an important point. The reason you can't tell what it's doing is because it is quite concrete. One really cool thing about this kind of type system is that the more generic your functions, the more you can tell about what it's doing. Consider this function:

        foo :: (a, b) -> a

There's only one possible thing this function can do! And there's only one possible implementation--the correct one. This is the case because the types involved are completely general. Type signatures can communicate a lot more than one might think.

<comment><USER12> That's all well and good with a trivial function like foo :: (a,b) -> a, but for most non-trivial functions it won't be so obvious, and that's exactly when it's most helpful to know what's going on.

<comment><USER11> a.) Many functions in Haskell are this trivial. map, fold, etc...

b.) Functions that are non-trivial will have additional constraints often hinting exactly at what the function does.

Most important is not the fact that you can write poor Haskell code which does not exibit this self-documenting behavior, but rather that if you choose to exploit the type system it has the expressiveness to allow you to do so! (and enforce it)

If you are working with a Haskell library and see a function with the signature (IO Int) you may start to question your choice of library :)

The only problem is, once you get a taste of this power it is easy to yearn for even more such as dependent types (i.e. Agda, Idris...)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I'm just starting to learn Haskell, reading "Learn You A Haskell..." I didn't realize that Haskell documentation isn't considered very good. Does HN agree with that? Are there any must read documents besides the official ones and Learn You A Haskell to mitigate that problem?

<comment><USER14> A lot of intermediate Haskell material (and advanced Haskell material) is locked up in a series of papers. They're usually well-written, but the intermediate Haskell canon is not well-defined nor is it in a comfortable format; I often find that when I recommend a paper to someone they have a tendency to be turned away... even if it's a tutorial paper not so different from a blog post.

<comment><USER15> If someone started a blog where they give an approachable overview of all these papers, would that be helpful? Would such a blog be considered rude since many people would read the blog summary instead of the actual paper?

<comment><USER16> Okey, this is a question to the parent of the comment I reply to. (I couldn't reply to tel for some reason).

Do you have any example were the documentation available is only scientific or technical papers? I've been learning Haskell for a year now, and even though I've read some papers due to interest I've never felt like it was the only form of documentation.

<comment><USER14> I'd say that people often reference intermediate Haskellers to a number of major papers like Data Types A La Carte or the Typeclassopedia. The entire set of Functional Pearls are released in academic paper form and provide a really wonderful glimpse into "advanced" Haskell style. You also would probably want to take a look at many of the things that Jeffrey Gibbons or Oleg Kiselyov have written.

I could think of others if I dedicated some time to it, but those come up fairly frequently.

</comment></comment></comment></comment></comment><comment><USER17> This is a rather frightening article. Why is it considered a good thing to not know anything about the components that make up your program? This seems like blackbox abstraction taken to its absurd conclusion, where programmers simply wire together type compatible components without any idea of what they're actually doing.

What does the example program even do?

I think this article is one of the best explanations of the visceral reaction some programmers have to Haskell. There's a _lot_ of theory behind Haskell's semantics and libraries, and some people just do not enjoy using something without having any clue of how it works or how it's implemented. Even a hand- wavy naturalistic explanation is better than a dismissive "you don't have to worry about that".

<comment><USER18> Are you implying developers should know the inner details of every library used?

Realistically most devs read documentation or Google to get something done. They only dive into the library if the documentation is unclear or something is broken. Reading well written libraries is a good learning experience, but not a requisite to use one.

In Haskell a function's type signature is expressive enough to exist as rudimentary API documentation.

</comment></comment><comment><USER12> It seems to me that this article actually proves the opposite point that it's trying to make.

I have no idea what the program presented is supposed to do, or what problem is being solved, despite knowing all the types being used.

I swear the point of Haskell is to make people using Haskell feel smart :-)

<comment><USER19> A simpler example would be a basic list operator, given a method you can guess what it does.

        [a] -> a

That takes a list (brackets denote a linked list) and returns a single item. There is a small list of things that this could be. It can't filter or order in any way, since there are no restrictions or functions provided, it can't aggregate for the same reason, that leaves either the first item or the last item.

[Yep head and last]([http://www.haskell.org/hoogle/?hoogle=%5Ba%5D+-%3E+a](http://www.haskell.org/hoogle/?hoogle=%5Ba%5D+-%3E+a))

Looking at that list we can see some other alternatives that I mentioned

        foldl1 :: (a -> a -> a) -> [a] -> a --Aggregation
        maximumBy :: (a -> a -> Ordering) -> [a] -> a --Ordering
        maximum :: Ord a => [a] -> a
        (!!) :: [a] -> Int -> a --Indexing
        sum :: Num a => [a] -> a --Aggregating
        product :: Num a => [a] -> a

And if followed along, you will notice all of his implementation points were straightforward.

Note that all of this assumes you have very well written APIs that follow this chain of logic, otherwise you can write things like this.

        second :: [a] -> a
        second _:i:_ = i

It compiles (or would with the default case added) but is rather odd and would throw off this line of reasoning. Similarly by abusing unsafe methods you can do crazy things.

<comment><USER20> Your function second is no worse than head or last. I think you chose a difficult example. [a]->[a] or a->a would be simpler, if a bit boring.

<comment><USER19> I dunno, I like second being a bad choice, the number of times it is useful are very few. `!! 2` is much more straightforward. In contrast `last` is impossible to do that way and `head` is part of the underlying data structure (as in it is a linked list, so has head and tail) so is a gimme.

</comment></comment></comment></comment><comment><USER21> Pretty depressing if you ask me. You're limited to just plugging libraries together if all you understand is the type system. Hey it compiles and runs without error. Congrats. But does it do what you want? Impossible to say.

<comment><USER22> It takes time man. Understanding is a process. You have to start somewhere. Good for him, it was all greek to me.

</comment></comment><comment><USER23> The idea that you don't need tutorials because of the type system is absurd, another whopper along the same lines as Haskell programs being bug-free.

If nothing else, you may need a tutorial to learn to use the complex type system.

<comment><USER24> That's why I was very precise in my statement.

        The great thing about Haskell is that for many purposes, you don't need to understand the math or have a tutorial to use a new library.

and

        But a complaint that you can't use most libraries because they involve math you don't understand and don't have any tutorials? That's one of the silliest things I've ever heard.

Note the word "library" in both of those. I was very precise. Library documentation isn't lacking the way some people complain loudly that it is.

<comment><USER3> Yes. More documentation wouldn't hurt, though. The type system is more expressive than most other languages', but not that expressive on an absolute scale.

</comment></comment></comment><comment><USER25> My issue with this is that, quite aside from _my_ lack of understanding of what's going on, the author is constantly professing their lack of understanding of the underlying details.

> _I still don 't know a thing about what F or Coyoneda mean. But it isn't > really slowing me down._

They're essentially cargo-culting signatures, and while sometimes that can be enough to stimulate proper understanding, I worry that the first time something goes wrong the author will be hard-pressed to solve it. It seems like a useful way to stumble around in unexplored areas; it doesn't seem like a good way to build software you're going to have to maintain and support.

<comment><USER26> I couldn't maintain or understand the low-level code Java depends on without great effort (I know I could if I devoted enough time, which I usually don't have). Same for low-level libraries for C or any other language.

I think the argument here is that -- given that there are no problems with the library; otherwise you're screwed in any language -- type information for Haskell libraries gives you _more useful information_ than docs & tutorials for libraries in other languages.

The author repeatedly asserts that he is not scared of math, and would probably be able to understand the libraries he uses if he spent the time. It's just that he doesn't _need_ to.

</comment></comment><comment><USER27> bcjordan: sorry, I meant to up vote and my thumb missed, hitting the down arrow.

fpcomplete is a nice system for learning. I like the live code and the IDE mode. I signed up for a year paid account, about two weeks ago.

</comment><comment><USER28> As a long time programmer, this gives an insight into why I avoid Haskell. Syntax matters, in part because it has such an influence on style. When I look at the code, I can't read it. There seem to be poor choices on choosingcasesformultiplewords that dependOnContext but are still unreadable.

I can't help feeling that the reserved terms, such as Functor, Applicative, F, and liftF bring the chaos to the thinking process that is reflected in the article. I skimmed it, tried to read it, and still have no idea what the person was even trying to do.

This is a language that discourages clarity.

<comment><USER29> Where are you seeing any discrepancies from camelCase? The only thing I see is that types and constructors (i.e. Functor/Applicative/F) start with capital letters.

Also, to be frank, many languages give a false sense of knowledge portability. "As a long time programmer" may not carry you so far into Haskell (or Prolog, or Forth) unless you've seen something else in their paradigms.

<comment><USER30> > Also, to be frank, many languages give a false sense of knowledge > portability.

This is true, there's a very common psychological bias that people experienced in one domain when encountering a new subject which they find difficult will sometimes blame the new subject matter as flawed or overly complicated instead of realizing the limitations of their own knowledge.</comment></comment></comment>


Hackertopia: Creating a City as a Startup - <AUTHOR> http://intellectual-detox.com/hackertopia-a-better-city/

<comment><USER2> The service industry will commute 60 miles via underground tunnel to and from the utopia. All citizen shall agree in writing to disagree on principles. Criminals, and would-be criminals, will not be allowed to enter the city. The women will be very pneumatic.

<comment><AUTHOR> This comment is neither funny or related to the article. I was hoping the top rated comment would be something that thoughtfully engaged or critiqued the original post.

<comment><USER3> It's a satirical comment. It recreates the style of the article and mixes in some suitable rhetoric to highlight how ... well ... _utopian_ your scheme is.

</comment></comment></comment><comment><USER4> I disagree with most of his ideas, but I love the beginning idea: starting a new city from the ground up.

EDIT: If we're going to make new and arbitrary rules for this place, wouldn't it be cool if there was a cap on business that only allowed for them to employ 30 people or less? Small businesses that are highly specialized working together instead of large corporations who have huge amounts of divided workforces.

<comment><USER5> You would be importing a LOT of stuff necessary to keep your city going.

</comment></comment><comment><USER6> Am I the only one that takes issue with the whole "democratic municipal governments can't work" stance? Corporations shouldn't be run as democracies (with their employees as voters) because the goal of a company is to profit, not to make its employees happy. But cities _should_ have a primary goal of furthering the wellbeing of its residents, and without democratic checks, the city government can create policies that serve only its own coffers.

Imagine you're running the corporation that governs the city. Your aim is to maximize profits. You do this by under-serving and over-taxing your residents, but not so much that they're pushed to move away. Because moving, buying property, and changing jobs or schools is time-consuming, expensive, and stressful, once you've got residents, the amount of tax-hikes or service cuts people are willing to tolerate before leaving your city might actually be quite high. This sounds like a _terrible_ place to live.

<comment><AUTHOR> As a profit maximizing CEO, I would have to mollify your concerns, otherwise no one would move to the city and I would make no profits.

When buying property in Hackertopia, the tax _rate_ would be fixed at the time of purchase. The property valuation (and thus the total amount of taxes) could fluctuate of course. The valuation would be set by a variation of the old two people dividing the pie trick. One party (perhaps the homeowner) would set a valuation for the house. The other party (the city) would have the option of buying back the property at that price.

The property ownership contract would also guarantee that the provision of vital services (electricity, gas, water, etc) be provided at non-extortionate prices (perhaps the contract would specify that the price could be no greater than cost plus 30%). Thus city government would be contractually banned from charging $1k a month for water as back door property tax.

Since the city is making money off of property values, it has an incentive to provide common services such as roads and parks that increase property prices.

A company that screws over its customers or makes promises it then revokes will not be a highly profitable company for long. For a city to be profitable, and to maintain high property, it must continually attract new residents. If the city gains a reputation for screwing its residents, demand for property will plummet, property prices will drop, tax revenues will fall, and profits will fall.

The more the city government thinks about long term profits rather than short term profits the better life will be for the residents. Ideally, the corporate charter would have some tweaks to make the corporation even more future oriented than most corporations. For instance, all stock in the company could be restricted stock that is nontransferable until the owner has owned it for ten years. Executives would also receive dividend paying, non-transferable stock instead of stock options or a pension.

</comment></comment><comment><USER7> Jane Jacobs is essential reading for anyone interested in city planning. A lot of the physical layout and design of 'hackertopia' (layouts encouraging people to interact, emphasis on multi-modal development, de-emphasis on cars) seem influenced by her work. _The Death and Life of American Cities_ is a good place to start.

</comment><comment><USER8> "Any kid over five can be allowed to run around the town like a kid in the 50's"

The reason kids over 5 are not running around town is not fear of cars, it is the fear of abduction. The abduction does not require a car either.

<comment><USER9> I think that the average abduction would be significantly harder without the use of an automobile, with many more opportunities for someone to see / apprehend / alert of the guy carrying a screaming / unconscious / bound child.

In the US, abductions are also very rare. I think the last average I saw was 800,000 a year. Of those, about half were family abductions. After factoring in runaways, accidents, etc., the number of abductions was down to a quarter, or something like 200,000. In a population of over 300,000,000, that's pretty rare indeed (though I admit, high enough to be concerned with in a metropolitan area).

<comment><AUTHOR> Only 21,000 (oops, originally wrote 58,000 which was wrong) were stranger abductions (<http://www.ygoy.com/index.php/child-abduction-statistics/>). Only 115 were "sterotypical kidnappsings" ( child is detained overnight, transported atleast 50 miles, held for ransom or intended to be kept permanently or killed).

<comment><USER9> Thank you -- I think that's the link I was ad-hoccing numbers from, but I couldn't find it.

58,000 is indeed a much lower number than I was even putting forth, though again, as irrational a fear as I know it to be, it's still a consideration for how far my daughter is allowed to go, and the time of her curfew.

<comment><AUTHOR> 21,000 is actually higher than I thought. Very roughly, the average kid has a 0.5% chance of being abducted by a stranger by the time they are 18. That's much higher than I would expect, I personally don't know of anyone who was ever abducted by a stranger as a kid. But maybe it's happened more than I know, it's not something people will generally talk about.

<comment><USER9> I got .00007%, actually. But I'm notoriously dumb with simple math.

<comment><AUTHOR> 21,000 stranger abductions / 74 million kids under 18 = .000289 = 0.03% chance of being abducted per year

(1-.03%) = 99.97% chance of not being abducted in a given year

.9997^14 = 99.6% chance of not being abducted in 14 straight years (from age 4 through 17, assuming kids under 4 are virtually never left alone).

Thus there is a 0.4% chance of being abducted by a stranger by age 18. Of those <1% suffer injury or death. But about half suffer some form of sexual abuse. The other half are unharmed. So the chance of having a traumatic abduction by the time a child reaches 18 is ~0.2% or 1 out of 500.

<comment><USER9> Ah, you win. Mine was 21,000 out of 300,000,000. Thanks for the prompt correction.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> "A house can be built for as cheaply as $70k" Not in california. I looked into building a house, and was given an estimate of $300-500K just for permits!

<comment><AUTHOR> A 3-bedroom modular home can be $74k to construct ( <http://www.nhmodularhomes.com/prices.htm> ). But I've just realized that doesn't include permits, foundation, plumbing, etc, which adds another $75k ( <http://www.nhmodularhomes.com/cost_estimates.htm> ). So that's $150k. Paying $300-$500k for permits is completely insane. What city is that?

</comment></comment><comment><USER11> <http://www.lavasa.com/> is somewhat similar and I have been to this city, it is just amazing.

</comment><comment><USER9> How? The city aims to be a low-cost way of living, and Hackertopia a for- profit entity with a surplus to enable donation to charities. Where does the city's revenue come from? I doubt the property taxes being levied are going to generate sufficient revenue for infrastructure, payment of civil servants (which I didn't see mention of), donations to charities and profit.

Further, if everybody that founds the city brings their own jobs, then who's going to set up the local economy? What funds the initial city development? Where does the power come from? How much are the utility bills? Who do I buy my high speed internet from?

Clearly a lot of thought has gone into this, but I highly doubt that enough thought has. It effectively claims to be the answer to everything, but nothing ever is.

<comment><AUTHOR> Utilities (power/water/internet) would be funded like any other real estate development.

The cities revenues come from real estate taxes. I do think that most cities spend their money in a wildly inefficient manner, and if they were run as for- profit businesses they could provide all the essential services and turn a profit.

But the major upside for the investors in the city corporation would be if the city owns far more land than the initial development. If you buy ten square miles of undeveloped land for $10k an acre, then a city of 25k grows up in one square mile of it, that remaining nine square miles is far, far more valuable than the original purchase price.</comment></comment>


What is the best framework/language to build webapps as fast as possible? - <AUTHOR> I had some really good experience with groovy/grails in the past. I really like how the language is simple and how it could quickly generate the front end for simple CRUD apps. Are there other better options nowadays? <comment><USER2> I came here to tell you that I have wonderful memories of groovy+grails. I used it at version 1.3.7 IIRC.

Last time I tried, version 3.something, gradle was in the middle and things that used to be simple had become complicated.

So... Dunno.

I'd probably invest time in Django.

</comment><comment><USER3> I have written something to help build web apps faster - but it's not really a framework it's kind of like "WordPress for web apps". WordPress provides an interface for users and a CMS so you focus on your blog posts.

With my software all the user accounts, organizations, subscriptions, a complete Stripe Connect platform, all the stuff that accompanies a web app or SaaS is ready for your web app, which you can write in any stack and it's going to be much smaller without those things.

[https://userdashboard.github.io](https://userdashboard.github.io)</comment>