Does anyone else think that Apple made terrible decision hiding scrollbars? - <AUTHOR>

One of new features in OS X Lion will be automatically hiding scrollbars.
I think usability-wise it's terrible decision. Let me explain why... It makes sense in iOS - which operates on mobile devices - where screen estate is precious.
But the gain of mere 20px (or so) of screen width on desktop? All that while most desktop screens are wide enough for majority of content. What we loose on the other hand, is important indicator (working from the very first glance) that document has more content than you can see.
Indicator that was there since beginning of GUI and working well.
It seems to me that OS X devs started blindly copying iOS features, without thinking about reasons why they were there.
Maybe I just overlooked something... What do you think? <comment><USER2> You're absolutely right. You can't always tell whether there's more content below if there's no scrollbar. I don't want to have to scroll just to see if there's more content.

</comment><comment><USER3> The bar shows up briefly while scrolling. I can't remember the last time I clicked on a scrollbar to scroll... That said, I'm sure some do but without playing with it, we don't know if it appears if you hover the mouse over that area or not. It's one of those you gotta play with it but for me not an issue

<comment><AUTHOR> Yeah, but user might already be on his way out - not seeing what he was looking for - without making any interaction with website.

The only way I can see it work, is to show scrollbar on every mouse movement. But than I don't see any benefit of hiding it in first place.

However I agree with you that we will see how it works out, when people start using it.

The worst case scenario is probably increased bounce rate on some websites, decreased conversion rate, and some confusion for users.

<comment><USER4> Too soon for these suppositions.

It's like the "users don't scroll" myth. If a user is reading to the bottom of the page he _will_ flick it up to see if there's more below. And it's the designer's job to make sure that the right content is findable above or below the fold.

<comment><AUTHOR> I agree with designer's responsibility to maximize "findability" of content - however it's simply impossible to design for every single resolution and size of window. Until now, at least scrollbar was always there, no matter what resolution (if content was bigger), indicating more content. I agree it's to soon to predict effects of that change, and I'm not trying to do that. I'm just trying to understand what would be the benefits/reasoning behind the decision to change standard GUI element that already worked well.

</comment></comment></comment></comment><comment><USER5> No, it's a great decision. It's less clutter on the screen.

FYI, the scrollbars are always visible on my MBP 2011 using just a trackpad. I love it.

If they did disappear, it's merely a quick two-finger touch of the trackpad to see where I'm at and how much is left.

</comment><comment><USER6> For the record, it only hides scrollbars when you're using a trackpad. If you use a mouse, the scrollbars stay visible at all times.

As for whether or not it's a good idea, in practical experience it seems to be fine.

</comment><comment><USER7> 1920x1080 spilt vertically = 960 = same size as the common 960 grid layout. With scrollbars and chrome, a 960 grid does not fit.

<comment><AUTHOR> I highly doubt that would be a factor in that decision. 1920x1080 is native resolution only for iMac 21.5-inch and Mac Book Pro 17-inch(1920 by 1200) so it probably isn't the most widely used resolution among apple users. And most of 960 grid layouts actually use 940px for content (20 pixels are left for margins) - so that would fit with scrollbars anyway... Also, even if you would have two sites using full 960px, you would still have to align windows with pixel perfect precision not to cut anything out.

<comment><USER8> Sorry for off topic: You can align windows perfectly every time with SizeUp (<http://irradiatedsoftware.com/sizeup/>).

Disclaimer: I'm just a happy SizeUp user =).

</comment></comment></comment><comment><USER9> You can try it on the latest Ubuntu - it works in a similar way. I haven't had any issues with it.

<comment><AUTHOR> Thanks for that info. Will try it as soon as I will get around Ubuntu box.</comment></comment>


Front End Performance Checklist - <AUTHOR> https://github.com/thedaviddias/Front-End-Performance-Checklist?ref=producthunt <comment><USER2> It seems like a comprehensive checklist, although it is still a work in progress. Hoping the author creates something similar to gtmetrix where anyone can quickly check and see the recommendations.

<comment><USER3> Google already has a page speed tool which gives you recommendations and the actions to be taken.

The sheet has links to npm packages which can be integrated in your workflow.</comment></comment>


C vs. Rust vs. Go for IDS - <AUTHOR> I have spent a lot of time writing network tools with Python's scapy module, which I love. I prototyped an Intrusion Detection System using scapy, inspired by Snort, but know it will not be able to process a large amount of packets and want to start programming with a faster, more powerful language.
My issues are:
-C seems like the best option speed-wise but there is very little documentation for doing certain things, like IPv6, for example. -I can't get a straight answer out of anyone for whether to choose Go over Rust, or vice-versa.
My question is, if I want to write programs that process, parse, and classify a large amount of packets, which of the three languages would you suggest learning? <comment><USER2> There are several blog posts out there on the Go vs Rust debate and how both languages are not really in the same boxing weight class, so to speak, but people tend to compare and contrast the two languages more often because they both launched around the same time. With that said, I'll take a crack at this question... Without having to define what "large amount" means to you or others, I would guess you want to pick Rust. Go uses a runtime to perform garbage collection; while Rust is not runtime-based (no garbage collection), and manages memory with zero-cost abstractions and a very strict compilation process. So, if you're turned off by your applications being attached at the hip to a garbage collector that will cost precious milliseconds, then Rust is a better choice. It's also a better choice for having more advanced language features than Go. Rust is a LLVM-based language so I believe Rust can target more platforms than Go, but Go has a better story for easier cross-compilation right now. However, one of the Rust team's goals for 2018 will be focusing on easier cross-compilation.</comment>


Germany's Chinese investment problem - noir-york http://www.politico.eu/article/germanys-chinese-investment-problem-sigmar-gabriel-eu/ <comment><AUTHOR> When the Czech republic and other ex-soviet states dropped communism and started "moving west", the west greeted these countries with open arms and a chorus of "opening your countries up to foreign investments will spur growth and make your economies flower!" The Czech Republic responded, by allowing foreign investments essentially without reservations. This lead to a highly corrupt fire sale, called the "privatization process" in which state assets were sold off for far bellow market price to foriegn investors. Czech people, just comming out of communism, of course, could not afford to invest in their own country. Now, most of the valulable assets have been sold off, and the Czechs, to a large extent, live in a country which they do not own.

Now, when the Chineese do the same thing, but in much fairer circumstances (Germany is hardly recovering from a repressive communist regeim), we're crying foul? I do not like foreign investment, but a part of me is satisfied, that the West is finally getting a taste of it's own medicine. Not that it will reverse the damage done, and not that two wrongs make a right.

<comment><AUTHOR> At the same time, there is a similar smell of unfairness. Chineese companies a free to invest in the west, but western companies aren't free to invest in China. China is like "we're all for free trade, but no, Google can't buy Baidu" or whatever.

<comment><USER2> Firms in China also have massive state subsidies due to currency controls and bank funding requirements.

In the 1980s Japan went on an international buying spree only to see its economy crash in the late 80s/90s. Eventually even government supported economies crash, and when that happens Chinese companies may regret being so aggressively acquisitive.

</comment></comment></comment><comment><USER3> "Oh woe is us. Who will save us from downing in all this Chinese money."

There were exactly the same concerns about Japanese investment back in the 80s. Now doing business with Japanese firms and companies like Sony owning major American firms is just natural. They're not weird alien creatures from space anymore, they're our business partners and investors. It's normal. The same will happen with China.

<comment><USER4> This seems to ignore the main objection. It's not that Chinese companies are investing in European economies, it's that these companies are run by the Chinese state, and that China is not providing reciprocal access to its own market to Western companies. This is not natural free-market activity, it is a state-sponsored effort to take technology and expertise from European companies and feed it into state-owned Chinese ones.

For all the fears raised recently about rising Western nationalism and protectionism, the Chinese regime is blatantly and unashamedly nationalist and protectionist as a matter of course. The state decides who wins and who loses, and they will simply not allow foreign companies to gain a dominant market position in any significant sector. All market activity, including foreign investment, is tolerated only so long as it is subservient to the nationalist goal of Chinese hegemony.

For years, Western politicians and businesses have turned a blind eye to China's flagrant disregard for the basic rules of free global trade. Partly out of greed for Chinese money and market access, and partly due to an entirely wishful assumption that this is only a phase, and that China will eventually start playing by the rules and acting like a "normal" free market economy.

This delusion demonstrates a fundamental misunderstanding of how autocratic regimes like China operate. Just as they cannot, and will not, tolerate any significant internal competition to their own authority, they will, in the long term, not tolerate any _external_ competition either, either political, military or economic. The Chinese state will never be satisfied being one powerful economic actor amongst others, all playing by the rules of a global market. They will never accept being checked by laws of trade or other country's interests, any more than they will tolerate being checked by democratic accountability or rule of law.

<comment><USER5> > The Chinese state will never be satisfied being one powerful economic actor > amongst others, all playing by the rules of a global market. They will never > accept being checked by laws of trade or other country's interests, any more > than they will tolerate being checked by democratic accountability or rule > of law.

The same could be said about the US i guess. It's the EU that looks like a naive child on the World Stage...

<comment><USER6> There are very few practical problems for foreign companies to establish, operate, and sometimes dominate in the U.S. market.

<comment><USER5> Sure, but good luck trying to sue the USG for war crimes at the ICC in Den Haag.

<comment><USER6> As opposed to "naive child" of EU? Was anyone from the UK tried at the ICC for Iraq war? Anyone from Belgium held responsible for Congo yet? I mean, they have Hague real close, shouldn't be a problem..

</comment></comment></comment></comment></comment></comment><comment> noir-york China is practicing the economic equivalent of embrace (buy Western technology), extend (their own 3G standards for instance), and eventually extinguish (locking the West out of their market).

As private individuals, we don't mind being bought out by Chinese. As members of societies, I believe it is important to know that there is a concerted plan by China that is at best neutral, and at worst, hostile to Western economic interests. Individual gain at the long term loss of the society we form part is not really in anybody's interest.

We should still trade with China, obviously, and even sell companies, but the terms of trade should not be one-sided: Western companies should get the same market access as Chinese companies do.

<comment><USER7> Let's not forget the China has acquired this position by providing the world with goods for 30 years, for a price that meant misery for their workers. It's not entierly undeserved that they are now able to execute whatever grand evil plan they imagined. We're free to prevent them from accessing our markets, as long as we reimport manufacturing into free-market countries, which would mean paying a bit more than $7 for a toy, clothes and electronics, or accepting a minimum wage under $10/day for our Western workers. Serious question. is our independence worth the effort?

<comment> noir-york > or a price that meant misery for their workers.

Misery is relative. What is misery to us, was a god send to Chinese peasants who flocked in their millions to work in factories that promised at least some security as opposed to the utter misery of toiling in the fields. Those exports to the West helped lifted hundreds of millions of Chinese out of poverty.

</comment></comment></comment><comment><USER8> As a point of reference: Chinese investors bought 37 German companies in the first half of 2016 (39 in all of 2015)[0]. It's noteworthy that those investments tend to be with the idea of a long term engagement. Also interesting that some (most?) of the companies have been bought and restructured and resold at a profit by funds. Buy, restructure and sell to the Chinese seems to be a common strategy. I'm not a fan of the "we buy here, you can't buy in our country" mantra but by and large I see these investments less critically than most people I know. I think they are genuinely interested in keeping the companies profitable and importing/improving the technology (and not just strip mining for tech/ideas as many people claim).

[0, in German] [https://www.welt.de/finanzen/article157037250/Chinesen- kaufe...](https://www.welt.de/finanzen/article157037250/Chinesen-kaufen- deutsche-Unternehmenslandschaft-leer.html)

</comment><comment><USER9> After the second world war, Soviet Union was growing so fast that many smart people in western world that communism is superior to capitalism.

However, Soviet Union economic growth peaked in 1959. It was primarily based on catch up growth: recovery from WW 2 and moving ppl from agriculture to industry.

Is China similar story? [http://blogs.ft.com/beyond-brics/2015/12/09/like- soviet-russ...](http://blogs.ft.com/beyond-brics/2015/12/09/like-soviet- russia-in-1959-has-china-already-peaked/)

A good read on that: [https://www.amazon.com/Why-Nations-Fail-Origins- Prosperity/d...](https://www.amazon.com/Why-Nations-Fail-Origins- Prosperity/dp/0307719227)

I give 50/50 chance to China will avoid this fate, but not more.

<comment> noir-york Russia had a ceiling: Russian population was less than that of Europe or the US. Chinese population is larger than both combined.

Russia was wedded to an ideology; the Chinese are pragmatist and practicing corporate capitalism. China will not only avoid the same fate, they will almost certainly come to dominate by sheer force of numbers.

China is practicing the economics equivalance of embrace (buy Western technology), extend (their own 3G standards for instance), and eventually extinguish (locking the West out of their market)

<comment><USER6> Soviet Union had larger population than the USA in 1959. Russians comprised slightly over a half of the overall Soviet population.

That's before you add any Warsaw Pact countries..

</comment></comment></comment><comment><USER10> The truth is EU companies are being sold to US and Chinese companies.

In the case of the US this is incentivized by the goverment (maybe indirectly) because US-based companies have to pay taxes for money they move to the US: in this case it is cheaper to use that money to buy invest overseas and get more market share.

China might not have a plan, but they actually have cash in hand and they are pushed to invest somewhere else because they cannot have that money at rest. They need to _recycle_ that benefits and buying in europe makes sense because is a big market that makes easy to keep money flowing in a global scale.

<comment><USER11> > In the case of the US this is incentivized by the goverment (maybe > indirectly) because US-based companies have to pay taxes for money they move > to the US: in this case it is cheaper to use that money to buy invest > overseas and get more market share.

Actually, that is not entirely correct. US companies are incentivised to invert and redomicile abroad (often in the EU), because that way they can avoid the global taxation penalty the US imposes. More often than not, an EU company acquiring a US competitor will be able to achieve more tax synergies than a US company acquiring a US competitor.

<comment><USER12> s/achieve more tax synergies/evade more tax

<comment><USER11> Evasion means you do not declare certain income, and that gets you in jail. I think that's obvious. You want people declaring their taxes. Avoidance, however, is staying within the law to achieve a beneficial outcome.

Given any company has freedom to structure transactions in any way they want, it's only normal to go for the most tax efficient way of generating profits. As if you would pay 35% corporate tax if there is a simple legal way to only, say, pay 20%?

Let's say there are two ways to book a profit: royalty income is taxed at 15% and normal corporate income is taxed at 30%. You develop a software product. If the tax code allows you to book all of your (software) income as royalty income, why wouldn't you?

Honestly, people frequently see evasion and avoidance in the same way, but they are not. If a tax law framework exists, and you stay within it, I don't see how you're doing anything wrong. Change the laws. Avoidance is only possible due to bad legislating. It's all too easy for politicians to shame companies while they are the ones doing a poor job.

Some countries are proactive in closing avoidance techniques, others are not. This is entirely dependant on the politicians in charge and the policy set out.

<comment><USER12> Thank you for clarifying evasion vs avoidance. But in a larger context, there is some friction. The companies are trans-national. Countries, not. So by legal or illegal means, companies tend to shift their weight around to where the money stays with them.

To companies, legality is just an expression of power. If the counter party (the government) is strong, the company either focuses on legal avoidance (GM) or avoids the reach of the strong party (Ericsson avoiding US jurisdiction). If the counter party is weak (south american governments) they can be illegaly manipulated (Ericsson). If the government has strong local enforcement but little resources and incentive to go after international shady deals, the country can be used as an operations base but with no illegal activity taking place in THAT country. (Sweden and Telia Sonera, Ericsson.)

</comment></comment></comment></comment></comment><comment><USER13> "help them secure access to the growing Chinese market" is a very euphemistic way of referring to China's refusal to let non-Chinese-owned businesses operate there. China, you see, does not actually believe in free trade and is really rather keen on protectionism when they're the ones doing it..

<comment><USER14> Same could be said to a lesser extent about the US.

</comment></comment><comment><USER15> [rant] I have first hand experience with this. In China there is a law which states that in certain sectors and above a certain level of "security" (guess who defines security) the supplier company must be Chinese and its legal representative must be a Chinese national. Of course this law is loosely enforced. It's not that they prevent you from doing business there. Simply it's like a gun pointed to your head. When they decide it's time to pull the trigger, you're out. You might think to buy a Chinese company or set up a commercial partnership or found a JV and then sell your products through them. One successful example of this is Blizzard. However this works up to a point- the "security" level. When you're above the line, even the product must be Chinese, and that's when you transfer your sources to the local counterpart or give up and leave.

Concretely, this means that you can forget doing business with the Chinese gov. Or prepare to be canned up any time.

Now couple this with the wild investments China is conducting on a cash-hungry Europe. And of course it is state-driven, because outbound capital flows are heavily restricted in China otherwise.

However it looks like Chinese acquisitions in EU not only play toward China's long-term goals to rebrand their production (and eventually make money off of our own market). You can also see it as a modern cold-war with the USA, where the stake is industrial predominance and the means is influence over Europe. Just like the old USA vs USSR times. The USA try to make deals with us, while the Chinese outright buy us.

Europe has mainly two choices, take a side or become the third pole. I think bot are politically valid choices, however what is really astonishing and enraging, and the article conveys it very well, is that EU has the political energy to do neither. It's not that our political agenda gets crushed by either side. Is that we have none. And this to me means that the European Union at the end of the story will be the only one true big loser, and we as Europeans will follow along. [/rant]

<comment><USER16> For those interested in more about the legal representative /'fa ren' (literally, legal person) there's a good overview here: [http://www.china- briefing.com/news/2011/08/11/roles-and-resp...](http://www.china- briefing.com/news/2011/08/11/roles-and-responsibilities-of-the-china-legal- representative.html)

TXV: Not a law about the role of legal representative in general, right, but that industries that are defined as 'protected' are not open to foreign owned companies?

The role of the legal representative is to represent the company in civil law. The legal representative also has a supervisor or board of supervisors, so their actions can be kept in check. This in indeed one of the main roles of the supervisor/board of supervisors: to make sure the legal representative does not run away with the company's cash.

<comment><USER15> Correct, it's not about the role of the legal representative.

I agree that the terminology is not very clear, as customary of Chinese laws. It states that the physical person or the legal entity investing in the company must be Chinese, where the term you cited /'fa ren' 法人 refers to the legal entity (e.g. a company) and the legal representative I cited is the physical person investing in the company (the president or the owner, which if I'm not mistaken is the same guy who represents the company before the law).

Terminology aside, it goes even further. It even states that 工作人员仅限于中国公民 the workers of that company must be Chinese nationals!

</comment></comment></comment><comment><USER17> I doubt the EU has any plan of anything. With rise of nationalism and protectionism, the EU is fighting for its own existence.

China was never a equal trade partner to the west. In fact, I don't think any of the developing countries can be equal trade partners to the developed countries. When you are weak, open your market completely to western multinational companies with huge capital and technology advantage is economical suicide, and it will benefit no one but the rich and powerful at the very top on both sides.

</comment><comment><USER18> Maybe China is just showing us that the ideology of free market with no protectionism at all might in fact not be the best thing after all.

</comment><comment><USER19> Europeans won't buy Chinese goods because the quality is horrible, and they understand that by buying them, they would be making themselves poorer and jeopardize their own jobs and economy, even if they are the cheapest. So the only way for the Chinese to make inroads was to start buying European companies, and then infiltrate their goods into Europe that way. At least they will try, and in the long term, nothing short of major political interventions will stop them from eventually moving those jobs to China, where the labor is cheaper... cheaper for now.

I for one don't want to support oligarchs in People's Republic of China exploiting people who have to work 16 hour days for six days per week for low pay. We had that in Europe in the 19th century, and we learned that it leads to really low standard of living. It's exploitation.

</comment><comment><USER20> >""To have a major Chinese shareholder is a huge benefit in opening doors," Gordon Riske, CEO of Germany-based Kion, parts of which were acquired by Chinese state-owned Weichai Power in 2012, said during this week's Hamburg Summit, a conference on EU-China economic relations."

My concern is that those doors might only open in one direction though from China into another country. Will any of these acquisitions result in Germany having an easier time doing business in mainland China?

<comment><USER21> > Will any of these acquisitions result in Germany having an easier time doing > business in mainland China?

That's obviously what your citation says.

</comment></comment><comment><USER22> After all, communists are the best managers of capitalism.

<comment><USER23> *State capitalists are the best managers of capitalism, the government does control the means of production, not the people themselves.

</comment></comment><comment><USER24> China is buying the world.

</comment><comment><USER25> I am surprised to see Hacker News turning into China News recently.

<comment><USER26> Warning: Gross oversimplification and misrepresentation of facts ahead

There is an apparent trend of Planet Earth turning into Planet China recently.

Whether this trend is real, whether it will continue, whether you or I believe in it - who knows.

<comment><USER27> > There is an apparent trend of Planet Earth turning into Planet China > recently.

Not planet earth, Planet US.</comment></comment></comment>


Ask HN: Python / Django Workflow, and choosing an OS - <AUTHOR>

I'm trying to transition my work world from one of PHP and possibly the world's ugliest Zend Framework code (which is not necessarily a dig at ZF, but horrific development practices, reactive testing, and 'debug in production') to something a lot more organized and streamlined, with Python and Django (both of which I'm fairly new at, though experienced as a web developer, albeit PHP).
I would like to get some input. Try as I may, my mind just doesn't sit well with OS X - I keep trying it, and find my brain likes 'structure and discipline' and feels chaotic with windows at "random" locations all over my desktop. I like the Unix/BSD underbelly, but still. Maybe there are methodologies that can help?
I'm really debating whether to go back to Windows, or retry Ubuntu. What holds me back from Ubuntu is the Office suite (I know the arguments), and GoToMeeting (absolutely mandatory at this point - I telecommute, and it's our annointed method of desktop sharing).
But what I'm really trying to iron out is a workflow for developing, testing, deployment. I'd like to get something set up with tools like LXC for virtualizing a production environment (currently on a separate machine). I'm not really looking for any comments of the lines of "Why Django?" - you're solving the wrong problem. Instead, offer me insight on how I can streamline a workflow from conception to delivery and beyond.
I currently use PyCharm and Sublime Text 2, and am very happy with these, though I'm not averse to hearing compelling arguments (rather than religious wars) on alternatives (as much as I see, and admire the vim-elite, I'm not sure I can make that me). <comment><USER2> A relatively common OS X based workflow for Ruby development (which could equally apply to Python) is mostly terminal based.

Use a full screen terminal and a multiplexer (screen, tmux) or a tiling window manager (dvtm) to make use of the full screen; emacs or vim as an editor of choice (ease yourself in if unfamiliar, don't go all-in right off the bat); and Unix itself as a development tool for everything else. While you may initially think a plethora of GUI apps is better, your growing experience will slowly but surely push you away from that.

Within the terminal session you are then exposed to tools other people have written that help you handle deployment, testing, continuous integration, etc.

If the CLI is too much for you, OSX has a number of apps that help organise windows (Moom, TylerWM, Divvy), so you can try and keep that under control in any case.

The terminal is definitely your best friend in OSX or Linux, though, and understanding that environment, especially moving away from PHP, has few, if any, disadvantages.

<comment><AUTHOR> Thanks for the heads up - I'm comfortable in the CLI, I like Sublime admittedly, as I do PyCharm (but I understand the nuances of being able to become self-sufficient outside an IDE), had never really considered a tiling WM, but watching Tyler's intro was enlightening - I might have to try it out - I've used Divvy, and it seemed to solve part of my problem.

</comment></comment><comment><USER3> I'm not sure this is an answer for you, as you ask for "tools like LXC for virtualizing a production environment", but have you looked at Vagrant? I don't use OS X myself, but AFAIK it should work fine on OS X, see eg:

      "Django project deployment with vagrant and fabric"
      http://www.youtube.com/watch?v=O3-MNsowgHc

and maybe:

      https://github.com/simeonwillbanks/vagrant-up-django-app-server

As for "vim-elite" -- that really isn't what vim is about at all -- I recommend having a look at:

      "7 Habits For Effective Text Editing 2.0"
      http://www.youtube.com/watch?v=eX9m3g5J-XA

As for window management on OS X -- again, I don't really use OS X -- but maybe something like:

      http://lifeoutthewindow.com/2012/04/divvy/

can help?

edit: Added titles for video links, additional vagrant link.

<comment><AUTHOR> Definitely looked at a few virtualization options (we use Citrix XenServer at work), but my rationale for LXC was making the most use of limited hardware (rather than being forced to commit, say, 2GB for VM A, 2 for VM B, and so on, instead having up to the full server resources available - this isn't strictly the "best practice" for a mock production environment but will suffice).

"vim elite" may not have been the best phrasing - my intent wasn't to imply superiority and condescension, merely "text editor power user".

Divvy is a nice tool, which I do use, and does make life a little easier, and if my preference deep down is that of a largely maximized world and Windows, so be it.

I do really want to investigate Vagrant, and will check out your links, cheers!

<comment><USER3> Ah, I didn't think you'd be interested in LXC as I thought you'd be running your VMs under OS X?

If you're considering running VirtualBox (Vagrant) under Linux/Solaris, VirtualBox does support a limited form of overcommitting RAM (not under OS X, however):

      https://www.virtualbox.org/manual/ch04.html#idp18673360

I _believe_ you can use this with Vagrant via:

      http://vagrantup.com/v1/docs/config/vm/customize.html

You still have to dedicate RAM to VirtualBox -- but you no longer have to dedicate it to each VM.

If you are already using Citrix, the Xen Server product has supported a limited form of overcommit since version 5.6:

      http://support.citrix.com/article/CTX124972

I would think spending time automating deployment to the same environment as you use for production would be better than having a separate technology for development? I don't know what your internal politics are like, but setting up a dedicated server with a few tens of gigs of RAM for development and testing should be a worthwhile investment -- and running the same software there as in production should be good both for knowledge transfer and avoiding surprises going from testing to production (and vice versa).

Finally, I've been a impressed with vmware's new open source project, CloudFoundry.com/.org -- if not so impressed with their documentation for the free/open version. Apparently you can use that with VirtualBox as well:

      http://matschaffer.com/2011/04/cloudfoundry-virtualbox/

Note that Vagrant is in the process of being refactored with the goal of adding support for other hosts than just VirtualBox in the (relatively) near future.

</comment></comment></comment><comment><USER4> There are advantages to a Unix-like OS for web development. When I was working with Django I switched from Windows to an Ubuntu VM. That was a few years ago, though. Nowadays Python and Django on Windows (and even on the Azure platform[1]) are fully supported by Microsoft. Since you want something different from OS X and you want Office and other apps, I suggest you try Windows. You can still use Sublime, git, and many other tools.

[1] <https://www.windowsazure.com/en-us/develop/python/>

</comment><comment><USER5> Linux & pycharm work perfectly for me.

Pycharm support for python/django is just the best.

For stuff like git I still prefer the command line and vim for editing isolated files either locally or via ssh.

For the microsoft word stuff I use google drive, if I really need something on the windows side (seriously it happens to me once every 3 months for updating my tomtom) I start a virtualbox with a minimal windows XP in it. The virtualbox desktop integration mode is excellent.

<comment><AUTHOR> My only issue with "needing Windows or OSX" is that we do a lot of collaboration, which I can't argue out of GoToMeeting (which doesn't run on Linux), and I don't want to have to maintain a separate VM to mimic my development environment merely for these times (I realize, too, that I'm optimizing for a highly specific set of circumstances, here!) - were it just Office, or one or two tools, I'd be happy with Linux, and an XP VM.

</comment></comment><comment><USER6> I'm using ubuntu. I am a big windows fan but python on windows is really frustrating at times.

I like eclipse + pydev, and with other monitors I have my tests running.</comment>


Ask HN: In simple terms, what are the consequences of Brexit? - <AUTHOR> <comment><USER2> this article was very helpful to me [1].

[1]: [https://fivethirtyeight.com/features/what-a-brexit-could- mea...](https://fivethirtyeight.com/features/what-a-brexit-could-mean-for-the- economy/)</comment>


AWS having major issues - <AUTHOR> http://status.aws.amazon.com/#31-july

<comment><USER2> CAn confirm we are also experiencing massive issues, took AWS about an hour to update status page. Attempted to file support ticket and that timed out, when the request finished it had created 10 duplicated tickets and still waiting on the phone call from AWS RE ticket.

<comment><USER2> All of our opsworks instances are currently being shut down, we have already had 20 servers automatically terminated...

There goes the weekend!!

</comment></comment><comment><USER3> We have 4 projects in Amazon OpsWorks, all of them in eu-west. Only one of them has been affected. ELB removed instances from balancing, and then instances were automatically shut down. Now when we try to create new instances they freeze with "requested" status.

What an awful way to start a day (in Europe).

Update: we just found another of our projects has the worker instance being shut down (by Amazon, we didn't touch it).

Update 2: our new instances are finally being created and running setup.

Update 3: we found that the Health Check for our Elastic Load Balancer changed its path to the default one (index.html). We had to edit it again.. This is weird, I don't like the idea of Amazon changing our Health Check path for no reason.

<comment><USER4> Hey javiecr,

Can you please post your OpsWorks instances ids on the AWS forums and just c/p what you wrote here?

[https://forums.aws.amazon.com/forum.jspa?forumID=153](https://forums.aws.amazon.com/forum.jspa?forumID=153)

thanks.

<comment><USER3> Do you work for Amazon? We already sent a support ticket using [http://www.amazon.com/gp/html-forms-controller/support- cente...](http://www.amazon.com/gp/html-forms-controller/support-center- issues-u)

</comment></comment></comment><comment><USER5> Chiming in as I was completely unaffected... maybe this can help someone here.

I switched our applications off of OpsWorks a couple months back after losing faith in the OW team, in favor of a lower-level CI flow using auto-scaling groups and CodeDeploy.

Aside from some headaches in the very beginning (where CodeDeploy maintenance window would crash the daemon and health checks would cause an "initialize/destruct" loop) it precluded this issue entirely.

Two of our boxes were affected by the outage and disabled, however they were re-initialized within minutes by the ASG, meaning we experienced essentially no downtime.

Just be aware that if you use CodeDeploy, it's essentially just a low-level deployment hook which takes the packaged revision passed to S3 from your continuous integration setup, unpackages and runs any initialization scripts you require. You'll need to configure the security groups and scaling policies on your own which is something I know OpsWorks tries to make easier with their higher level app/layer constructs...

<comment><USER6> Thanks for sharing your ideas. Actually I want to do that as well. I'm so tired of Opsworks, failing deploy and of course today issue.

Could you share more about your code-deploy setup and auto-scaling ?

</comment></comment><comment><USER7> AWS issues on Sysadmin Appreciation day.. what an irony.

<comment><USER8> For some users of AWS this would be irony, its also schadenfreude for the Ops/Sysadmins who tell management types that just trusting everything to AWS is a bad idea.

</comment></comment><comment><USER9> EU-West is also experiencing problems. A lot of our instances are currently in connection_lost status.

EDIT: The console is working fine at the moment EDIT1: Apparently OpsWorks is hosted and managed by the North Virginia data center which is why all our opsworks instances in EU-West are experiencing issues too.

<comment><USER10> Frankfurt is up and running. Only the Web Console is slower.

</comment></comment><comment><USER11> Ok. If you're receiving errors, and you're NOT using opsworks, please respond. We're using opsworks too and have ~30 servers down. Maybe we all should be looking at the opsworks agent.

<comment><USER2> We are getting errors across multiple AWS API's. It's nothing to do with Opsworks itself, rather it appears like there is an internal networking issue.

Both SQS and SNS were erroring and now SQS has gone down completly with all requests timing out.

<comment><USER12> Looks like there's critical infrastructure in us-east-1 that's broken and causing a ripple effect across all of AWS

Our platform is entirely hosted in ap-southeast-2 but we've had our EC2 instances deregistered and OpsWorks reporting them terminated where EC2 is showing them active and they're still reachable via SSH

<comment><USER13> Yeah, we don't use OpsWorks and had SQS/SNS/SES trouble as well -- thankfully those are not used to serve production traffic. From the set of services affected, it looks like Amazon's internal Kafka-like pub/sub system went down.

</comment></comment></comment></comment><comment><USER14> Was ~ an hour before the status page indicated even the potential for a fault, and we were seeing solid errors the entire time.

Currently can't raise support tickets either, so left in the dark until they fix that...

</comment><comment><USER15> Heads up if you're using opsworks your instances may have been removed from their ELB.

<comment><USER6> exactly what is happening here.

</comment></comment><comment><USER7> We are in Singapore and our ELB is automatically deregistering our instances. Has happened twice in last 1 hour causing system downtime.

<comment><USER7> we use Opsworks.

</comment></comment><comment><USER16> Ok, I can't tell if this is functioning normally. I am trying to launch a new instance. Numerous services have "increased API error rates" one even said "Elevated error rates"

All services panel were green indicating: Service is operating normally

I can't put confidence in this. Anyone have any info on whether this is resolved. I can do some on digital ocean, but I really need a few things on AWS. Confirmed up? COnfirmed working? Info?

Edit: Successfully launched an AMI instance and it deployed successfully and is accessible from shell and ip.

</comment><comment><USER17> We seem to have had issues and we're not using OpWorks. I'm trying to determine if our issues are related.

Our instances are docker hosts, network seemed to lag/stop when proxying traffic to the internal container IP addresses.

Our ASG spun up other instances but health checks reported "Insufficient Data". The web console also seems buggy (API requests are failing).

</comment><comment><USER18> So three different environments have had the ELB just release all of their clients and not come back onboard. Manual intervention was the only way.

Whats the recommended way to monitor if instances have become detached or non responsive? Want to immediately alert slack or send an email, etc.

<comment><USER19> There are a lot of ways to integrate, but we use datadog and I generally find it excellent. Alerts to hipchat, pagerduty, etc, with AWS Cloudwatch integration. Of course, you have to assume the Cloudwatch API is working... :)

<comment><USER20> A vote for datadog here too. Just started using it - it's clear that someone there really loves data.

</comment></comment></comment><comment><USER21> Their status history is 100% green for the last week. You must be wrong about major issues. /s

</comment><comment><USER22> All my (5) instances (OpsWorks) in South America were with status "Stopping" and detached from ELB. I manually stop and start again. Now it is working but ~ again ~ I have 2 instances with "Stopping" status. Welcome weekend!

</comment><comment><USER6> Half of our servers in Singapore (100+) are all down, cant access console either. Damn it.

<comment><USER23> hey fredonrails, what u can do is just login to console , when u see 500 error page . Just hit the back button you will be logged into the account. this seemed to be working for me please try

</comment></comment><comment><USER24> Our Amazon _POST_ORDER_FULFILLMENT_DATA_ feeds have started going through now so it must be nearly fixed!!! I thought I was going to have to tell all our customers they need to manually dispatch all their orders. Woo hoo!!!

</comment><comment><USER16> Killing me I was wondering why my sites weren't working and console access is killed. Can't log in, can't find any information. Thanks for this. Huge.

<comment><USER23> hey vonklaus, what u can do is just login to console , when u see 500 error page . Just hit the back button you will be logged into the account

<comment><USER16> couldn't get that to work for me. I tried doing an incognito window, hitting the back button, etc. I thought it was something specific to me as I had just killed a shell session and deleted my only droplet when I noticed. It's up now though, glad I saw this post though thanks.

</comment></comment></comment><comment><USER25> SQS seems to be resolved now. (As per website)

</comment><comment><USER2> Fortunately the Opsworks service wasn't able to contact EC2 API so although it attempted to terminate the servers, the termination call failed so the instances are still alive and functioning but there is now a disconnect between Opsworks and EC2

</comment><comment><USER26> I go to vacation and everything collapses, guess they will chain me to the desk next time :-)

<comment><USER27> I can relate

</comment></comment><comment><USER28> Servers in Japan seem ok, but e-mail (N. Virginia) is more or less dead for me.

<comment><USER29> We've been having issues with SES N.Virginia, but have managed to get mail through. It's intermittent, but we are getting our batches out. It's not pretty.

<comment><USER28> Our e-mails are more or less mission-critical, so we try to send, then try to send again -- I suspect the additional failures are causing this to back up a bit. For concrete numbers, of 27 e-mails we tried to send, only 2 got out successfully.

Also of interest is that I only got a 454 ("Temporary service failure") three times -- the rest of the time, it just freezes/times out in ssl.

<comment><USER29> Although it's looking like end-user deliverability is not great we are seeing huge delays in things actually getting out of SES.

</comment></comment></comment></comment><comment><USER7> We were all good since last few hours (post the outage session in the morning) but just 10 mins back our ELB again automatically deregistered all the EC2 instances. Is the issue still happening?

</comment><comment><USER30> We where also affected in Frankfurt, really scary. Does anyone know about some managed chef like Ops-Work that would be cloud-agnostic with a little less vendor-lock in?

</comment><comment><USER31> Using OpsWorks. Got several deploys timing out as "unreachable" between 2h ago and now.

</comment><comment><USER32> all our opsworks servers have been unreachable from the internet since around 05:13Z when we see a mysterious 'configure' command with no further details in the opsworks logs

EDIT: they are in EU-West zone btw

</comment><comment><USER33> AWS SES 454 Temporary service failure

</comment><comment><USER34> govcloud seems ok

</comment><comment><USER35> So many pages...

</comment><comment><USER36> There is your reliable cloud :) You can always count on cloud, right?

<comment><USER37> What a pointless comment. Nobody expects 100% uptime on any cloud service.</comment></comment>


EA Buys Playfish For $300 Million, Plus a $100 Million Earnout - <AUTHOR> http://www.techcrunch.com/2009/11/09/not-playing-around-electronic-arts-buys-playfish-for-275-million/ <comment><USER2> _Last year at a presentation at the Founder's Forum in Hampshire, England, CEO Kristian Segerstrale put up a slide with a dinosaur and expressed his desire to "kill EA." Now he's joining them instead._

I love the idea of terrifying your potential buyers into an acquisition rather than wooing them on bended knee. We need more of that.

<comment><USER3> That's pretty typical. Startups get bought out because they start taking market shares away from the 8lb gorilla. If they're wooing them, there's really something wrong there and they should start thinking real hard how to compete and gain market share against the gorilla rather than the former.

<comment><USER4> I don't want to make too much of the typo, but Playfish really _is_ a horde of 8lb. gorillas.

<comment><USER3> EA did spurn off an unit named 8lb gorilla to make iPhone games.

[http://www.joystiq.com/2009/07/11/ea-quietly-opens-8lb- goril...](http://www.joystiq.com/2009/07/11/ea-quietly-opens-8lb-gorilla-to- make-smaller-iphone-games/)

<comment><USER4> Oops. Thanks for the correction.

</comment></comment></comment></comment></comment><comment><USER5> I'm a bit surprised that EA didn't try to simply just win this market over themselves. With their stable of franchises it seems like it would be a feat they could have achieved. They even already have a casual focused online site, Pogo.com. I expected them to try to retool a team from that group into doing just Facebook games, but it seems like they didn't really even attempt it. I suppose they felt they just didn't have enough man power.

<comment><USER6> Retooling a team to go from programming real games in real languages to making a flash game is a rather absurd prospect. Are they really going to convince people to leave teams working in their Sports division, or get anyone to leave one of their major franchises with real experience?

If I was working on a new Medal of Honour or Battlefield, or even The Sims, you'd have to shoot me in both kneecaps before I'd consider taking my name off a game that could boost my career.

All you're going to get to make these games are either raw flash kiddies, or you have to take over a company with experience in making money on flash games. IMO I'm not surprised one bit, buying a company like Playfish was EA's only move to make.

<comment><USER5> That's why I said retool a group from Pogo.com. If you look at that site it's pretty clear that EA's had folks working on casual flash games for ages. It would not be a difficult move over to get folks from that group working on Facebook apps.

<comment><USER7> There is a difference between casual games and social games though, and it is the social know-how that EA is buying.</comment></comment></comment></comment>


Zamburak - <AUTHOR> https://en.wikipedia.org/wiki/Zamburak <comment><USER2> A similar weapon used later: [https://en.wikipedia.org/wiki/Recoilless_rifle](https://en.wikipedia.org/wiki/Recoilless_rifle) For example: [https://www.militaryimages.net/media/jeep-with-57mm- recoille...](https://www.militaryimages.net/media/jeep-with-57mm-recoilless- rifle.103050/)

[...] lightweight artillery system or man-portable launcher [...] elimination of much of the heavy and bulky recoil-counteracting equipment of a conventional cannon as well as a thinner-walled barrel, and thus the launch of a relatively large projectile from a platform that would not be capable of handling the weight or recoil of a conventional gun of the same size. [...]

<comment><USER3> I guess you mean similar in terms of tactical role? Certainly not in tech, besides being both being relatively large guns.

<comment><USER2> Yes.

</comment></comment></comment><comment><USER4> The top image in that article has a drawing or maybe engraving with the weapons on the left, and on the right is ... a wand with a hand at one end and a fish in the center? Why? What is this and how did it relate to the gun?

<comment><USER5> It's a standard: [http://www.gutenberg.org/files/29778/29778-h/29778-h.htm#Cam...](http://www.gutenberg.org/files/29778/29778-h/29778-h.htm#Camel)

<comment><USER6> More specifically a standard with a hand on top is a twelver Shiite symbol. You'll see the same hand on top of Shiite mosques. This is from the time of the Safavid empire.

</comment></comment></comment><comment><USER6> It doesn't mean literally only wasp, "zambur" also means bee in Farsi.

<comment><USER7> Russian version of this article says the name translates from Pashto as "little bee" (althugh the sentence is built such that I'm not sure if they mean the name of the weapon itself or of the warriors - zemburekchi)

> Считалось, что артиллеристы на верблюдах, которые именовались "зембурекчи", > способны были досаждать неприятелю подобно пчёлам (отсюда и название (в > переводе с пуштунского - "маленькая пчёлка").

<comment><USER8> -chi is an eastern suffix similar to -er (teach/teacher), if that helps.

<comment><USER9> I think -ci (-çi -cı etc.) suffix is specifically Turkish.

<comment><USER8> You're right, I meant it is pretty common in turkish-ish group (tatar, mongol, etc), not all East.

<comment><USER9> Probably only Turkic languages, not Mongolian either.

<comment><USER8> For me that probability fails. Look I'm quarter tatar myself and they definitely use -chi (-че, -чы) in that exact sense. Same thing for surrounding regions, and I can even detect similar construct in mongolian songs and simple speeches when I hear these (it is reduced to -ch there). E.g. эм - drug, эмч - doctor, жолоо - to drive, жолооч - driver.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I can't imagine the difficulty in training these animals to ignore the sounds.

<comment><USER11> Maybe they eventually they go deaf[0].

[0] [https://www.newsarchive.msstate.edu/newsroom/article/2002/06...](https://www.newsarchive.msstate.edu/newsroom/article/2002/06/hunting- and-hearing-msu-studies-gun-noise-effect-dogs)

<comment><USER12> > The research group also includes Dr. David Jennings, a neurologist, and Dr. > Amy Janda, a small animal intern, as well as two veterinary students. Janda > said the sound at 60 decibels is comparable to half the noise of a jet > engine.

60 decibels is the geometric mean of a barely perceptible noise and a jet engine.

</comment></comment></comment><comment><USER13> Must be certainly very unhealthy for the camel. Can't imagine the blast sound, and the recoil not having an effect on the animal.

</comment><comment><USER14> Some good examples of these on display in the fortress museums in Bikaner and Jaipur, both in India. I can't imagine them being all that accurate, but the range must have been better than smaller caliber alternatives, resulting in a psychological effect.

</comment><comment><USER15> Further below in the article they mention that Gatling guns were mounted on camels, too. This is even more interesting, given the recoil and trying to keep an aim.

</comment><comment><USER16> It remains me Metal Slug games.

</comment><comment><USER17> Which lead me to read all the famous battles from the Persian army's Nader

</comment><comment><USER7> Check also other articles on that site - a lot of interesting stuff.

<comment><USER18> Wikipedia is fairly well known, I guess?

<comment><USER7> [https://en.wikipedia.org/wiki/Sarcasm](https://en.wikipedia.org/wiki/Sarcasm)</comment></comment></comment>


What mistakes do people typically make when designing landing pages? - <AUTHOR> http://sprouter.com/question/6839-what-mistakes-do-you-typically-see-people-make-when-designing-landing-pages <comment><USER2> Actually I think it is crucial to: a) put a really interesting headline, b) additionally: list 1-3 top features that establish and differentiate your service/product, c) put a "leave your e-mail" text box _with_ dummy "firstname.lastname@example.com" content so that there is no doubt it is to leave your e-mail, d) ensure there is no more text on the page besides the above, so the page as a whole is tidy, nice and clean. And don't afraid of using large fonts.</comment>


Do you think it is silly to complain that a story doesn't belong when it is voted to the top? - <AUTHOR>

From today:
"I'm sorry, but i really am tired of this reddit content making the front page of Hacker News." (about the [cool] map) http://news.ycombinator.com/item?id=119375
"Important world news, which is why it's on cnn.com and pretty much every other news site out there. Pretty much irrelevant to hackers." (about castro) http://news.ycombinator.com/item?id=118936
Although, I am pretty frustrated that porn (not art) made the front page of reddit today... http://reddit.com/info/69b35/comments/ (of course nsfw)
Please comment under yes or no. <comment><USER2> NO. I love this site because you can find informations relative to hackers and startups. If I want to find general world news there are plenty of other site that I can look to. I wish the site stay focused on hacker/startup news. Otherwise the risk is that this kind of informations get diluted in world news. Maybe this kind of news would not reach the top if we could downmod it

</comment><comment><USER3> No. Hackers aren't totally insulated from politics, and as long as we have some interest in these things, having that reflected on n.yc isn't bad, IMO. By the same reasoning a deluge of such stories would be inappropriate because, proportionally speaking, we're not as concerned about such things as more traditionally hacker-relevant topics.

</comment><comment><USER4> I'm sad that this reddit-style meta-complaint made it to the front page, actually.

</comment><comment><USER5> no. if there was a down arrow, you could downmod. but there isn't, so you can only complain.

</comment><comment><USER6> NO. In fact, I would love a link that says "downmod/ignore stories from similar to those that vote for this story". If a story has been up-ranked by a lot of people that you disagree with, you should be able to just ignore them, effectively producing different news feeds for different affinity pools.

</comment><comment><USER7> yes or no

under

Please comment

</comment><comment><USER8> you mean a story like this one?

</comment><comment><AUTHOR> Yes.

</comment><comment><AUTHOR> No.</comment>


Show HN: Fast, unopinionated, minimalist web framework for Arduino - <AUTHOR> https://awot.net <comment><USER2> Looks useful. Two hints: I'd love to see an actual approximate number under "Small" on your homepage so I can assess if it's worth trying or will blow my memory requirements anyway. The other small thing: on [https://awot.net/en/guide/middleware.html](https://awot.net/en/guide/middleware.html) you accidentally repeat the .h extension in the coffee examples.

<comment><AUTHOR> Thanks for reporting the the typo. On Arduino Uno the Hello World example including the SPI ethernet driver consumes around 20kb of ROM and 1kb of RAM. On anything more recent the framework memory overhead will not be a problem. There is no dynamic memory allocations and it does not use the String class.

<comment><USER2> Oh that sounds reasonable, I'll give it a try on one of the next projects. Thanks for making it!</comment></comment></comment>


Ask HN: Work visas for US startups. - <AUTHOR>

If I get funding for my startup in the Valley (and subsequently re-inc in Delaware), which work visas would be available to me as a founder?
Its my understanding that there are requirements for pay, title, and job history (the job has to have existed for 12 months previously) in order to qualify for a T1N (I'm from Canada), none of which would apply for a startup founder.  Also, the process to obtain an H1B is expensive and extremely time consuming, and also follows similar requirements to the T1N.
Any advice is appreciated. <comment><USER2> I'm in the same situation, but I'm from Romania. I emailed the embassy with the details and they said I should apply for an E2 investor visa - you can read more about it on the US State Dept. website. As long as you own the majority of the company, you should be able to legally stay in the US and work for the company.

However I think you need some proof that you got funded to apply for the visa, for example we are waiting for an acceptance letter (if we get accepted obviously) from the startup accelerators we have applied to. After we have the letter we will apply for the visa.

<comment><AUTHOR> Thanks, I'd never heard of this visa but it sounds like exactly what I need!

</comment></comment><comment><USER3> Find yourself a pretty Cali girl and marry her ;)

But seriously, I'm kind of in the middle of this situation, I currently am on a TN Visa valid for 3 years, that allows me to work for the my company only. So there is no way I can have a second official/part-time job on the side for a startup and I want to do that and help startups getting better visual quality (I'm a graphic designer).

If I find more info I'll let you know I'm doing my research.

</comment><comment><USER4> Immigration For Startups, this may be helpful to u . <http://christophergolda.com/immigration-for-startups>

</comment><comment><USER5> The House (Congress) is working on a new Visa class for Entrepreneurs that want to start businesses in the US. Sadly I don't think it'll pass in time for you.

</comment><comment><USER6> I am in a very similar boat. Luckily, I can apply for opt in my first year then do tn1</comment>


The Bizarre Behavior of Rotating Bodies, Explained (Dzhanibekov Effect) - <AUTHOR> https://www.youtube.com/watch?v=1VPfZ_XzisU <comment><AUTHOR> Both Physicists and Quantum Physicists talk about "spin".

But, if whatever is spinning is unbalanced in some way (i.e., wingnut in outer space under zero gravity, see video), and that spinning causes a reversal in orientation across some axis in some period (amount of rotations), then shouldn't those effects be considered as having the potential to happen, in whatever is spinning?

In other words... consider quantum particles...

Perhaps a quantum particles transition to-and-fro other quantum particles during specific very small periods of time, where "period of time" is defined as the number of rotations a particle makes, relative to a specific scale.

Sort of like the wingnut re-orienting itself after a certain amount of rotations, in space / zero-gravity...</comment>


Ask HN: What do you think of F#? - <AUTHOR> Looks pretty succinct and expressive. Good IDE (VS) and nice framework (.net). Easy async programming, units of measure, quotations (as far as I understand it's similar to lisp macros). Though running on linux is pretty painful, it still can be done using mono.<p>So what do you think? <comment><USER4> I love it. The classic problem of the niche languages, in this case the ML family, has always been the lack of commercially relevant libraries. Which is understandable, the strongholds of OCaml, Haskell, ML etc have traditionally been academia. The other problem is that organizations have been reluctant to start projects in languages for which it has been, rightly or wrongly, perceived that there is poor liquidity in the job market, regardless of the inherent advantages of those languages.

Both those problems have been solved in one fell swoop. Not only is the entire .NET ecosystem available, but it's a shipping, fully supported part of Visual Studio 2010. There is no reason _not_ to use it, from the organization's perspective. Finally, all the FP programmers who've been hiding in the closet, hacking in Haskell on their personal projects, can come out! These are great days!

<comment><USER5> Follow-up question: which libraries do you find most useful?

<comment><USER6> "WebSharper"

<http://www.intellifactory.com/products/wsp/Home.aspx>

\---- example:

"This sample builds upon the formlet sample illustrating how _formlets_ may be converted into flowlets for expressing sequences of web forms."

[http://www.intellifactory.com/products/wsp/samples/Flowlet.a...](http://www.intellifactory.com/products/wsp/samples/Flowlet.aspx)

<comment><USER7> I hadn't heard of this, but it looks really interesting. Do you have any experiences with it you can share?

</comment></comment></comment></comment><comment><USER8> I used it in a computational finance class about a year ago. I develop solely on Linux, and although it was painful to get working, it definitely wasn't the worst thing I have had to do on Linux...

The actual language was weird. Apparently it was inspired by OCaml, but I felt it was far more verbose 90% of the time, and then randomly succinct. F#'s error messages were straight up useless.

If you are looking for a good functional language, I would probably look elsewhere, but it does have the advantage that it is currently still being worked on, and it has all of the benefits that the CLR brings.

At the very least, I agree with the other comment that it will probably bring more people into functional programming, which is always a good thing.

<comment><USER9> A genuinely curious question with the subtext that I do not agree with you but wish to find out where you form your basis. The core languages of both are nearly identical (ignore active patterns, computation expressions, .net libs f# functors, polymorphic variants ocaml etc). You can port basic ocaml and F# code and only have to change letters here and there.

What are your parameters for a Good functional language?

<comment><USER8> Well, I would specify a good functional language as one I enjoy coding in. So far that has been SML/NJ and Racket (PLT Scheme). For some reason I did not enjoy F#, and I blame that more on the strangeness of the .Net libraries than the syntax of the language. Also it has been a year, so maybe the language has changed / I don't entirely remember all of the problems I had.

</comment></comment></comment><comment><USER10> I've used it for some pet projects, mostly to get my head around a functional language with an easy entry (and exit) route for me: I'm a C# guy by day.

I started doing the Euler things etc. and did a quick dive into lexing/parsing (one strong point that your list is missing, imo). I got hooked. While I still cannot use F# for most of my things (technically it would even be possible, but try to convince your higher-ups that it is a good idea to switch to a language that they've never heard about, "because it is fun"), I use it for small things on a regular basis. You can mix functional and structural/iterative style (which is a plus in my book, the latter just _is_ faster if your program really wants to lend itself to mutable loops in places). You have a huge and well-tested library - the interaction with everything .Net is trivial.

Deployment isn't a big issue anymore: In the past you needed to either compile it statically or ship the F# stuff as well, with its status as a "first class citizen" in .Net 4 there's really no reason to back away from it anymore. It's here to stay.

I didn't have any trouble running it on mono/linux - but I've to admit that I last tried it quite a while ago.

Full Disclosure: I'm a kind of a fanboy here, I guess. The wall in my back is painted with a very nice/succinct 13 line prime number generator in F#, roughly 4cm line height, done as a decoration by my so.. ;)

<comment><USER11> \--but try to convince your higher-ups that it is a good idea to switch to a language that they've never heard about, "because it is fun")

I've never had issues convincing management the biggest issue I have is convincing coworkers who don't see value in learning new languages.

<comment><USER4> That's the beauty of it - F# is now a peer of C# and VB.NET. There's no reason whatsoever for organizations to shy away from it - it's mainstream now. Whereas even tho' it's a very similar language, I can understand why a PHB would balk at OCaml.

<comment><USER12> It's an anecdote but I've had 2 PHBs that wouldn't accept C# in a "VB.NET" environment.

<comment><USER4> Just look 'em right in the eye and say "dot Net". Works every time.

</comment></comment></comment></comment></comment><comment><USER13> I've been using it regularly for over a year, and I love it. I could start out imperative and then code more and more in a functional style as I got to be a better functional programmer.

Having said that, I did find the transition painful. But that's going to be true of transitioning to FP no matter how you do it.

I'm still in a Windows environment, but I look forward to transitioning to Mono once I get FP down. At that point I'll be on an open, free stack, programming in a powerful language with tons of libraries and thousands of people to help if I have problems. What's there not to like?

<comment><USER14> I have to point out that F# is licensed under the Microsoft Research Shared Source License Agreement, which isn't an approved OSI license.

[http://research.microsoft.com/en- us/um/people/antr/vrr/vrr/l...](http://research.microsoft.com/en- us/um/people/antr/vrr/vrr/license.htm)

They had plans to change to a MS-PL (OSI approved) license but still hasn't happened after 2 years.

On a more practical side, the current license isn't bad, just obscure.

<comment><USER15> F# was just released under to OSI-approved Apache open source license.

</comment></comment></comment><comment><USER16> This is a bit of an off-topic rant, so feel free to skip it if you would prefer a direct answer to the question.

For many years I've made it a point to studiously ignore languages that come out of Microsoft, having been burned too many times by their constantly shifting and sometimes suddenly-expensive tools. Before anyone mentions price, sometimes the expense is hidden in places like what system I would have to run, with what total cost of ownership, in order to use their stuff. There may have been some unknown opportunity costs to me, but I am blissfully unaware of these and have had plenty of other fun languages to use.

<comment><USER4> F# is free. [http://www.microsoft.com/downloads/en/details.aspx?FamilyID=...](http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f8c623ae- aef6-4a06-a185-05f59be47d67&displaylang=en) . You only pay if you need the fancy "enterprise" features.

<comment><USER17> I didn't see a Visual F# Express there - does Visual C# Express include IntelliSense for F#?

<comment><USER4> Download the VS 2010 redistributable shell and then the F# MSI.

<comment><USER18> See also <http://fsxplat.codeplex.com>, which is a project with the aim to make F# a better tool for cross-platform development. I'm currently working on an (open source) MonoDevelop integration for F# (sources are already there), but an announcement is yet to come...

</comment></comment></comment></comment></comment><comment><USER19> At Atalasoft, we decided to make F# an allowed language for development (in addition to C/C++, C++/CLI, and C#). We make imaging toolkits for .NET. There aren't many downsides compared to C# -- it's totally interoperable with our code, can be used to implement OO interfaces quite well, and it has some nice advantages (terser syntax, inlining, asynch blocks, etc). The main downside is in dealing with anything that uses Visual Studio Design support.

We don't use it for everything, but it has its place.

</comment><comment><USER20> I just don't see a big enough advantage compared to its parent, Ocaml. Partly because I wouldn't count Visual Studio and .net on the "pro" side. Ocaml is basically the same language, you don't have a big methodology mismatch when using libraries, it produces smaller executables that are quite fast, its runtime has some advantages if I remember correctly. (And there's the evangelist problem, but let's not get into that again.)

<comment><USER21> F# is a somewhat simpler language than OCaml. Plus, it has decent concurrency support (which is a bit of an issue for OCaml if I recall correctly).

<comment><USER20> Does F# have functor support by now? Because if that's what's meant by simpler, I'd rather have a bit of complexity. If I program in a functional, symbolic manner, I also don't want to kowtow to the runtime that just wasn't made for such an use (If I recall correctly, Yaron Minsky of Jane Street complained somewhat about F#'s allocation rate in this respect).

Concurrency is an issue that I hope the Ocaml developers will address a bit more, though.

<comment><USER9> No functor support. Questionable if it would fit idiomatically with .net framework culture but not something you miss.

In order of wish list to F#:

       - ability to create a structure isomorphic to GADTS
       - further enhancements to metaprogramming and how it does quasi quotation stuff
       - Support for Higher Kinds

The above would ameliorate the need for functors too, I feel.

</comment></comment></comment></comment><comment><USER22> I've used F# at work.

It does have a sort-of REPL, you don't have to put one line functions inside a dummy class, and the async monad and queues are pretty handy.

It doesn't benefit from adding yet another set of collection types to the .NET API (which already has two semi-competing sets) but that is unfortunately beneficial, partly due to the next point.

The balkanisation between the .NET typesystem (class at a time, overloading ok) and the ML typesystem (sequential and no overloading) is a constant source of irritation. How to make a short name alias to the System.Console.WriteLine variadic function?

It's REPL unfortunately doesn't tie into the otherwise impressive VS intellisense and is a pain to attach the debugger to.

It hasn't proper closures (you cannot mutate variables you close over).

It's not a coherent platform, but a mishmash.

</comment><comment><USER23> Check this Ocaml talk by Yaron Minsky from Jane Street Capital: <http://news.ycombinator.com/item?id=1533275>

He said, that unlike Ocaml, in F# you still can get Null-pointer exceptions, since it's based on .NET

<comment><USER24> That's partly correct. The danger comes not because F# is "based on" .NET but because it can call into other .NET libraries. F# code by itself, including the F# libraries, won't create null references except in two very specific cases (see <http://msdn.microsoft.com/en-us/library/dd233197.aspx>). And F# types are non-nullable unless you ask for them to be nullable.

But if you call into non-F# libraries, including .NET framework libraries, then they _can_ return null references. And if your F# code tries to use a null reference obtained in this way OO-style (e.g. making an instance method call through the reference), then that will indeed cause a NullReferenceException.

Obviously, it's easy to wrap 'dangerous' calls to return option values (F#'s equivalent of Haskell Maybe) instead of nulls -- it's a judgment call as to whether it's worth it for any given API.

</comment></comment><comment><USER25> I used it for a while a few years ago. Like O'Caml or Haskel , F# is a language that forces you think through your problem up front. For example you must get your types exactly right before the program compiles. In return, you get fewer runtime errors, e.g. fewer null pointer exceptions.

I stopped using it when I changed jobs and left the Windows platform.

I don't really miss F#. It was fun to learn and use, but wasn't helping me write better programs quicker than C# or Python.

</comment><comment><USER26> I've been enjoying using it for both some personal and commercial projects. Points I've noted myself that aren't really discussed so much in the usual analysis, or maybe they're the 'small print':

1\. Active Patterns are incredibly useful. Active Patterns are the f# equivalent of 'View Patterns' in Haskell. In other words they allow you write a function that converts something into a pattern matchable form. The first example I saw of this in Haskell was the ability to write a function of the form:

dec (n + 1) = n

which performs the same function as:

dec n = n - <USER2>

Whilst that 'cool' I didn't really see the applicability. Now you're in the f# world and trying to interact with .net libraries its suddenly amazingly powerful! Suppose you have a DOM api or something like that, that the idiomatic functional approach would involve heavy pattern matching. Hey presto - one simple function and you've wrapped up an imperative .net library and you can think of it like a discriminated union.

2\. Multiple collections libraries are annoying. There's some functionally oriented stuff in the f# libraries, but sometimes its a pain to get it to interact with existing c# code - you might need to do some conversions. The Seq module works over sequences - which are instances of IEnumerable - but you find yourself looking at the LINQ extension methods, and the legacy c# functions and then the f# ones and thinking 'its one platform - why are there 4 ways of doing something?'

3\. The f# compiler takes a while to generate code under Mono. I've not tried mono 2.8 yet, but as of 2.6 it takes a significant amount of time to compile projects. If you're compiling code in order to try and get a few errors, a common thing to do if you're used to using your compiler to find bugs in your code, then this becomes a bit of a productivity drag.

4\. Intellisense is still useful for functional programmers. I've noted a propensity among advocates of self-described expressive languages to claim that an IDE is a crutch for weaker programmers, or perhaps produce some other ill conceived but dismissive response towards IDEs. In the past I've considered the notion that the support something like Eclipse or IDEA gives to Java programmers or Visual Studio gives to C# is something unnecessary in the functional world. My mind on this matter has been changed by two things - <USER3> being the Visual Studio support for f#. Its not as good as c#, but its at a pretty young stage and is already highly useful. I feel a lot more productive in visual studio than vim for example. The other aspect was my efforts in teaching beginners to program haskell about a year ago. I was expecting a lot of people to get stuck on Monads and combinators etc. What I didn't expect was them to become confused on basic programming issues - things an IDE would help them find solutions to more easily in a language like Java. So I'm inclined to think from these experiences that IDEs are useful, even in a succint language like f# and more importantly both to beginners and experts alike. (Assuming I can consider myself an expert.) There's already a tool that provides the intellisense support in an out-of-ide environment, and I hope that it will mature soon enough that I'll be able to use it within vim.

I have a few more minor points - but I think thats all of interest for now.

<comment><USER27> Slight bit of pedantry (not to detract from the overall content of your post): dec (n + 1) is not a view pattern, it's an n+k pattern, and Haskellers have mostly decided that they were a bad idea. However, you've gotten the point of real view patterns (foo (someFunc -> x)) spot on: they encourage better data abstraction, which is helpful if you've got an imperative .net library that you want to interface with.

<comment><USER26> Thanks for the correction. I admit I've not fiddled with Haskell's equivalents to Active Patterns to any great extent - as since I mention in the original comment I didn't hugely see the motivation in that context. I really only mentioned them since I assumed more people would be familiar with haskell.

<comment><USER15> Haskell doesn't have active patterns. Although they were originally proposed for Haskell by Wadler, they don't make so much sense with non-strict evaluation because you can just write code to compute the result and match over it safe in the knowledge that it will be computed on-demand only as far as required.

</comment></comment></comment></comment><comment><USER28> From what I have seen, it seems that MS is pushing this as a way to parallelize a section of your application. Meaning that you would use c# for most of the app and write a performance critical/parallel section in F# to avoid using locks/ critical sections.

Maybe I'm seeing things wrong, but it seems that MS is not looking to make F# as mainstream as c#.

<comment><USER29> F# is a bit weird to folks who are used to C# or VB, which is what PG was referring to with the "Blub" paradox. F# is different enough that the majority of .NET programmers I meet, or work with, have no frame of reference to understand F# with. The only ones I know who code outside the office are trying to get rich with iPhone or Android apps.

<comment><USER30> I'm a "Blub" programmer, and yes, I really don't have any frame of reference to understand F#.

And I'll probably try my hand at Ruby or Python before F# or Lisp... I've read many posts and articles about how at least trying Lisp will make me a better programmer but I still don't want to take the plunge.

I'm not a hardcore programmer (heck I'm starting an MBA next year (1) ), and pretty pragmatic - if my tools help me build what I want, great. I don't object to learning new tools but there's a significant time cost to that, so I have to prioritize

(1) I've also read a lot of advice about why I don't want or need an MBA but I'm trying to look at it like an entry point into the business world and a networking and career advancement opportunity. I like solving problems outside of programming (making better processes and such). I'm not a salesman or marketer, but I am interested in business.

</comment></comment></comment><comment><USER31> I had no idea what it was. For those similarly unaware: [http://research.microsoft.com/en- us/um/cambridge/projects/fs...](http://research.microsoft.com/en- us/um/cambridge/projects/fsharp/)

<comment><USER32> The big thing is that F# has graduated from MS Research and is now available as Visual F#. This is important as it could make functional programming more mainstream (or at least into the hands of more people).

</comment></comment><comment><USER33> I'm curious as to what libraries are available for linear algebra and numerical computation (free / open source ones) and how they compare to e.g. Numpy, mpj or colt on java, etc?

</comment><comment><USER34> I love it. Pair it with a few C# projects to get all the LINQ-TO-SQL goodness and ASP.NET MVC + nhaml and you've got yourself a beautiful way to develop for the .NET platform.

</comment><comment><USER35> Here's F# on OSX: <http://blog.mbharrington.org/2010/10/27/fsharp-on-osx/>

</comment><comment><USER15> I love it!</comment>


Event Modeling - <AUTHOR> https://eventmodeling.org/posts/what-is-event-modeling/ <comment><USER2> I love that this focuses on event modeling as opposed to CQRS / Event Sourcing specifically.

Those patterns are useful (CQRS and ES), and they imply a certain design, but event modeling and domain driven design are what really tie systems together.

One thing I'm not sure I entirely agree with though is the flat cost of change. We've been working on an event modeled system for about 4 years now. It has grown in complexity and we've learnt a lot and we've invested a lot.

At this point we are probably approaching a flat cost, but initially our cost increased quicker than a traditional project.

There are a lot of pitfalls and learnings about building a system this way. Building read models gets very tiresome, and dealing with concurrency and idempotency are still hard (you just have a better tools / language for dealing with them).

Having that, once you break the back of this and build the internal skills, it is a great way to work and I really believe the systems will scale much more easily (both in performance and feature capacity). It's worth realising the effort to get there is substantial tough.

<comment><AUTHOR> > Building read models gets very tiresome

In what way does it get tiresome? In the increasing amount of read models needed?

<comment><USER2> That is one issue, as the number of services needing a model increases, you end up repeating this.

It also becomes more complex as your domain grows and the complexity / number of events increases.

Finally it can introduce a high degree of coupling, which ironically is something event modeling hopes to decrease. In this case if you have 5 or 6 consumers all building their own read model, but relying on specific events, the consumers are more deeply coupled into the services that emit these events.

They now all need to be updated if something fundamental changes in the systems supplying events.

I'm our case we used two techniques to mitigate this: \- defined 'public' events with a clear api. These are the only events any external consumer should consume. Yes, it introduces some versioning ave migration issues, but also creates a clear and very helpful boundary. \- defined read model as it's own domain and gave it a service. This is not always usable, but in many cases the model clients need of the entire system is fairly standard. This way they can integrate with a more typical query to pull the model rather than building it from scratch

</comment></comment></comment><comment><USER3> Event modeling and domain driven design go hand-in-hand, and learning both was a huge turning point in my development career. It helps align software to the business, and technical to non technical staff in a way where everyone speaks the same ubiquitous language (when a user registers) more than other approaches (rest - when I POST a user, crud - when I create a user).

It took me a few books and a couple of projects before the penny dropped, but now everything else seems disorganised and difficult to keep a lid on complexity as projects grow.

If your in Nodejs/typescript land and wanting to get started with DDD and eventing like the article, there's:

[https://github.com/node-ts/ddd](https://github.com/node-ts/ddd) \- basics for domain modelling, read/write repositories, aggregates/roots

[https://node-ts.github.io/bus/](https://node-ts.github.io/bus/) \- event/command service bus, supports workflows/sagas, queue technology agnostic (runs over sqs, rabbitmq etc)

</comment><comment><USER4> See, this looks very logical, and a "command based UI" is great.

But the diagram is missing _all_ the complex steps, that makes this type of system a lot of work to build and maintain. You need to be able to cancel. You need to be able to extend bookings, or change the room type. Sometimes, this will incur a fee, and sometimes not.

In my experience (not from hotel systems), the operators _will need_ a way to actually edit the full state of the bookings. A registration form and a read- only 'booking view' will not cut it.

I think it's a good idea to keep the "command-based UI" going for external/end-users though.

<comment><USER5> I think you are conflate not understanding context of how state needs to change vs we need to arbitrarily change state ad-hoc.

The diagram isn't missing anything. It only describes the flows that it contains. This how I build all systems. It works. Nothing you've mentioned demonstrates a failure in this style of system design. I would suggest maybe there is a gap in your understanding?

</comment></comment><comment><USER6> I feel like Rich Hickey, Clojure and Datomic deserve to be mentioned here; given the amount of effort he's gone through to communicate these ideas and provide neat tools to make them easier to implement.

</comment><comment><USER7> > The biggest impact of using Event Modeling is the flat cost curve of the > average feature cost. This is due to the fact that the effort of building > each workflow step is not impacted by the development of other workflows.

Was this written by a programmer? It seems someone is living on fantasy theory island.

<comment><USER8> It's true. I've seen this in action. Multiple workflow steps being built up independently of the others and with a huge array of different languages/frameworks.

</comment></comment><comment><USER9> This paper/approach is reminiscent of "Enterprise Integration Patterns"[0] use of messaging. As others have noted, this architectural approach can be quite powerful and allow for system evolution.

Event Modelling, as described by the post, goes beyond EIP by taking a component approach into the UI though. A good thing IMHO.

0 - [https://camel.apache.org/manual/latest/enterprise- integratio...](https://camel.apache.org/manual/latest/enterprise-integration- patterns.html)

</comment><comment><USER10> Nice article and nice visualizations.

The problem I usually run into is the complexity - examples of event flows almost always look super cool, but in real life scenarios, the complexity is usually huge and complex flows are very hard to visualize in an organized manner.

Whether you are talking about Event flows, BPMN or TOGAF - if your workflows reflect all the real-life complexity (e.g. booking cancellation, editing, extra charges etc. etc.) it will get almost impossible to visualize them concisely.

Shameless plug:

I wrote few blog posts on the subject and also created a workflow tool to address this problem:

\- Visualizing large workflows using D3, React and Clojurescript

[https://www.titanoboa.io/visualizing- workflows.html](https://www.titanoboa.io/visualizing-workflows.html)

\- Revisiting workflows: BPMN is dead. Long live the Functional Programming!

[https://www.titanoboa.io/revisiting- workflows.html](https://www.titanoboa.io/revisiting-workflows.html)

</comment><comment><USER11> It's funny how server-side and client-side architecture moves almost entirely hand-in-hand. Going by how we talk about things you'd think these'd be entirely different.

\- The Model-view-controller architecture was moved to the server-side by ROR and its descendants.

\- The javascript eventing model that was suitable for non-blocking UIs being moved server-side via Node.js.

\- Now we're now also aligning around event/command-driven models for "state- management" (Redux, event-sourcing/CQRS).

\- Event-streams like Rx.js being briefly hyped, but not gaining too much adoption (?) both for GUIs and servers.

It's nice to see that general programming principles are still applicable across domains.

</comment><comment><USER12> Event-driven systems are great. They're not for everything, and oftentimes when you're first introduced to, and start thinking in events, you might notice a tendency to start seeing all problems as a nail with a big hammer in your hand. That being said, it's a fantastic approach to exercise and keep in your toolbox for the situations where it can help.

</comment><comment><USER13> Thought provoking and it's be interesting to try out on a project. There were some hand wavy sentences around legacy systems:

"With proper buy-in, the organization can agree to not alter the existing system. Instead, dealing with bugs and adding new functionality is done on the side as a side-car solution."

But I understand their point. Kinda like strangling the monolith--sometimes the best way forward is to start over.

Has anyone actually done this and seen the flat cost curve? I worry that the components will be entirely independent in theory, but not in practice.

</comment><comment><USER14> Anyone know what tool was using to generate these diagrams?

<comment><USER15> I think they're made with Miro (formerly Realtimeboard). Can't recommend it enough!!

<comment><USER16> Miro needs to target startup founders - it looks pretty close to if not exactly the functionality I've been looking for for awhile now. Thanks for pointing them out.</comment></comment></comment>