What's new in Python 2.6 - <AUTHOR> http://docs.python.org/dev/whatsnew/2.6.html

<comment><USER2> I loved the multiprocessing module. Getting rid of the GIL is a major win.

I would prefer not having a GIL, anyway, but this is far better than nothing.

<comment><USER3> Removing the GIL won't magically solve any problems.

 _This has been tried before, with disappointing results, which is why I'm reluctant to put much effort into it myself. In 1999 Greg Stein (with Mark Hammond?) produced a fork of Python (1.5 I believe) that removed the GIL, replacing it with fine-grained locks on all mutable data structures. He also submitted patches that removed many of the reliances on global mutable data structures, which I accepted. However, after benchmarking, it was shown that even on the platform with the fastest locking primitive (Windows at the time) it slowed down single-threaded execution nearly two-fold, meaning that on two CPUs, you could get just a little more work done without the GIL than on a single CPU with the GIL._

<http://www.artima.com/weblogs/viewpost.jsp?thread=214235>

<comment><USER2> OK... So it´s not a major win.

BTW, how is threading under Jython?

<comment><USER3> Jython uses Java's native threads, there's no GIL.

Update: Jython 2.5 Easter egg

      >>> from __future__ import GIL
      Traceback (most recent call last):
      (no code object) at line 0
      File "", line 0
      SyntaxError: Never going to happen!

[http://zyasoft.com/pythoneering/2008/06/realizing- jython-25....](http://zyasoft.com/pythoneering/2008/06/realizing- jython-25.html)

</comment></comment></comment></comment><comment><USER4> Something huge in here in case you missed it:

"To reduce memory usage, the garbage collector will now clear internal free lists when garbage-collecting the highest generation of objects. This may return memory to the operating system sooner."

For someone building long running processes or loading data generating millions of unique ints or floats over and over, this is major (though still hard to believe it was ever an issue).

<comment><USER5> I'm not sure I understand why this is "huge." If the working set of the program is stable over time (or slowly growing), it seems like this isn't a significant win: it's only a win when the working set shrinks, and this change allows the freed memory to be returned to the OS more promptly. Your examples of "long running processes" or "generating millions of unique ints/floats" wouldn't necessarily qualify: ISTM that the normal generational GC should handle both those cases fine. Am I missing something?

<comment><USER6> Long story short: CPython uses a custom memory allocator on top of the OS malloc because some mallocs are really bad and python knows more about it's memory usage patterns than the OS. The newer CPython allocator plays better with popular OS's so that repeatedly newing and freeing lots of objects is more likely to return memory to the system.

The old behavior didn't effect server sized systems and typical workloads but it did piss off some embedded apps.

</comment></comment></comment><comment><USER7> Abstract Base Classes will finally allow us some semblance of an interface. Glad that this is one less reason to look to java when teaching the principals and benefits of OO-programming.

</comment><comment><USER8> I am excited by getting unwind-protect, ermm I mean Context Managers into my production code :-)

</comment><comment><USER9> This is great. I'm looking forward to trying it out.</comment>


Whoa, Twitter Mania - <AUTHOR> http://www.techcrunch.com/2009/03/13/whoa-twitter-mania/

<comment><USER2> I know that while SxSW is going on, twitter is going to be useless. I plan to spend much of the next few days outside.

<comment><USER3> If you use Twitterific:

        defaults write com.iconfactory.Twitterrific tweetTextFilter -string "[sS][xX][sS][wW]|Austin"

On second thought, outside _does_ sound nice. Nice weather here in the valley; not so much in Austin, I hear ;)

</comment></comment><comment><USER3> My mom asked me about Twitter the other day. That's how you know some technology or service is going mainstream.

Unless your parents are really technically savvy or something.

</comment><comment><USER4> Twitter is absolutely mainstream now. It's quite weird - in the last several weeks almost all my friends and family have signed up. I'm not sure what the tipping point was, but celebrities appear to have a lot to do with it.

5 million users now -- I expect this to balloon exponentially very shortly.

<comment><USER5> Kevin and Alex from Diggnation were on Late Night with Jimmy Fallon a couple nights ago talking about twitter and doing an experiment. It's seeping into the mainstream very quickly, but it'll die out just as MySpace and Facebook are.

<comment><USER6> I can't remember the last time those guys predicted anything right...</comment></comment></comment>


Why You Should Try tmux Instead of screen - <AUTHOR> http://dominik.honnef.co/posts/2010/10/why_you_should_try_tmux_instead_of_screen/ <comment><USER2> I've used screen for years and years and because of the noise around tmux, I decided to try to give it a spin.

In the end (rather quickly actually) I went back to screen. It's simple. It works. It's reliable, mature and stable. It has the "proper" keybindings which has been around for decades for this kind of software.

Whatever tmux was supposed to provide of additional value I could not find.

Edit: I see that this article (from 2010) says screen doesn't have a menu to select buffers. That's factually incorrect. That feature must have been there already before tmux was started?

<comment><USER3> Add `dvtm' inside `screen' session to your toolbelt. Splits your terminal into few other terminals you can arrange in several ways.

<comment><USER4> Is there additional functionality over native screen (or tmux) capabilities that appear to do the same thing?

<comment><USER3> I don't know, I've never bothered to read tmux' docs. As I hear from colleagues, there's none, apart from more friendly learning curve (dvtm doesn't try to handle sessions).

<comment><USER3> Correction: screen is terrible on the ground of splitting terminal in several pieces. dvtm fills this space elegantly.

</comment></comment></comment></comment></comment><comment><USER5> I've been using tmux for a while. What I like most is the copy mode and its scriptability.

Copy mode allows you to select and copy text using vi or emacs ( whatever you choose ) key bindings. This way, you can go completely mouse free in the terminal. This is also present in screen.

Then scriptability: tmux exposes lots of commands so you can interact with it from a script. There are quite a few plugins out there. [https://github.com/tmux-plugins/](https://github.com/tmux-plugins/)

My personal favourites:

\- [https://github.com/morantron/tmux- fingers/](https://github.com/morantron/tmux-fingers/) copy pasting using vimium-like hints, so you don't even have to enter copy mode ( this one I did it myself </shameless-plug> )

\- [https://github.com/tmuxinator/tmuxinator/](https://github.com/tmuxinator/tmuxinator/) predefined user sessions. Solves repetitively opening the same services/commands every time you start a coding session.

</comment><comment><USER6> I've been using tmux for years now, and the last time I had to use screen (because it was the only thing pre-installed on a server) it felt like going back to the Dark Ages.

Only gripe I have with it is that copy-paste can be fiddly, but that's terminals for you.

</comment><comment><USER7> I'm not a heavy user, but I recently moved from screen to tmux. I initially chose screen because it is installed by default practically everywhere. But tmux is better, so, my take is this: choose tmux unless you'll need to work on servers where you can't get tmux installed.

<comment><USER8> Why is tmux better?

<comment><USER9> Here's an article explaining how tmux is better:

[http://dominik.honnef.co/posts/2010/10/why_you_should_try_tm...](http://dominik.honnef.co/posts/2010/10/why_you_should_try_tmux_instead_of_screen/)

<comment><USER10> That's an interesting article, but do you have a pointer to any discussion of it?

<comment><USER11> Here's a discussion about such an article:

[https://news.ycombinator.com/item?id=12024794](https://news.ycombinator.com/item?id=12024794)

</comment></comment></comment></comment></comment><comment><USER12> I started with screen, but moved to tmux around 5 years ago. For me, the sell was in custom layouts, and the no nonsense screen splitting. I usually work on several different project types, and have a scripted layout for each the of project types. This makes getting started in the morning instant.

Tmux is great, but only after customizing it and making it your own, and this can take a fair bit of time. If you find yourself shelling into remote servers you don't control, or want to use it on Windows prior to Windows 10, then screen is probably a better choice. While tmux could be used on windows through cygwin, I never found it to be stable enough for day to day use.

</comment><comment><USER13> One thing I found tmux surprising for is how it inherits environment variables from the parent process and then loads the profile on top. This makes the resulting environment unusual.

Instead it should either leave the environment as it, or create clean login shells.

<comment><USER14> I thought the default was to create a login shell? See the "Start a non-login shell" section on the Arch Wiki[0]. I turn that off with the option mentioned there: that way it inherits from my current environment - I probably misunderstand what you mean by "inherit" versus "leave the environment as is".

[0] [https://wiki.archlinux.org/index.php/tmux](https://wiki.archlinux.org/index.php/tmux)

</comment></comment><comment><USER15> Pick one and use it.

I personally use screen, because it's what I learnt years & years ago. I also like that sometimes it's there by default when I login to a new server.

...but most linux "power users" prefer tmux.

<comment><AUTHOR> exactly what I thought. Screen is there by default always and tmux would have to be installed sometimes. So maybe I should pick screen even though tmux is more modern and better? Tough choice really. I could see myself on some server someday without the time/option to install tmux and trying to learn screen in 5 mins.

<comment><USER16> I use vim to be prepared for a new server, but do not stay with screen to be prepared.

I only once had a need (easy copy paste in terminal) to get tmux running on a server with no SSH, so I installed it.

For all other machines, which do not have tmux installed I use my local machine and SSH/MOSH with my local tmux. If there is a need to have a long running command on a server, I use tmux to detach the session, fallback to screen for detaching, fallback to SSH nohub

<comment><USER15> cheatmode is have a local statically compiled version of tmux ready to godmode servers you can SCP files to (all of em, if you've got ssh most likely)

That's what I'd do, if a server doesn't have screen/vim and sysadmins are being a nuisance.

<comment><USER17> Unfortunately, the most recent tmux will not build statically.

</comment></comment></comment></comment></comment><comment><USER18> Don't forget neercs!

It has the most useful feature of all: a rotating 3D cube.

<comment><USER19> Somehow that seems even less useful than sl(1).

</comment></comment><comment><USER20> byobu

it can use either as a backend, and makes them better IMHO. YMMV.

</comment><comment><USER21> I was using tmux for a while after years of using screen. At least for my use case, the main thing I liked better about tmux was that windows (or whatever the proper term is) get their names updated based on the command running. In screen, I would have to manually change the name (maybe there is a way around this but I was always too lazy to find out).

Why I switched back to screen:

1\. It's more commonly installed. Not a big deal these days, but still.

2\. It's _really_ easy to resize a window to fit whatever terminal window I'm using: C-a F. As far as I could find, there is no way to do this with tmux.

</comment><comment><USER22> Also check out pymux: [https://github.com/jonathanslenders/pymux](https://github.com/jonathanslenders/pymux)

<comment><USER23> >When several clients are attached to the same session, each client can watch a different window. When clients are watching different windows, every client uses the full terminal size.

Nice.

<comment><USER24> Tmux supports this as well, just use "tmux new-session -t xy" instead of "tmux attach-session -t xy".

</comment></comment></comment><comment><USER25> The last time I used screen it didn't allow you to split windows vertically. This was 2-3 years ago. Is that still true?

<comment><USER26> I usually use screen in a very vanilla way (i.e. logged into some rhel box I didn't build or configure) and in my experience you still cannot split vertically. x_x

<comment><USER27> ctrl-a | is there from long more than 3 years, in the manual page for those willing to read it.

<comment><USER26> Unfortunately for me most of the applications I have access to (and want to have installed) do not have custom patches including functionality like that. I'm left with C-a S as my only native option.

</comment></comment></comment></comment><comment><USER28> Tmux - the config is so much easier to understand and shortcuts as well

</comment><comment><USER29> Why would one prefer tmux or screen over multiple ssh sessions on a nice tabbed terminal program like iTerm2 ?

<comment><USER30> Because if your network drops the connections, you can resume with tmux or screen, but not with vanilla ssh.

<comment><USER31> This is solved with mosh: [https://mosh.mit.edu](https://mosh.mit.edu)

Uses UDP/protobuffs so network connection can be lost/changed/etc.

<comment><USER2> And since almost nobody uses mosh (and let's not talk about security implications of its implementation), problem is not really solved at all.

You know, from a practical point of view.

</comment></comment></comment></comment><comment><USER32> There's also tmate which makes it easy to share a tmux session over ssh.

Not sure if there is something similar for screen.

<comment><USER27> multiuser ? [https://www.gnu.org/software/screen/manual/html_node/Multius...](https://www.gnu.org/software/screen/manual/html_node/Multiuser- Session.html)

</comment></comment><comment><USER33> If someone's looking for a third option: combine abduco with dvtm.

<comment> alch- Woah, tiling window management for the console! That is so awsesome. Thank you, good sir.</comment></comment>


Ask HN: Limited Liability Company while operating in another country - <AUTHOR>

This comment http://news.ycombinator.com/item?id=1585844 spawned some discussion about placing your company in a foreign country.
I'm currently living in Italy, opening a limited liability company here would cost us at least 10k euros as starting capital (2,5k euros at least at the beginning) and roughly 4000 euros as costs for incorporating.
Most important to me, every change of shares would require another 3000+ euros in cost.
So I won't be able to give my startup employees shares easily - we may have a contract written that says (at the end of 2 years or when we sell you'll have % of the company) but that sounds like a pain. Or doesn't it? Also, I couldn't be vesting shares if I done the written contract I said.
I would be still paying taxes in Italy so I would have no legal troubles in opening a foreign limited company.
I was thinking about an English LTD for the low cost and very low starting capital. Also with similar low costs there's Ireland but I've been told companies aren't favorable to receiving ireland companies invoices because of some VAT issues (don't really know about this to be honest). But I haven't found anything on the possibility of easy changing shares ownership.
So, I think it would be great for europe entrepreneurs if you could list these 3 things about your country limited liability companies: -incorporating cost -minimum starting capital -cost for passing shares <comment><USER2> I strongly recommend the World Bank Calculator comparing the ease of doing business in many different countries around the world (Excel Spreadsheet):

<http://doingbusiness.org/documents/Simulator_2010.xls>

Lists a comparison of any country you choose under the following headings:

\- Ease of Doing Business

\- Starting a business

\- Dealing with Licenses

\- Employing Workers

\- Getting credit

\- Protecting Investors

\- Paying Taxes

\- Trading across borders

\- Closing a business

I'm from Ireland and many multinationals come here (or at least used to) for the pro-business climate (favourable tax laws, not much bureaucracy).

Using this calculator, we can see that the US is ranked 4th overall in the world for ease of doing business, the UK is 5th, Ireland 7th and Italy.....78th! I can see why you are considering this option.

</comment><comment><USER3> For LLCs in EU/Romania:

* Incorporating cost is probably about 150 euro if you pay someone else do it, maybe even less if you want to waste time yourself. You need an actual residence.

* Minimum starting capital is 50 euro.

* An LLC doesn't have the notion of "shares" only owners (there may be multiple owners) that get dividends. Changing the owners is expensive (about the same as re-creating the company) and takes time nowadays (30 days).

If you want _shares_ you need a share-based company which has a minimum starting capital of about 22.000 EUR and needs at least 2 initial owners.

Romania's advantage is the 16% flat tax and disadvantage is everything else (bureaucratic, always changing laws, high cost of hiring people -- social taxes, some corruption).

Generally I think it's bad to view incorporation through US lenses if you aren't doing business in US. The US economy uses shares much more as they basically use the stock market as a way to finance the company and shares as a way to loyalize some employees.

An English LTD is probably as close as you can get cheaply but unless it's also worth tax-wise, do take a look at the fiscal implications. You really want to spend time coding in a startup not playing ping-pong with the IRS (and accountant from) 2 countries.

<comment><USER4> Ireland's corporate tax is 12.5% with less bureaucracy and minimal corruption. The company director needs to be a resident of Ireland but there are services which can provide this.

<comment><USER5> The law was changed lately as far as I know. The company director has to be EU resident only.

<comment><USER4> If that's true then since the OP is located in Italy then this could be a perfect solution.

However I know that laws in the UK state that a company is located wherever it's director resides; Italy may have similar laws.

</comment></comment></comment></comment><comment><USER6> It seems to me that an LtD is probably the best option because it's cheap, simple, widely known and used, London's easy to get to should you ever need to do anything in person, and of course it's all in English, which is likely a bit more universal than German or Estonian or something like that.

<comment><AUTHOR> Yep but what about exact costs (I'm thinking mainly the accountant to setup the company there)? And the possibility of transfering shares easily too.

</comment></comment><comment><USER6> I'm really curious to hear if it's 100% ok to have a company in, say, the UK, and for all intents and purposes operate in Italy. I have heard differing opinions on this from various 'commercialisti' (accountants).

<comment><USER7> Yes, this is 100% as confirmed by the (relatively) groundbreaking case law by the European Court of Justice in the series of judgments of Daily Mail, Centros, Überseering and Inspire Art (various aspects of this matter were covered in the various cases: moving a companies head seat between Member States in Daily Mail, the real seat theory as a restriction on the freedom of establishment in Centros, Uberseerung about the recognition of foreign companies in other Member States.)

Source: last semester's Introduction to EC Company Law course in the law school I'm attending. I didn't get stellar grades but enough to remember this much ;)

<comment><USER8> [http://businessupdated.com/shownews.asp?news_id=2031&cat...](http://businessupdated.com/shownews.asp?news_id=2031&cat=Freedom+of+establishment+for+companies)

</comment></comment></comment><comment><USER9> The European Union is going to introduce a new type of company, the European Private Company (SPE): <http://en.wikipedia.org/wiki/European_Private_Company>

One of the ideas behind that type is that it will be cheaper to move your company from one EU member country to the other, without closing down and reopening your company. As it will be a _european_ company structure, the procedures to found it _should ideally_ be the same in every member country.

</comment><comment><USER10> I recently incorporated simply because it gives a level of legal protection and it was so damn cheap.

I used: <http://www.company-wizard.co.uk/>

The cost was 25GBP ~ 30EUR.

There are alot of online company registration services for UK Ltd's there is a fair bit of paperwork and you'll have to file UK returns, accounts and taxes. But recent legislation has made the whole process relatively easy.

The only extra expense I can see is you'd need to have a UK registered office. The above link offers a service of providing you with a registered office for 99GBP however others seem cheaper. For example: [http://www.companiesmadesimple.com/company-services- register...](http://www.companiesmadesimple.com/company-services-registered- office.html)

Will provide a London registered office forwarding service for 40GBP per year.

<comment><USER10> Although reading the rest of the thread it sounds like your biggest problem is going to be Italian regulation & taxation.

</comment></comment><comment><USER11> As roel_v 3 said no other country in Europe can stop you trading in another country. You must pay tax on where the business is located. Where Irish companies are often used is to hold IP, a trading company then pays a royalty to the IP company. Where the business is located, for tax reasons is independent of registration. You need to get some professional advice on domicile of the business.

Irish companies are also useful in that they are quite easy to set up and maintain. The usefulness of them compared to the UK is that Ireland is within the Euro.

</comment><comment><AUTHOR> ITALY:

as I already said: -incorporating cost: 4000 euros

-minimum starting capital: 10000 euros, 2500 to be paid in before incorporation

-cost for passing shares: 3000 euros

<comment><USER12> AFAIK, you only need to deposit 2500 euros (you'll never have to deposit the full minimum starting capital of 10k euros).

And you can take it back a couple of weeks after incorporating.

<comment><AUTHOR> Yep, you only need to deposit 2500 euros upfront but if your startup fails you still owe the remaining 7500 euros.

</comment></comment></comment><comment><AUTHOR> another reply by shedzi (about GERMANY):

"For this reason the german UG (Unternehmergesellschaft - Society of Entrepreneurs) was created. The investment can be chosen freely by the founders, the fees are very low (about 300 Euros) and the only drawback is that you have to put one quarter of the profits back into the capitalization."

</comment><comment><AUTHOR> a reply by fun2have in that sub-thread (about IRELAND):

"Separate corporate structure from where you base yourself. For example to start a limited company in Ireland with accountant fee's etc is about €300. Capital Requirement is €1. And that company can base itself anywhere in Europe. One of the advantages of the Single Market."

<comment><USER3> >And that company can base itself anywhere in Europe. One of the advantages of the Single Market.

Yeah right. Depending on the fiscal code of the other country the company might need to register and even pay taxes there. The Single Market is more about free movement of good / services not about free movement of corporate headquarters with no legal/fiscal impact.

<comment><USER7> Not true, as confirmed by the European Court of Justice in the Centros case which held that member states (in casu Denmark) cannot restrict the recognition (or put additional requirements) on companies established in another country in the EU, even when this is admittedly to skirt around regulatory requirements. Failing to do so violates the freedom of establishment principle.

(it is true that companies may be required to registered and pay tax, my comment was about the part that the single market does not affect the movement of corporate seats).</comment></comment></comment>


Hacking a Google Interview (2009) - <AUTHOR> http://courses.csail.mit.edu/iap/interview/index.php <comment><USER3> All I do at work is fix bugs by changing a few lines of code and glue together API's to send data from A to B. I don't regularly search BST's using DFS/BFS algorithms or find the kth shortest string in a merged unsorted linked list or some shit like that. Preparing for these technical interviews is like a part- time job after my full-time job.

<comment><USER4> For the most part these interviews are not meant to evaluate the quality of a candidate, rather they are meant to evaluate candidate interest.

<comment><USER5> That's not remotely true. (Source: have administered hundreds of these interviews)

<comment><USER4> IIRC, the published results were that above a certain bar, there was no predictive value to interview results. Having interviewed many dozens of people, and been in dozens of interviews, I can confidently say that the current standards of technical interviews do not screen for quality, but interest.

The whole point of having someone study typical problems to the point where they can solve them in 30-45 minutes is not to demonstrate quality at the job. Rather it is to have them signal that they are interested in doing the things they need to do to get hired. Those types of problems are outside the scope of software engineering, and getting good at them requires a significant investment in time.

Yes, they will reduce the rate of false positives somewhat, but greatly increase the rate of false negatives.

<comment><USER5> > the published results were that above a certain bar, there was no predictive > value to interview results

What I said is not exclusive to this research. These types of interviews are not great, but there's no other "accepted" way and a lot (most?) companies are afraid to try new stuff because making a bad hire is very expensive.

> they will reduce the rate of false positives somewhat, but greatly increase > the rate of false negatives.

In addition to what I just mentioned above, the companies that invented and stick to this style of interviewing are well aware of and don't care about the false negatives. Their desire is to reduce false positives and they have a mile long line of willing candidates behind that person if they get a false negative. When you interview at Google/Facebook/etc, your recruiter will tell you that a lot of people don't pass the interview the first time. And if you don't pass, they'll reach out to you again in ~6 months to see if you want to try again.

The companies that use these interviewing processes that _don 't_ have a large pipeline of candidates are doing themselves a huge disservice IMO. But kind of like "nobody got fired for hiring IBM"..."nobody got fired for copying Google".

</comment></comment></comment></comment></comment><comment><USER6> Good SWE interview tips. For those interested in product management interviews at Google I wrote some guidance at [https://hackernoon.com/acing-your-product- manager-interview-...](https://hackernoon.com/acing-your-product-manager- interview-e4f163408cef)

Context: I'm on the Google PM Hiring Committee and help craft our hiring rubrics.

<comment><USER7> What are your thoughts on doing PM right out of school? I interned at Msft as a PM and SWE. Now I'm trying to decide between the two rolls.

<comment><USER6> Congrats on having good options!

Several companies (including Google) have very good associate PM (APM) programs that offer recent grads rotations through a few different roles, mentorship, and a strong peer group. Several APMs end up with rapid upward trajectories at the company and many decide to jump into starting their own companies but it is rare to come across people who did this and regret it.

Some people go into industry or consulting for a bit, get an MBA, and then join directly as a PM. Another popular route (the one I took) is to be a startup founder and learn what works and doesn't on your own terms directly from your own customers.

SWE and PM have very different lifestyles - a PM's day is slammed with meetings and most of your output is email, presentations, spreadsheets, PRDs, dashboards...a SWE's day is more focused on code, ops, design docs - <USER2> interrupts and more focused. But you likely know this as you've lived both realities already! My advice would be to think about which path suits your disposition and to solve for joy, learning, and impact.

<comment><USER8> Unless you are a TL. A lot of overlap with PM work but more eng execution focused.

</comment></comment></comment></comment><comment><USER9> These are useful tips, although the example questions are extremely outdated. I found one tip "interesting" though.

> If you already know the answer, don't just blurt it out! They will suspect > that you already knew the answer and didn't tell them you've seen the > question before. At least pretend to be thinking though the problem before > you give the answer!

Most interview questions are taken from sites like Leetcode. So you would have come across some of them if you work through those problems. Is it really that bad if you give the solution quickly? Some problems have specific "techniques" to solve them which you would likely only know if you solved it before. Are you expected to come up with a completely new algorithm to solve a problem?

<comment><USER10> > If you already know the answer, don't just blurt it out! They will suspect > that you already knew the answer and didn't tell them you've seen the > question before. At least pretend to be thinking though the problem before > you give the answer!

Ah yes, deceit and trickery, the basis of any solid future working relationship.

<comment><USER11> It is absurd that instead of correcting own bias against people who happened to randomly run across exactly the same problem, they advice you to pretend ignorance.

</comment></comment></comment><comment><USER12> I suggest this book the Competitive Programmer's Handbook [https://cses.fi/book.html](https://cses.fi/book.html)

<comment><USER13> Have you read it? If yes, how does it compare to other books specifically meant for interview prep like CTCI, PIE etc.

<comment><USER12> CTCI puts an emphasis on interviews whereas this book is only about competitive programming.

CTCI tries to make interviews about competitive programming, this book is about competitive programming itself.

CTCI offers some high level problem solving advice, and a list of exercises. This book elaborates provides a framework for understanding the exercises and elaborates on techniques for each type of data structure.

</comment></comment></comment><comment><USER14> Can any interviewers at Google or any of these large corporations share about how the interviewing process has changed in the last few years as now Cracking the Coding Interview, HackerRank/CodeWars/LeetCode, Glassdoor, mock interview sites, and even interview-prep bootcamps have become part of the curriculum for potential candidates to prepare for interviews? Do the companies find it as absurd as the candidates do?

<comment><USER15> Not an interviewer in Google, but have been in Google.

I've read CtCI, used the mentioned and/or other websites for problem solving and have had 10+ interviews on pramp.com and interviewing.io, both as an interviewer and interviewee.

Due to my experiences and experiences of other people that I know, my conclusion is that the interviewing process has not changed. Google has a pool of thousands of questions, so you likely did not hear the questions that they'll ask you before coming there, unless it's the question to establish whether you're a programmer at all or not (phone screen). Like learning to drive -- you don't go out and memorize every road by heart, but learn how to act on the road and interpret situations, signals and signs. Those resources shouldn't teach you the questions, but teach you how to really be you in an interview and perform at your nominal level.

After going through the above resources, my impression is that they have helped me type faster, make less mistakes in boilerplate and think more about the problem when it's given, before diving into it. Certainly, I do remember a few "tricks" more than I used before going through them, but overall, I think they've helped me very little with the problems in interviews and more with my behavior in interviews. The pattern that I've always seen is that intelligent people who code well pass the interview more often than not and that less intelligent people and/or those who don't code well don't pass ever.

</comment></comment><comment><USER16> I taught the class for several years; I'm happy to answer questions.

Or point folks to some notes from an updated version of the class.

<comment><USER17> I get really nervous with timed interviews, ticking clock freezes my mind.

Wondering if you have any tips for that.

I code in java at my day job but its not really well suited for whiteboard interviews where I have write all this code on the board. Google interviewer was noting down what I was writing on whitboard and said that he will compile the code after the interview. Wondering if you have any thoughts about it, maybe choose something more consise like ruby?

<comment><USER18> Why not compile and run the code during the interview? IMHO it should be way faster than writing stuff on the whiteboard and will save the interviewer the trouble later.

</comment></comment></comment><comment><USER19> This is 9 year old course. Still good for practicing.

"The class is held in room 32-124 from 5:00-6:30 PM on January 12 - 15, 2009"

<comment><USER20> I'm rarely this late ...

</comment></comment><comment><USER21> Given the turn-over at Google is barely 2 years, what's the point? (And it's the largest of most companies too, so, you see what I mean).

<comment><USER22> That's because whatever statistic you pulled doesn't account and adjust for Google's growth which is massive in the past couple of years. If a majority of employees are new hires, then they haven't been there for 2 years and that drags down the average....

We need to stop repeating these statistics with no context. It's incredibly misleading.

<comment><USER23> Yep. The attrition rate is not even remotely close to 50%. My recollection was that this turnover rumor started with a stat that at one point in Google's recent growth, the median tenure of the employees was only 2 years. This stat then got interpreted (and then reported) by some as Google having an obscenely high turnover. Of course, you can't get turnover rate from median tenure, they're completely different things.

If the size of a company doubles in a year, the median tenure will be <=1yr.

If the most junior employees of another company start quitting en mass, the median tenure for the remaining employees will actually increase.

Median tenure is a completely useless in determining how many people are leaving a company.

</comment></comment></comment><comment><USER24> I run a (paid) newsletter that sends fun coding interview puzzles every day. If you're interviewing around (or if you just enjoy programming problems), check out Daily Coding Problem: [https://dailycodingproblem.com/](https://dailycodingproblem.com/)!

<comment><USER25> You should've mentioned that email address is required and solutions are $25 a month. But other than that good idea if the actual puzzles and solutions are valuable.

<comment><USER24> You're right, I updated it to reflect that it's paid. I think email address is implied by the newsletter though.

I'm obviously biased but I think the problems are fun and the solutions are valuable. Here are some blog posts I wrote that hopefully give you an idea of our questions:

Given a table of currency exchange rates, determine whether there is a possible arbitrage: [https://dailycodingproblem.com/blog/2018/01/02/find-an- arbit...](https://dailycodingproblem.com/blog/2018/01/02/find-an- arbitrage.html)

Picking a random element from an infinite stream: [https://dailycodingproblem.com/blog/2017/11/30/random- elemen...](https://dailycodingproblem.com/blog/2017/11/30/random-element.html)

Merging k sorted lists: [https://dailycodingproblem.com/blog/2017/11/29/how- to-solve-...](https://dailycodingproblem.com/blog/2017/11/29/how-to-solve- coding-interview-problem.html)</comment></comment></comment>


DMARC's forensic reports can be used to disclose mailing list memberships - <AUTHOR> http://www.halon.se/blogs/considerations-regarding-dmarc-forensic-reports/

<comment><AUTHOR> In other words; if you're passively subscribed to some occult mailing list, someone could disclose your membership if the mail provider's system send DMARC forensic reports

<comment><USER2> How do I know if they do? Can it be tested?</comment></comment>


Zerocoin implementation bug - <AUTHOR> https://zcoin.io/language/en/important-announcement-zerocoin-implementation-bug/ <comment><USER2> The current market cap of Zcoin is 1,538 BTC [0], so this person created 1/4 of all the coins in circulation (410 BTC), and these guys are saying: "We knew we were being attacked when we saw that the total mint transactions did not match up with the total spend transactions". It took them way too long to realize that they were being outsmarted.

EDIT: u/aftbit also posted this on the thread: "They even cited the ability to detect hacks like this as a key advantage over Zcash. [1]"

[0] [https://coinmarketcap.com/currencies/zcoin/](https://coinmarketcap.com/currencies/zcoin/)

[1] [http://blog.zcoin.tech/zcoin-and-zcash/](http://blog.zcoin.tech/zcoin- and-zcash/)

<comment><USER3> Or alternatively, the developers designed this hard-to-find typo/bug years ago and have now just quietly cashed out.

<comment><USER4> Seems very unlikely since it would inevitably cause many to lose faith in the currency. If they really want to cash out, they can just do what almost every other upstart cryptocurrency founder does and make it clear they're taking some of the pie.

<comment><USER5> If they just want out, the things that happen to the currency don't matter to them - they're already gone.

<comment><USER4> That's true, but if this was the epic exit scam they were planning for so many years, it's a bit disappointing.

<comment><USER6> 410 BTC is half a million dollars.

<comment><USER4> True, but many of these currency founders are looking for millions.

Not saying it's impossible this is a scam, but I still doubt it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Let me get this straight. Zerocoin has a bug, money gets stolen, the bug is fixed. Everyone in the comments lose their shit and call doom and gloom for all cryptocurrencies. The experiment is failed, centralization was right all along!

Meanwhile, centralized systems like credit cards are stolen en masse, identity theft abounds, anybody can file your taxes with the IRS and collect your refund, and an ACH can be initiated against your bank account using all the information helpfully printed on every check you hand to strangers... and no one bats an eye?

I don't get it.

<comment><USER8> Stating the obvious here, but...

Fiat financial security is based on monitoring, paper trails, and legal consequences for fraud. Yes, you can initiate a fraudulent ACH knowing only the numbers printed on a check you received, but you'll probably end up in jail for it. It's far from perfect but it mostly works.

Cryptocurrency intentionally doesn't have any paper trails. Anonymity is the selling point. If you find a bug in the code and exploit it, the anonymity protects you and you likely won't be caught. That means that security depends entirely on the code (and the theory!) being correct.

So yes, when bugs in fact lead to massive amounts of money being lost... some point are going to argue that cryptocurrency may not be a good idea.

(Note: My personal opinion is mixed.)

> Zerocoin has a bug, money gets stolen, the bug is fixed.

You say this as if it isn't a big deal. Sure, the bug is fixed, but the attacker essentially stole 25% of everyone else's zcoin (via inflation), and fixing the bug doesn't bring any of it back. That seems like a big deal to me.

<comment><USER9> Actually the whole point of the distributed blockchain is that there's a very public paper trail. The only hope for anonymity is obfuscating the movement of value through the blockchain, which can be accomplished to varying degrees depending on the sophistication of who is trying to track you. If your theft is high profile enough then you'll have a good deal of trouble liquidating your funds anonymously.

<comment><USER10> it's the ultimate irony. It feels like anonymity because you decouple the "get a bunch of BTC" from "cash out to USD", so it's the worst of both worlds.

It's anonymous at first, so fraud can't easily be reversed. But it's "eventually completely public", so people who might want to use it for anonymity are sitting on a ticking time bomb. Eventually, their identities will be revealed.

<comment><USER11> Indeed, but people just don't seem to get this. As long as people are converting fiat to crypto at the front end, and then crypto back to another fiat at the back end, then there is no anonymity. There may be a lot of obfuscation in the middle, but ultimately the guy who converts back to fiat will be asked the question by his government, "Where did this money come from?" Then he needs a provable paper trail.

Maybe someday enough goods and services will be available to be purchased by cryptocurrency that fiat use will be diminished or eliminated. But at that point, the companies that are accepting cryptocurrency as payment for services will have to keep their own accounting in order to show their governments where their money is coming from. And then again the anonymity breaks down. The customer records, with email, ip, and shipping addresses are part of the audit trail.

<comment><USER12> "I found a printout of the bitcoin key."

</comment></comment></comment></comment></comment></comment><comment><USER13> What's better that stealing magic Internet money? Creating anonymous magic Internet money out of thin air, then selling it. Brilliant.

But seriously, I'm not sure which is worse: Watching your stolen money move around the blockchain knowing you are helpless to do anything about it, or being provably unable to even tell the difference between "real" and "counterfeit" coins.

<comment><USER14> Blockchain and Cryptocoins will face the same fate HYIP forums / Liberty Reserves went through-regulatory enforcement and social stigmatization.

<comment><USER15> > regulatory enforcement

The only place regulatory enforcement could hit Bitcoin is at the fiat exchanges, which are already beholden to KYC/AML.

> social stigmatization

People have already tried that; "Bitcoin is only for illegal drugs and guns!" Didn't work.

<comment><USER16> It didn't?

<comment><USER17> Have you checked the charts? Usage and price are essentially at all time highs, and are creeping higher.

<comment><USER18> People like drugs.

<comment><USER19> Or the Chinese, Venezuelans and Indians are buying BTC because either somebody else is in control of their currency or their currency is out of control.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> all these blockchain currencies seem to have really good bug bounty programs, this one gave out almost half a million dollars (410BTC)

<comment><USER14> Ethereum takes the record for paying out $53 million dollars (943 BTC X 53 = lots). Technically, it wasn't even theft or a bug since Ethereum & DAO proudly claimed "Code is Final Law".

I almost feel like cryptocoin and blockchains are set out to do 1 thing really well-show how superior centralized systems are and how easy it is to trick people with pseudo academic jargon-just read Vitalik's writing peppered with superficial pseudo-academia-charlatan pendant language it's zealots gladly eat up-with little to know effort to dissect and analyze fact from fiction.

<comment> guard-of-terra > how superior centralized systems are

Tell us? Because around here, I saw a huge number of bank fraud basically unpunished. "Yes those guys duplicated your SIM and stole all your funds. Too bad for you since we're not going to even try to catch them."

Centralized systems might be efficient but the rule is, they don't care about you, so it's not your problems that they're going to solve. At least I can have some faith in the code, which is the final law.

<comment><USER10> wait a sec.

Someone steals my credit card, and if I notice within 2 months, I can get everything back. Another advantage is that it doesn't take several hours (and huge amounts of wasted electricity) for a transaction to go through. My bank hasn't been siphoning my funds either. I wouldn't trust any cryptocurrency exchange with holding even 10% of my monthly salary.

Sure, governments can get my bank records. But my bank records aren't literally inscribed on a public ledger! I don't have to make a bunch of fake bank accounts to protect my privacy from the random data scientist with the blockchain, because if I use my main account and my identity gets leaked from some random service I used, then now everyone knows who I am.

It doesn't matter if they don't care about me. Nobody cares about me. But the incentives are partially aligned: systems with higher trust require less friction. And things like credit cards prove that you can build protections.

And "code is law" is not really extendable across society. We have contracts, of course. But almost all contracts include a "Use common sense"-style clause, which is the whole point lawyers and judges exist in the first place.

How can you build "force majeur" clauses into code without some third party arbitrator?

Of course, having a decentralized backbone is neat. A long time ago, anyone could make gold coins! It wasn't like some evil cabal was like "Oh, we shall unify all the currencies and CONTROL EVERYTHING!" Centralization happened because it was kinda useful.

Half of cryptocurrency stories are "techies discover why banks do the things they do". For example: I imagine more and more exchanges will partner up to do off-chain transactions. At one point, a lot of stuff will happen off-chain. Question: what do you think Visa does?

I do not see a decentralized currency ever becoming big enough to be a real fraction of economic transactions without it becoming what most of what we have. Competition is good! But I think some cryptocurrency enthusiasts are in for disappointment if they want critical mass

<comment><USER21> _" Someone steals my credit card, and if I notice within 2 months, I can get everything back."_

No. You may still be liable for $500 if you fail to report it within 48 HOURS: [http://consumer.findlaw.com/credit-banking-finance/are- you-l...](http://consumer.findlaw.com/credit-banking-finance/are-you-liable- for-unauthorized-credit-card-charges.html)

 _" Another advantage is that it doesn't take several hours"_

You hold a common misconception of how transactions work. Bitcoin transactions are transmitted/notified instantly (like credit cards). Transactions will be confirmed and spendable by the recipient within 10min on average (with CCs it takes 1-3 days until the merchant gets the money). Finally transactions are considered irreversible/definitely non-fraudulent after 6 blocks or 60min on average (with CCs it takes 60 days since charge backs are possible for 60 days).

So if you compares apples to apples, Bitcoin is always faster than credit cards.

 _" huge amounts of wasted electricity"_

This is not wasteful: [http://blog.zorinaq.com/bitcoin-mining-is-not- wasteful/](http://blog.zorinaq.com/bitcoin-mining-is-not-wasteful/)

<comment><USER10> that argument about bitcoin mining not being wasteful just shows it's not wasteful compared to other decentralized, trustless currencies. It still loses out to traditional payment methods.

"It will only use 1% of the world's electricity consumption". We can only do that for 100 things. Does "decentralisation of currency" belong in the top 100 things to devote electricity generation to?

EDIT: do you have a link to a fuller explanation about transaction speeds? I do not understand how transfers can happen so quickly without introducing a risk of double spend

<comment><USER21> Why would the argument be only valid when compared to other decentralized, trustless currencies? The benefits indirectly extracted from Bitcoin mining ($1B invested in 729 companies, thousands of jobs created, etc) exist precisely because Bitcoin has advantages over other _traditional_ payment systems.

 _" Does "decentralisation of currency" belong in the top 100 things to devote electricity generation to?"_

I think so. If (big if) Bitcoin ever becomes so successful that 1% of the energy is spent on it, think about the massive scale of positive social and economic changes it means it will have brought: freeing people from economic censorship and persecution, reducing international payment friction hence increasing economic trade, etc.

But I think neither you nor I can envision the scale of such potential social and economic changes. It is like asking a random person from the 1890s how much do they think automobiles will change the world, and almost nobody would have predicted automobiles are a major enabler of the economic expansion of the 20th century.

Transaction speeds: zero-conf txs are at risk of a double-spend, but in practice this happens extremely rarely.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> what went wrong: TLDR probably Ctrl-C,Ctrl-V.

(Just to be clear, this is about Zcoin, not Zcash/Zerocash. The two are completely different)

The fix is here. [https://github.com/zcoinofficial/zcoin/commit/33796c839f7d4d...](https://github.com/zcoinofficial/zcoin/commit/33796c839f7d4df4fb89c2775ec971982cfc8996) What happened?

First, some stylized facts about ZCoin:

0) ZCoin is a fork of Bitcoin that uses a 4 year old academic research library, libzerocoin, to make anonymous payments using the Zerocoin protocol.

1) Unlike Zcash/Zerocash, the Zerocoin protocol has only fixed value coins.

2) To get multiple denominations, you have completely separate instances of the anonymous currency that just happen to live on the same blockchain as the other denominations.

3) Zerocoin has its own bitcoin like non anonymous base currency. Call it basecoin.

4) You spend basecoins to get zerocoins.

5) When you spend zerocoins, you get basecoins.

6) ZQ_WILLIAMSON and ZQ_PEDERSEN are denominations, worth 100 and 50 respectively, defined in libzerocoin.

So what went wrong?

When you convert a zerocoin into 100 basecoin, the ZCoin code forked from bitcoin checked if the coin was a valid instance of ZQ_PEDERSEN (worth 50 ) not ZQ_WILLIAMSON (worth 100). So you paid 50 for the zcoin,got it into the instance for ZQ_PEDERSEN, but got back 100. Free money.

Why did this happen? Well, it looks like in order to support the multiple denominations libzerocoin offers, the ZCoin developers wrote some code for one denomination and then duplicated it for each remaining denomination. There are five in total, ZQ_LOVELACE=1,ZQ_GOLDWASSER=10, ZQ_RACKOFF = 25, ZQ_PEDERSEN = 50,ZQ_WILLIAMSON = 100.

But on the last one, ZQ_PEDERSEN was not changed to ZQ_WILLIAMSON in a few places. This caused the bug.

Caveat: I have nothing to do with ZCoin. However, I am an author of the zerocoin protocol, libzerocoin, the zerocash protocol, and am involved with Zcash.

<comment><USER23> Another major bug caused by copy+paste. I seem to remember a security researcher article months (years?) ago that identified this theme, showed a way to grep a codebase for likely c+p errors and found a load of bugs in real production code that had remained hidden for years. I think I landed there from HN, but my google-fu is failing me now, can anyone else remember it?

<comment><USER24> Interesting.

How would you minimize these type of errors by design or best practice?

I guess languages with a lack of higher order abstractions and no strong type system might be more prone to this type of errors.

<comment><USER25> This isn't a subtle or difficult-to-find case. It's a case of "why the heck would anyone write code like that, in any language, in the first place?" The only language-level abstraction needed to avoid this particular kind of duplicated code, is a loop.

</comment></comment></comment></comment><comment><USER3> Anyone know which line of code they're talking about?

I took a glance at their Github bug tracker and couldn't find any references to this bug.

[0] [https://github.com/zcoinofficial/zcoin/issues?q=is%3Aissue+i...](https://github.com/zcoinofficial/zcoin/issues?q=is%3Aissue+is%3Aclosed)

<comment><USER26> Better look at commits.

I am not familiar with their code base, but latest commit seems like a bugfix: [https://github.com/zcoinofficial/zcoin/commit/33796c839f7d4d...](https://github.com/zcoinofficial/zcoin/commit/33796c839f7d4df4fb89c2775ec971982cfc8996)

<comment><USER27> So... were's a unit test to make sure this never happens again?

<comment><USER28> I rather actually see a real comment if there is no time to create a unit test.

Why does changing ZQ_PEDERSEN to ZQ_WILLIAMSON fix the bug?

Having meaningful named constants would make much more sense.

Edit: On full view of the code, the bug could be avoid if they broke out the if <demoninationX> blocks into their own function, and to prevent "typo" errors, it would be good to have a local variable named current_demoniation = demoniationX, and then reference that local variable instead of referencing the constant everytime.

<comment><USER29> Apparently those are names for 50 and 100 BTC.

From this presentation[1] or the source code[2]:

        1 Lovelace = 1 Bitcoin
        1 Goldwasser = 10 Bitcoin
        1 Rackoff = 25 Bitcoin
        1 Pedersen = 50 Bitcoin
        1 Williamson = 100 Bitcoin

But yes, those are meaningless names in themselves. Metric prefixes like "hectobitcoin" would be better.

[1]: [https://sar.informatik.hu- berlin.de/teaching/2013-w/2013-w%2...](https://sar.informatik.hu- berlin.de/teaching/2013-w/2013-w%20Electronic%20Identity/slides/Anonymit%C3%A4t_in_Bitcoin_.pdf) [2]: [https://github.com/Zerocoin/libzerocoin/blob/master/Coin.h#L...](https://github.com/Zerocoin/libzerocoin/blob/master/Coin.h#L19-L27)

</comment></comment></comment></comment></comment><comment><USER30> > A typographical error on a single additional character in code

Really wonder what this was.

<comment><USER31> == vs = perhaps?

<comment><USER32> Yeah that seems quite possible.

(And people mock me for putting constants first! i.e. if (someconstant == somevar) { ...

[edit: nope, looks like this is it]

[https://github.com/zcoinofficial/zcoin/commit/b20c177032de3c...](https://github.com/zcoinofficial/zcoin/commit/b20c177032de3c4bfae62b5ada768a5dc2b4fa67)

<comment><USER25> No, that is not the bug. See Ian Miers' comments.

</comment></comment></comment></comment><comment><USER33> Exploiting such a tiny bug is damn impressive if you ask me. The bloke who pulled this off deserves the cash.

<comment><USER34> Unless the "bug" was inserted by a developer...

I'm really curious to see the "single character" in question and assess whether it might have been intentional.

</comment></comment><comment><USER35> >trading will resume once pools and exchanges have had time to update their code. A new release will be pushed out pretty soon.

Does this imply this company has the power to stop all trading on the currency? If so, why would anyone ever want to use this?

<comment><USER36> No, it implies they can nicely ask the exchanges to stop all trading, and the exchanges can make that decision or not.

</comment></comment><comment><USER37> Finally money can have bugs.

</comment><comment><USER38> So who eats the loss for this?

<comment><USER39> Every owner eats a tiny bit of it with the downward pressure on value caused by the artificially increased supply. Also, decreased trust reduces demand pressure further lowering value for everyone.

<comment><USER40> It's not really a tiny bit... ~30% of the networks value was fabricated.

<comment><USER41> And every coin owner took a tiny bit of that loss.

<comment><USER42> The currency is down more than 12%.

<comment><USER43> So they've made 18% value huh?

</comment></comment></comment></comment></comment></comment><comment><USER44> Hmm, I know about Zcash and Monero, but I haven't read much about Zerocoin. I'll be staying away, especially after a 410 BTC hack. They even cited the ability to detect hacks like this as a key advantage over Zcash.

[http://blog.zcoin.tech/zcoin-and-zcash/](http://blog.zcoin.tech/zcoin-and- zcash/)

<comment><USER45> That's the point. ZCash could have a bug if the same magnitude, and we'd be none the wiser.</comment></comment>


Kayak founder Paul English launches a new concierge travel venture - <AUTHOR> http://www.bostonglobe.com/business/2016/05/12/drives-uber-helps-haiti-and-may-revolutionize-how-travel-paul-english-soul-new-machine/R2vThUDvRMckM5KoPIjVKK/story.html <comment><USER2> After dealing with the basic lack of humans to talk to for questions on various web based services I've tried to use (Mint, Wealthfront, ZenPayroll), I'm tired of doing these things without guidance of a real, experienced, licensed person, and having to wobble along to figure out important things (like how some expenses are classified, etc) with just the guidance of pretty software tooltips.

I'm probably not alone in this. I think we'll start to see more services that are a bit more high-touch on the employing human experts side.

<comment><USER3> Its really difficult to find a proper travel agent now that all the websites have taken over. Maybe they'll come back.

<comment><USER4> Check out www.anywhere.com. No app needed.

</comment></comment></comment><comment><USER5> I would like to know just how "AI" is used to help the agents, to prove this is not just a conventional travel agency sitting behind a shiny mobile app.

<comment><USER6> They are probably doing the same thing a lot of "AI" startups are doing now, which is starting with just that -- a conventional travel agency sitting behind a shiny mobile app -- and then trying to build the AI on top of the data they collect from human interactions.

</comment></comment><comment><USER7> For those who directly want to visit the site:

[https://www.lolatravel.com/](https://www.lolatravel.com/)</comment>


Ask HN: What does new Linux Code of Conduct bring to the open source community? - <AUTHOR> <comment><AUTHOR> [https://www.linuxfoundation.org/code-of- conduct/](https://www.linuxfoundation.org/code-of-conduct/)

</comment><comment><USER2> Nothing, looking at the replies to this thread.....

<comment><USER3> Or is it chilling effect? No one dares say anything.</comment></comment>


Show HN: I built an open source event-management system - <AUTHOR> https://github.com/iyanuashiri/meethub <comment><USER2> Looks like you committed a .env file previously with some semi-private details contained within it, plus you've hardcoded some Cloudinary API credentials. You may want to rotate them before they're abused by someone.

Edit: oh and some database credentials & getstream.io api credentials

<comment><USER3> If anyone wants to keep secrets in a repo, git-crypt is your friend:

[https://www.agwa.name/projects/git- crypt/](https://www.agwa.name/projects/git-crypt/)

<comment><AUTHOR> Thanks. Checking it out

<comment><USER4> Old commits are still showing the credentials. Recommend following this guide to erase your .env from all commits.

[https://help.github.com/articles/removing-sensitive-data- fro...](https://help.github.com/articles/removing-sensitive-data-from-a- repository/)

<comment><USER5> It's too late now in any case. Removing them is cute, but in terms of security credentials can only be rotated now. Removing them doesn't help when someone has already pulled that history previously.

<comment><USER6> You should still do it for future references

</comment></comment></comment></comment></comment></comment><comment><USER7> Minor bug report:

Edit your profile.

Upload a non-image file.

Enjoy the backtrace.

(Only discovered because uploading an image seems to be mandatory..)

<comment><USER8> Only after signup too :|

</comment></comment><comment><USER8> Attention! Do not sign up!

Everyone's information is public on there with autoincrementing ID's. I am not sure if this is intended, but I didn't realize my information would be public.

</comment><comment><USER9> Would like a public test account to play around with it. Don't feel like signing up.

</comment><comment><USER10> Great stuff, Iyanu. You just need to perfect the UI.

<comment><USER11> I suggest the OP watch this as an example of improving UI, "Refactoring UI: Bad About":

[https://www.youtube.com/watch?v=S6-q5BheEYU](https://www.youtube.com/watch?v=S6-q5BheEYU)

</comment></comment><comment><USER12> Django is a great tool for stuff like this. Well done.

</comment><comment><USER13> Looks good; Needs refined UI

<comment><USER14> Maybe it's wise to split the project into two: the backend API (service) and the frontend UI / UX?

This way, if you're ultimately only interested in the service you're not dragging around the UI stuff (even if you're not using it).

Maybe?

</comment></comment><comment><USER15> Why on earth is this on front page?

<comment><USER16> Because people can show their side projects here. You might be really advanced and not impressed, that's fine. There's always that set of folks who are never impressed. I wish to see more Show HN. I like to see more folks building and less talking.

<comment><USER15> I'm not saying people should not show projects or doesn't belong here. I really like "Show HN" myself, but why did this particular project made to HN front page is what I don't understand.</comment></comment></comment>


What is the best country for startups? Believe it or not, it's Spain - <AUTHOR> http://startup.cat/en/what-is-the-best-country-for-startups-believe-it-or-not-its-spain/ <comment><USER2> *6 year old post</comment>


What will Google offer? - <AUTHOR> https://www.google.com/offers/ <comment><USER2> Since the failure of Wave, does it seem to anyone else the Google has been copying rather than innovating nowadays? Buzz was a copy of Twitter, this is a copy of Groupon, +1 is a copy of Facebook's like button etc...

I'd like to see more innovation and less parroting coming out of them. I don't want my search results to be social - I want them to be relevant and spam free. If they really feel like going "social" is the way to deliver those results, then cool - go with it - but don't just copy what another company is doing. Personally I feel like they're good at algorithmic and engineering solutions to problems and not good at social - why not stick with what you excel at?

<comment><USER3> Agreed, but this one seems to be the perfect fit with google places and checkout. It's not great to see a Goliath taking on smaller competitors, but the truth is that Groupon hasn't innovated much since it launched.

<comment><USER4> Remember that Google first attempted to acquire the "smaller competitor" and its offer was declined. Should Google just restrict itself not to compete in any space where there is a "smaller competitor"?

</comment></comment></comment><comment><USER5> The back button in my browser is broken on this site. I know it doesn't matter for the product itself, but it's one of these little annoying things that leave me with slightly negative - instead of totally neutral - impression.

<comment><AUTHOR> For a company that boasts so much about 'eating their own dog food,' it seems like a lot of things like that get overlooked on most of their new products. I used to call them out all the time on being hypocrites about a lot of the Webmaster / SEO rules they preached and didn't follow on their own domains (ie. canonical URLs, 301 redirects, sloppy URLs, etc.)

</comment></comment><comment><USER6> All the people saying this will "kill" Groupon in some way are missing the fact that couponing is very far from a zero sum game. Customers are not brand loyal to coupon sites, as it's essentially free money, if Google Offers took off, then people would use BOTH Groupon and Google Offers. The only thing all these couponing sites will kill is the margins that restaurants have.

(Also, did anyone else think the subject meant what would Google offer salary- wise to not leave for Facebook? ;))

<comment><USER7> I too thought it would be a parody site of enter your salary and then some Javascript would add 25% to it and add a 4x of it as a 'retention' bonus package of shares. :-)

But I also had to upvote this "its not a zero sum game" aspect of this comment. Just like two 7-11's diagonally across from each other at a busy intersection can (or a circle-K across from a 7-11 etc) can make money there is a huge amount of squish around what constitutes a 'saturated' coupon market.

Google could win just by virtue of the fact that they integrate better with their own properties. That is why I felt Groupon turning down their $6B bid was not particularly wise. We'll see of course, its clear this process is going to complete the full cycle.

</comment></comment><comment><USER8> It's fine that Google is late in to group buying, but the problem is they aren't going to be able to do it any better than Groupon or Living Social so people aren't going to care. As other said, Google killed it with Gmail and it was far better than any other mail service, but how much better can they make 50% off coupons?

<comment><USER9> They don't have to be better if it comes installed on new android phones.

<comment><USER8> Wasn't buzz going to kill twitter too because you don't have to leave your inbox?

<comment><USER9> yeah, but I don't think it's analogous. First, buzz is only useful if your friends are using it too. This isn't true for coupons. Second, there will be a whole lot of non tech savy people that will buy an android phone and click the big icon that says "coupons". I think this is a very different demographic with a much lower barrier for a new user to find it useful.

<comment><USER8> Should be interesting longterm to see how this coupon craze plays out. My mom figured out Groupon, but has no clue what a smartphone is so Google may be a little ahead of the curve for part of the demographic they are after.

</comment></comment></comment></comment></comment><comment><USER10> Goodbye Groupon?

This is going to get interesting. I can see this getting pushed to Android phones, with the option of getting a notification for one shot deals within you location. Pretty sure the Groupon guys are rethinking the offer they turned down.

<comment><USER11> Yeah, this would seem to work really well with the recent Latitude auto- checkin support on Android

</comment></comment><comment><USER12> I would personally use this over Groupon. Especially if it integrates well with all the current Google services I use. I'm sure Groupon is a bit uneasy about this one.

</comment><comment><USER13> question is, is google willing to put salespeople, and build organization which is by nature very 'high touch' business? Putting a shiny offers page is one thing, and following up with the daily deal strategy is another...

<comment><USER14> They already have a small army of salespeople pushing their ad network to SMB. Extending their salespeople's product line to include 'offers' wouldn't be a huge stretch.

<comment><USER15> Sure would. They're totally different things.

In one, google was the first, the inventor if you like, and gathered the customer base slowly, in the other, they have competition, are late to the game, and probably besides tech savy people who read hacker news or other tech magazines very few people would know that Google Offers even exists without some massive ad campaign.

</comment></comment></comment><comment><USER16> It breaks my back button! And it's from Google, the best web company?

</comment><comment><USER17> I'm just hoping that Google won't bend the merchants over quite like Groupon does. A 50% commission seems ridiculous. Hopefully the competition can push that number down.

</comment><comment><USER18> Not another groupon clone please...

<comment><USER19> Not just another one -- the Groupon clone to end all Groupon clones.

And I mean that literally. Once Google enters the game, who else will bother? Either

a) Google will lose against Groupon, proving that it's impossible to dislodge Groupon, or

b) Google will win against Groupon, in which case you'd be crazy to take on Google

David can sometimes beat Goliath, but if King Kong shows up to the fight as well then David should probably just go home.

<comment><USER6> Maybe if it were Apple these would be the only two options. Unfortunately Google does a lot of "half ass" launches. By that I mean they release a product that is the "Google version" of something else that is out there. But they do no marketing, so unless it's amazing like Gmail or Chrome the most likely option is what happens to most things Google clones:

c) Google launches, and some people use it... but not enough to make a dent in Groupon, but just enough people to justify running the service

<comment><USER20> I saw a big billboard ad for the Chrome browser on a UK motorway a couple of months ago. I was very surprised, at least until I saw an IE9 billboard in a petrol ('gas') station the other day.

<comment><USER19> As far as I know, Chrome is the only google product that has _ever_ been advertised. (Y'know, outside google's own ad network.)

</comment></comment></comment></comment></comment><comment><USER21> Wow.....talk about a shot across the bow.

Let the games/war begin.

Is it just me or is Google going to war with too many people ?

</comment><comment><USER22> Lots of inertia to overcome. Google Offers has six options to choose from compared to Groupon's long list of cities and presence in India. (<http://www.sosasta.com/startup.php>)

</comment><comment><USER23> What will Google offer?

More 'me too,' products, more Walmartization of SERPS to kill the small guys and a sliding stock price.

</comment><comment><USER24> Really original branding.

<http://www.sellit.com/pages/default> <http://www.bestbuy.com/>

</comment><comment><USER3> Sorry, Groupon, it's not like you didn't have a buyout chance.

(does this sound coming from the future?)

<comment><USER25> I think you've got that backwards. Google are the ones who will probably regret lowballing Groupon. Google's track record in social anything is abysmal. What makes this half-assed attempt any different?

What Google's entry into this market means is that it will basically kill off any other Groupon clones, and merely solidify Groupon and Living Social's dominance.

<comment><USER26> This isn't social in the same sense as their past failures were though. Orkrut, Buzz, etc all relied on your friends also using those services. Crowd sourced coupons don't have this holding them up.

</comment></comment></comment><comment><USER27> I just made the embarrassing mistake of verbally telling my co-workers to visit google.com "whack" offers (instead of saying forward slash or just slash )

<comment><USER27> wow, AWS goes down and everyone loses their sense of humor :( (or do people not use "whack" on the west coast as slang for forward slash?)

<comment><USER28> Humor isn't typically upvoted on HN. Keep it on reddit, please.</comment></comment></comment>


JavaScript Conquered the Web, Now It's Taking Over the Desktop - <AUTHOR> https://www.wired.com/2016/05/javascript-conquered-web-now-taking-desktop/ <comment><USER2> > It turns out it's useful to have a lingua franca for the web.

No, I don't think so. Most people do not use JavaScript since it is useful. They use it since it is the only option available on the browser. There is a BIG difference.

> Creating desktop apps in JavaScript lets developers choose from a vast range > of freely available code libraries and frameworks, which takes much of the > grunt work out of coding

Lots of languages have a wide array of freely available code tooling and frameworks.

Slightly tangentially though, I wonder if we really _really_ put our mind to it, will we be able to just kill JavaScript ?

I mean, I am sure that there are people out there making a living on JavaScript, but please, take one for the team. Learn something else. I hear it is a hot market for developers.

JavaScript is obviously a flawed language[1] that inspires absolutely bad programming that the rest of us has to deal with. The ecosystem is terrible[2] and the community is full of self-righteous assholes[3] who has the collective attention span of a 2 year old [4].

Let's just call this experiment a failure, cut our losses and just.move.on.

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

[2] [http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/](http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)

[3] [http://atom-morgan.github.io/in-defense-of-douglas- crockford](http://atom-morgan.github.io/in-defense-of-douglas-crockford)

[4] [https://medium.com/@ericclemmons/javascript- fatigue-48d4011b...](https://medium.com/@ericclemmons/javascript- fatigue-48d4011b6fc4#.gc226gtmp)

<comment><USER3> I can't believe this is the top comment. Let's go point by point:

1) JavaScript has its warts and its gotchas like anything else (okay, maybe a few more). So what? Spend 50 hours building _anything_ substantial with JavaScript and you'll get a good handle on them, and you'll be good to go for the next 10,000 hours. Same goes for just about any other language. Focusing on the weird edge cases might make for a nice blog post, but it's not relevant to people actually building things day to day.

2) Growing pains in a very active community? Unheard of! Okay, so this was embarrassing and disappointing, but at least it's been dealt with. You can keep pointing to it if it helps your argument, but that doesn't make it valid.

3) I don't really understand what point you're trying to make here.

4) Again, very active community. Lots of churn. Plenty of reinventing / rediscovering the wheel. If that _really_ bothers you and you're struggling to separate the signal from the noise, I at least understand and respect that criticism. I don't think that's a reason for anyone to stoop to the level you have, though.

<comment><USER4> > Spend 50 hours building anything substantial with JavaScript and you'll get > a good handle on them, and you'll be good to go for the next 10,000 hours.

Spending 10,000 hours building things with JavaScript sounds like a pretty good definition of Hell.

JavaScript is an actively, abusively bad language. It's not that it has a few warts: it's nothing but warts. Its fundamental design flaws are obscured only by its superficial design flaws.

It's a _really_ bad, tasteless language.

> I don't think that's a reason for anyone to stoop to the level you have, > though.

I really don't think he 'stooped' to anything.

<comment><USER5> In case Eich reads your comment: given that it had to be done in ten days and "look like Java", JavaScript is a fine langauge.

(But yeah, compared to languages that were designed over years obviously it's incredibly bad.)

To quote Eich (from here[1]):

" Ten days to implement the lexer, parser, bytecode emitter (which I folded into the parser; required some code buffering to reorder things like the for(;;) loop head parts and body), interpreter, built-in classes, and decompiler. I had help only for jsdate.c, from Ken Smith of Netscape (who, per our over-optimistic agreement, cloned java.util.Date -- Y2K bugs and all! Gosling...).

Sorry, not enough time for me to analyze tail position (using an attribute grammar approach: [http://wiki.ecmascript.org/doku.php?id=strawman:proper_tail_...](http://wiki.ecmascript.org/doku.php?id=strawman:proper_tail_calls)). Ten days without much sleep to build JS from scratch, "make it look like Java" (I made it look like C), and smuggle in its saving graces: first class functions (closures came later but were part of the plan), Self-ish prototypes (one per instance, not many as in Self).

I'll do better in the next life. "

[1] Edit: jwz.org intercepts HN links. See mjgoeke's comment.

<comment><USER6> I'd recommend copy+pasting the link to www.jwz.org if you want to open it...

      https://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1048

</comment></comment></comment></comment></comment><comment><USER7> The salient points of the article:

\- People are stuffing websites into Electron and packaging it as a native application

\- HTML/CSS/JS is considered 'hackable' because it's widely understood by today's semi-power-user audience

Although the article doesn't say it, this seems to imply that:

\- Full-native development unique on each platform is considered too much effort, when you can get a cross-platform app with Electron

\- Other platforms are not very 'hackable'; why is this?

Is this purely because JS has a higher mindshare and marketshare than [preferred platform language] on [preferred platform toolkit] on [preferred platform], or do HTML/CSS/JS applications actually tend to hit a sweet spot in terms of separation of presentation, view logic, business logic? Or is it about the view-understand-edit-deploy lifecycle being easier with HTML/JS apps?

<comment><USER8> What makes JS more "hackable"? Someone find that cartoon about the gaunt- looking guy and the laid-back kid when the girl asks them to hold her coffee and link it [edit: [http://i.imgur.com/76Wtthy.jpg](http://i.imgur.com/76Wtthy.jpg) ].

...Because it gets the hell out of they way and holds your coffee for you and doesn't slap it out of your hand and throw a tantrum because it _was actually a medium coffee_...and it gives you the simplest no-BS object/array literals you can get...IMO opinion everyone wailing and beating their chest bemoaning the fact that JS got where it is fails to understand that it got there because it the "UX" of coding JS is just a lot more pleasant - and you can treat it as a compile target and do your work in a more type-obsessed thing like Typescript if that's your cup of tea without imposing on the underlying "hackability" of the language.

<comment><USER4> > it gives you the simplest no-BS object/array literals you can get

I really don't think that:

        {
          "foo": "bar",
          "baz": ["quux", 1, true]
        }

is simpler than:

        ((foo bar)
         (baz (quux 1 true)))

Quite the opposite, really.

<comment><USER9> Question: Can s-expression list-of-lists really be used to represent an unordered map when it comes to operations like equality? Or rather, does one simply use expectations/context to compare this object to, say

      [["foo", "bar"], ["baz", ["quuz", 1, true]]]

making it a non-issue?

<comment><USER4> > Question: Can s-expression list-of-lists really be used to represent an > unordered map when it comes to operations like equality?

With the right predicates, anything is possible _grin_

I think that context unavoidable: one can't just read a JSON value into a generic data structure, or even into a typed structure: one has to apply the types of one's business logic (e.g. 'user-id' must not only be a string, but a string beginning with either 'E' or 'C'). In that context (pun intended), then it makes sense for equality comparisons to be at the business-object layer, not at the freshly-deserialised JSON object layer.

</comment></comment></comment></comment></comment><comment><USER10> I'm not an expert, but the memory required to render the seemingly simplest of interfaces in html/js/css in a browser today seems excessive. Some web sites bring a reasonably powered desktop to its knees. I'm not sure I want this problem on my desktop too. Though I guess this is just one step closer to having METAL. [https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

<comment><USER11> No one likes that, but

1) HTML/CSS/JS is sill the only truly cross-platform (mac/windows/linux/web/ios/android/etc.) UI platform/ecosystem in 2016, and it will probably stay that way in the foreseeable future because OS makers love their walled gardens.

2) An app's memory efficiency is not a top 10 priority of an average solo-or- small-team developer's concerns, because that's not what most users pay for.

Electron/NW.js apps will only become more common, so I hope things will improve with asm.js/webassembly/etc.

<comment><USER12> Python would like a word with you about point 1)

<comment><USER11> Honest question – how do you build cross-platform application UI in python?

<comment><USER13> I'm not familiar with the Python ecosystem but I imagine there are bidings for GTK, QT, or other UI toolkits. The same applies to most (popular) languages. The claim that HTML/CSS/JS is the "only" truly cross platform stack is simply not true.

The main hurdle that other languages faced was not having a _native_ UI. For example, GTK on OSX or Windows did not feel native. Key bindings were often not native. Similar story with Java (was it Swing?).

The HTML/JS/CSS combo has _exactly_ the same issue (it's not comparable to a native GUI - Cocoa or whatever it is.

<comment><USER14> > The main hurdle that other languages faced was not having a native UI.

Electron faces this same hurdle, but with a twist. It just doesn't care; it picks a rendering target (the web) and simply uses it everywhere. Perhaps that's the approach QT and others need to take as well: stop trying to match Apple's UI on Apple, and Windows' UI on Windows.

<comment><USER15> > stop trying to match Apple's UI on Apple, and Windows' UI on Windows.

Great idea, but make sure it at least looks/feels _good_.

I remember Swing stuff from the late 90s and... IMO the primary issue wasn't so much that "it doesn't look like Windows" but that ... it was a very poor experience.

Copy/paste/keys - yeah, that's an annoyance, but if the UI is clean, friendly, easy to understand and be productive on, people can look past the differences of the native host OS. Swing (and GTK and others) really don't provide a 'better' UX (imo).

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Linux is more successful on the desktop than it's ever been, and Gnome is largely powered by JavaScript. The Gnome extensions repository is a huge JavaScript success. Never before has WM customization been so accessible.

The Universal Windows Platform also has a JavaScript API that is a breeze compared to the old Win32 development process.

Electron is good but just the tip of the iceberg. I think it says more that major OSes have bet their future on JavaScript.

<comment><USER17> More likely they see a lot of programmers who only know JavaScript and they want to offer them something.

<comment> lloyd-christmas Is that a bad thing?

<comment><USER17> No, well programmers just knowing JavaScript is but catering to a wider audience is a good thing.

</comment></comment></comment></comment><comment><USER18> My biggest issue with these apps is the inability to share memory. If I have Viber, Slack, Atom and regular Chromium open at the same time, they all consume copious amounts of memory which I assume is due to the constant overhead layout/JS engines need to keep resident per app.

If I'd somehow opened all these as tabs on Chromium, they would plug into Chromium's already-allocated shared data structures and the memory consumed would be quite lower. I can have Facebook Messenger, Deezer and Gmail open alongside 10+ other tabs at all times, but once I start Slack and Viber alongside Chromium (or Skype for Linux Alpha, or Visual Studio Code, or Black Screen, or any of these trendy hybrid-web-desktop apps), Linux starts screaming and swapping things around; as a result, everything becomes sluggish.

Also, the apps themselves feel a bit laggy even when they have all the memory they need. I know the comparison is not fair, but using, say, Code::Blocks or QtCreator (which are full-blown IDEs) with Atom, I can feel input response differences for some reason.

I have a low amount of RAM on my home PC and I plan on upgrading it, so you can say that my hardware is the problem, but clogging up memory like that is always a waste.

As a test, I just opened Popcorn Time. Right after startup, it uses 200MB of resident memory. The whole GNOME shell + the Xorg process consume around 280MB combined on my PC. That's insane. Yes, it looks beautiful, but it's nothing you can't do with Qt these days. It also supports JavaScript. QML is not hard to learn. It's available for Windows, Linux, OS X, and even mobile. Ditto for GTK+ 3: Vala is beautiful, practically C#, and good enough for at least the UI layer of your app, if not for the whole thing. Qt and GTK+ are both open source and LGPL, which means you can freely link to them even if you develop proprietary software.

I just don't see such a need to make today's apps so bloated (and I don't consider "people have enough memory nowadays" a valid argument). If it's an one-off app made by a small team, or for fun, the trade-offs may be worth it. But for Slack, or Skype for Linux, or VS Code, wouldn't it make sense to put more developer time on it and have a much more performance-conscious application?

</comment><comment><USER19> When I choose softwares, I tend to choose native one over electron or JavaFX ones. It feels more native and more "sincere", like the developer really want to make it a good software. I know this logic doesn't make sense, but I don't mind paying more if it is native. It's like a handwritten letter, not a printed one.

<comment><USER20> > "...I don't mind paying more if it is native..."

I'm curious on how you know this before you even purchase? For example, the Mac app store can have both native and electron apps? You wouldn't know it's native or not until after you purchase it?

<comment><USER19> 1\. File size is a big hint. 2\. Most of the electron apps doesn't replicate native elements completely, so you can guess it from tiny details like shape and shadow of text field. 3\. It is also very common for their windows counterpart to look exactly the same.

</comment></comment></comment><comment><USER21> Ahem. Let me be the first to say, YUCK!!!

I don't understand why people like this language. I am sure it has it's uses etc., but come on, if you want to build a reliable, easy-to-reason program, using JS is just running up a escalator that is going down.

[https://abdulapopoola.com/2015/09/30/why-javascript-seems- to...](https://abdulapopoola.com/2015/09/30/why-javascript-seems-to-get- addition-wrong/)

[http://rhodesmill.org/brandon/2012/js/](http://rhodesmill.org/brandon/2012/js/)

[http://dorey.github.io/JavaScript-Equality- Table/](http://dorey.github.io/JavaScript-Equality-Table/)

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

[http://blog.chewxy.com/2014/01/27/javascript-wat- again/](http://blog.chewxy.com/2014/01/27/javascript-wat-again/)

I can see using js as a target language with a 'transpiler', but JS is just a shitty language to write code.

</comment><comment><USER22> "Adobe's AIR system enabled developers"

it still does, AIR v1.0 was in 2006, we are now at v23.0

Electron is nice but a whole browser engine is a big bloat, you can easily reach 150MB.

Not to go into a debate JS vs AS3, but the AIR runtime have a lot of advantages : AS3 the language is one, the default native API cover a lot of ground, being able to extend those native functionalities with ANE (ActionScript Native Extension) is nice too.

I don't buy the kool-aid that you could use the exact same HTML5/CSS/JS code for both the browser and a desktop app, unless the app is trivial you gonna have to build your UI/UX specifically for the desktop with all the different subtleties between different OS.

So sure you can use something like Electron to easily wrap an already existing web app for the desktop but imho either you are limiting the desktop features you could add or you will soon end up having 2 code base: 1 for the web and 1 for the desktop and that require more resources than just "wrapping it up for the desktop".

</comment><comment><USER23> More systems like React Native are how JavaScript should be done on the desktop rather than cordova-like things running in a node host. It has approachability but also performance and ubiquity of skill set, very little friction and is better suited for integrating native controls IMO.

<comment><USER16> React Native is part of a solid continuing trend. I've had a really good experience with the Appcelerator Titanium JS API for Android/iOS, and for the last couple versions iOS has a quality native JS API itself. Now ExponentJS has entered the ring powered by React Native and looks very very promising.

When a business needs to deploy to several platforms at once, it's a quick and success-proven model that still has good performance.

</comment></comment><comment><USER24> because bytecode isn't slow enough

</comment><comment><USER25> Sure these early days might show this being overkill, or less performant than traditional methods, but my hope is that this newer approach leads to other types of benefical apps. I'm keenly interested in how these types of approaches help for "unhosted" types of apps (see [http://unhosted.org/](http://unhosted.org/)), as well as offline first apps.

</comment><comment><USER26> No. Javascript frameworks/tools change every few months, by the time you finish a project, everything you used has been superseded by something new. Last year's expert is today's luddite. Change at that pace is unsustainable for long term support of applications.

</comment><comment><USER27> There are companies using this in production -- saving time and resources! Example: [https://mixmax.com/blog/turnkey-electron-apps-with- meteor](https://mixmax.com/blog/turnkey-electron-apps-with-meteor)

</comment><comment><USER28> I know many languages but JS is what a lot of new companies need, therefore I have devoted myself to it. On my own time, I like to code in C, because it is a pleasure to use something so fast and close to the metal, and requires such a different style of programming (disciplined paranoia) and allows me maximum control over application resources.

<comment><USER29> IMO C and JS both stink. Give me statically typed, memory managed, expressivity or give me death.

<comment><USER30> C is a necessary evil (debatably necessary, but at the very least quite useful).

Apart from that, I agree with you. Static typing is a core tool for helping me manage complexity, and I wish I got to use it in my work.

</comment></comment></comment><comment><USER31> Ya, if JS went away tomorrow and replace by something else I would be happy about it.

</comment><comment><USER32> Everything evolves, and this is where evolution has led us. Unfortunately.

<comment> xkcd-sucks JS is the cockroach of programming languages

</comment></comment><comment><USER33> JavaScript didn't "conquer" anything. It was just one of the first languages around when the web was still in its infancy, and simply never went away.

<comment><USER34> You're in denial. Javascript is everywhere nowadays. It has become the English of languages. It's not my favorite language but it has improved extensively.

No one wants to maintain a web app, mobile app, and desktop app separately.

<comment><USER35> > It has become the English of languages.

I'm pretty sure English is still the English of languages.

JavaScript might be the English of _programming_ languages, though.

<comment><USER36> You win the pedantic award for today. :)

</comment></comment></comment></comment><comment><USER37> bologna.</comment>