Hot IT jobs: Why location matters - <AUTHOR> http://blogs.computerworld.com/it-careers/21165/hot-it-jobs-why-location-matters

<comment><USER2> The same applies to the rest of the world. However, the article seems to omit one important factor: career opportunities.

Cities with high salaries and high cost of living also offer plenty of opportunities in case the job doesn't work out, the company goes belly up etcerera. Anyone with desirable skills and a bit of a local network can get a new job there within a few weeks, if not days. In most places with a low cost of living however, things are very different.

</comment><comment><USER3> I don't understand why you'd move to some backwater purely for a 'cost-of- living' benefit.

I think articles like this are pretty pointless. The reason for living in a bit city is that it is a big city - it is a cultural choice. Where you live has so much impact on what you can do, so much impact on your overall happiness, that it probably ought to be the first thing you decide - all else should follow from that.

</comment><comment><USER4> I recently moved from a metro area to the rural countryside and I really hate it. Miss those conveniences, nearby places to go hang out, social interaction, user group meetings/meetups, and conferences. Never felt more lonely when I moved out of the big city. Friends help some.

Getting out late at night is a pain (even in midsize cities). Places close too early and too many road blocks.

There's also (in some places) this "conservative, religious mentality" and risk avoidance (no fun) that's awful. At times, I feel like I'm working among 18th/19th century Amish or fundamentalists that think only witches/warlocks use computers! Thinking about moving out of there before I'm burned at the stake! ;)

</comment><comment><USER5> Doesn't it seem like this analysis is done completely incorrectly? You can't directly compare two indices together that are based on different magnitudes (cost of living vs. salary).

If average cost of living in absolute dollars is $30,000 and average salary is $100,000, living in San Francisco nets you ($100,000 * 1.36) - ($30,000 * 1.63) = $87,100. Living in Pueblo nets you ($100,000 * 0.76) - ($30,000 * 0.88) = $49,600.

I'm afraid this will spark an unnecessary mass-exodus to Pueblo.

</comment><comment><USER6> Housing is the main variable cost so if you want lots of it (large family house in nice area) it will make sense to prioritise the cost adjusted salary. If you are single and happy to live cheap then the highest unadjusted salary should allow you to save bucket loads of money.

</comment><comment><USER7> Here's the thing: I think salary alone is a better indicator than salary adjusted by cost of living.

The reason is that there is also quality of life, which is hard to measure. I think that in the absence of a dedicated measure for quality of life, rent levels are a relatively reasonable proxy, and those are one of the biggest factors in the cost of living.

So, as indicators go Salary&Cost of Living&Quality of Living > Salary alone > Salary&Cost of Living.

(Obviously this logic also doesn't necessarily hold across continents, or even in a market as fragmented as Europe, because people rarely move between different countries in Europe, whereas people move between states all the time in the US.)

</comment><comment><USER8> My girlfriend and I just moved into the middle of Manhattan from the suburbs, and I simply don't buy these numbers.

First off, what exactly does 'cost of living' mean? My old apartment was $1400 a month in rent, and we put at least $300 a month towards gas, insurance, and maintenance for each of 2 cars. (excluding depreciation or car payments, we owned both cars outright). So a minimum of $2000 in car & apartment costs. We had a 3 bedroom condo with 2 and a half bathrooms - for 2 people. We had almost half of the place entirely empty, but it was hard to find anything smaller of the same quality. Crappy apartments were $1000, so it didn't really make sense to move.

Now we are paying $2500 a month for a 1 bedroom apartment. It is really nice, in a doorman building, with a rooftop patio on the 20th floor with big city views, a nice kitchen, family room, eating area, walk in closets, etc. On a per square foot basis, it is probably 3x as much. But we sold the two cars, so we are really only about $500 a month higher than before. And instead of having 15-20 minute commutes in the car, we both can walk a couple of blocks to work.

Then there are a few more wrinkles. The old apartment was all electric, and my utilities were from $100 in the summer to $250 in the winter. This apartment has steam heat and chilled water cooling included in the rent. I no longer have to pay for water. I'm paying less for TV & Internet than before. Groceries are a little more expensive, but Fresh Direct delivers to my door and costs about 10-15% more than the suburbs at most.

The biggest increase in cost is going out to bars & restaurants, but that is a totally discretionary expense.

Overall, I would say a conservative estimate is that our cost of living went up a total of $1000 a month. We needed a combined extra $20,000 salary to pay for that. Our raise was multiple times that amount.

<comment><USER9> Of course cost of living estimates are just for singles and couples without children. Add a kid or two and the cost of living differences will become more pronounced.

</comment></comment><comment><USER10> This is an interesting tertiary consideration. But primarily you should be considering lifestyle and career development opportunities in your destination city (which one to weigh more heavily depends on the individual).

If you move to an industry backwater just for a relative cost-of-living benefit it could be disastrous to long-term skill development or general happiness where you live.

</comment><comment><USER11> I think in most places you are earning enough to live comfortably. Far more important to overall happiness than $10k more or less is whether you enjoy your job, get along with the colleagues and have friends and a cool environment outside of your workplace.

</comment><comment><USER12> I really enjoyed this article because it explains why it is so hard for me to consider leaving my home state of Arkansas. The cost of living is very nice here and with a developer salary, one can live very well.

</comment><comment><USER13> I was quite surprised by the low variance for cities like NY and SF, the variance here in the UK for London is significantly greater.

</comment><comment><USER14> Some interesting analysis! It's a shame they didn't take differences in income taxes into account in the indexes, but hopefully the growth of remote working will make all of this less important over time and we can all live wherever we like.

<comment><USER15> I would have liked to see that analysis as well..

Still waiting on the "killer app" for remote programming to make it widespread. Tmux and Vim isn't it..

<comment><USER16> My opinion: There is no killer app for remote programming.

Working remotely is a _skill_. It is very different from working in an office environment, and requires that you compensate for your lack of physical presence with proper behavior and strategy.

Remote, you can often get lots of uninterrupted work done, but sometimes this can be a danger, because interruptions often imply that you're a "go-to" person. You also miss out on a lot of the social stuff, which (because we're primates, get used to it) turns out to be important for reviews and who-gets- to-work-on-what decisions.

Tools help, but they are a nearly insignificant part of the story once you're beyond the simple capacity to check in code.

<comment><USER15> I probably should have been more specific; I'm interested in remote pair programming. As it stands now, we end up using Mac's built in screen sharing app but this has a less-than-stellar responsiveness that's typically needed when two people are going back and forth making changes to the code..

I've written up my thoughts on what is needed ( <https://gist.github.com/1999816> ). TL;DR - a lightweight protocol to share buffer updates, tab changes, opening files, etc.

</comment></comment></comment></comment><comment><USER17> Interesting graph technique, wherein the first 100% appears to have been elided from the X axis.

</comment><comment><USER18> This kind of feels like the difference between the nations of Extremistan (extreme variance in outcome) and Mediocristan (normal distribution in outcome) from Nassim Nicholas Taleb's "The Black Swan".

For example those with the largest adjusted incomes probably live in the safest areas where one can get comfortably wealthy over a long period of time. However, they probably forgo the option at huge wins by shirking the cost/risk of getting a tech startup lottery ticket.

Same thing occurs with those who go into med/law/normal engineering. They essentially shoot themselves in the head to take themselves off the lottery list and put themselves on the steady, safe and slow wealth generation list.

Those in extremistan pay a greater entry fee in terms of risk vs. reward to play the finance/startup lottery and have a small shot at winning really big. In turn, risk adjusted their salaries are pitiful when adjusted for risk/cost of living - but somewhat decent if you factor in the value of the lottery ticket.

<comment><USER19> This is another instance in which an average doesn't really tell you much because, as usual, you have more information. If you play this high risk game the average doesn't mean anything to you because eventually you do learn the value of that success bit.

The smart approach here is to take a cold hard look at your skills and ideas and only pursue this if you can persuade yourself you're good enough to beat the odds.</comment></comment>


Why Does Every Soccer Player Do This? - <AUTHOR> https://www.nytimes.com/2018/07/10/sports/world-cup/england-croatia-france-belgium.html <comment><USER2> That reaction is not limited to just Soccer or sports for that matter.

I often do it when making mistakes at work etc.

Didn't read the article, but that's figured that the conclusion will be something similar.</comment>


Can a New Website End Tech Meetup Sexism in DC? - <AUTHOR> http://dcinno.streetwise.co/2016/11/09/can-a-new-website-end-tech-meetup-sexism-in-dc/ <comment><AUTHOR> The moratorium on political submissions on HN has been lifted. see: [https://news.ycombinator.com/item?id=13131251](https://news.ycombinator.com/item?id=13131251)

So please don't flag this based on that reason.</comment>


Microsoft and Linux? - <AUTHOR> http://www.windowsitpro.com/article/TaxonomyRoot/Microsoft-and-Linux-139928 <comment><USER2> This jumped out at me:

      ...Microsoft's Windows Server... [is] the entrenched,
      professional, high-end solution favored by big business.

      And Linux [is] used by smaller and mid-sized businesses,
      largely...

That seems exactly backwards in my experience.

<comment><AUTHOR> True i will agree to that, though the author has summarized it well.</comment></comment>


Gene therapy trials on monkeys' eyes could help cure color blindness - <AUTHOR> https://www.wired.com/story/monkeys-with-superpower-eyes-could-help-cure-color-blindness/ <comment><USER2> What could be really exciting, is that we could develop a way to see other colors. Butterflies see many more colors than Humans and there are rare cases of humans with an extra cone receptor.

<comment><USER3> That might be really fun for you but for me I'd really be much more excited about being able to see colours well enough to achieve my life long aim of being a pilot. As well as avoiding 1000 tiny annoyances that come with not being colour normalative.

Maybe I'm just being sensitive but it's almost like someone was discussing a way to regrow a missing limb and you've come along to tell us you've always fancied a third hand.

<comment><USER4> >That might be really fun for you but for me I'd really be much more excited about being able to see colours well enough to achieve my life long aim of being a pilot.

Are you sure that colour blindness would still present an issue? I've heard that in recent years the requirements had been relaxed around this.

<comment><USER3> I'm sure.

</comment></comment></comment></comment><comment><USER5> I have the standard red/brown color blindness. I have brown eyes and can see well in strong sunlight without squinting. I can navigate unfamiliar landscapes in pure starlight.

If I have to give up these traits for better color vision - no thanks. I'm uncertain there is a correlation, but I wouldn't be surprised.

<comment><USER6> Yup, same here.

Apparently I'm a moderate deutan according to one of the online tests, but the only time I have any trouble with anything is with the colour blindness tests, in real life, never - completely fine with electrical wiring, photographic re- touching, display reading etc etc.

I've never mixed odd socks, worn the wrong colour by mistake or anything else apparently colour-blind people have trouble with.

Quite happy to keep better night vision and ability to wander around in bright sunshine without squinting vs a completely non-impacting deficiency. :)

<comment><USER7> You have not played enough games then...

</comment></comment></comment><comment><USER8> To me "genetically modified" means germline alterations present in the whole organism. Here I'd suggest "somatically modified", denoting only changes in some somatic cells.

<comment><USER9> Eh you're being too technical which would only serve to confuse the masses. Why not 'gametically' or 'zygotically' modified as per your lingo? Is delivery of mRNA to cells not genetic modification as well, I believe so</comment></comment>


The WhatsApp Privacy Problem - <AUTHOR> https://ikouchiha47.github.io/two-cents/pages/episode_1.html <comment><USER2> "abandon whatsapp" doesn't really work in the real world though.

Met a new person? That's likely how you'll communicate. Talking any lessons? That's how your teacher will usually communicate.

Plus, moving most people over 50 to any other platform sounds way too much of a challenge.

</comment><comment> em-bee whatsapp appears to be worse than wechat. on wechat i can hide my phonenumber from other users. that's a major concern for me, i don't want anyone to be able to call me just because they got my messaging contact.

wechat does not have any kind of read receipt. so i can never tell if someone is seeing my messages unless they actually respond.

ironically, telegram doesn't seem to have any option to turn read receipts off. at least it too can hide the phonenumber.

both telegram and wechat can mute groups, though wechat has no archiving feature, like whatsapp delete is the only option. (or asking the admin to remove me, that way i can keep the history but not get new messages)

</comment><comment><USER3> Anyone know how to expose the activity log?

</comment><comment><USER4> Look, if you trust a Facebook or google owned property to respect your privacy that's kinda on you. They've proven time and again they do not care about your privacy at all.

<comment><USER5> In some places/situations, it is impossible to function in society due to how ubiquitous WhatsApp is. Not using it is not an option. Solution here IMO has to be regulation and/or breaking up companies like Facebook, who would care about this issue if they didn't have the power to shut down or buy any serious competitor.

<comment><USER4> I know, and that's very unfortunate... But very few people choose to or even understand the implications of giving away your privacy.

</comment></comment></comment><comment><USER6> Elevator pitch idea: "we are to WhatsApp what Signal is to text messages"

<comment><USER7> I think that's also Signal's elevator pitch.

<comment><USER6> Wait, so I can use Signal to communicate with WhatsApp users through WhatsApp?

<comment><USER7> Ah, I understand you now.</comment></comment></comment></comment>


I watched an entire Flat Earth Convention for my research–here's what I learned - <AUTHOR> https://arstechnica.com/science/2018/05/i-watched-an-entire-flat-earth-convention-for-my-research-heres-what-i-learned/ <comment><USER2> "But this can also be seen in more subtle and insidious form in the way in which Brexit, for example, was campaigned for in terms of gut feelings and emotions rather than expert statistics and predictions."

Be interesting to know if Americans are jealous of a system where unelected appointees are the only people allowed to propose laws in secret and make ex- cathedra pronouncements for 700 million people together with an unelected (aside from the local crony vote) president who in turn appoints without consultation, the most powerful bureaucrat in Europe.</comment>


Is there a Moore's law for science? - <AUTHOR> http://www.newscientist.com/article/dn19474-is-there-a-moores-law-for-science.html

<comment><USER2> Given the title, odd that they don't mention the singularity.

Interesting discussion of these habitability factors for Mars <http://quest.nasa.gov/aero/planetary/mars.html></comment>


Google Researchers Exploring Social Networking, Possibly for Google Me? - <AUTHOR> http://mashable.com/2010/07/13/google-social-slide-deck/ <comment><USER2> A deck with 216 slides? Yikes. Those guys should come work in my government department, they'll feel right at home.

I'm not sure that the separation of groups is really a big deal. Most people I know have solved that problem by using LinkedIn for their professional contacts and Facebook for everything else. It's the best way to maintain a clean break between the two and be certain that Facebook isn't going to dork it up.</comment>


How I gained access to TMobile's national network for free - <AUTHOR> https://medium.com/@jacobajit/how-i-gained-access-to-tmobiles-national-network-for-free-f9aaf9273dea#.mkcj8ga3t <comment><USER2> Props for disclosing this. I would have probably went for a life-time of free, unlimited and prioritized mobile internet access.

</comment><comment><USER3> I remember being able to SSH to any host using a PAYG sim on three that had run out of credit a few years ago.

These sorts of slips seem quite common

</comment><comment><USER4> Back in the 2000's (age of J2ME featurephones and when 3G networks were only starting to flourish) there was this Spanish carrier that had a separate APN for sending MMS (with a proxy that only allowed access to the actual MMS server, that billed by sent message) and another one for ordinary data (which was, of course, expensive at the time).

After some fiddling, I found out that the filtering proxy was banning access to anything other than [http://mms.provider.es*](http://mms.provider.es*). Note how there was not a trailing slash. You could access any domain like [http://mms.provider.eswhatever.freedns.org](http://mms.provider.eswhatever.freedns.org) and it would happily proxy you to the outside internet. As the billing was done on the MMS server and not in the proxy, you could pretty much open any HTTP connection to any proxy that had a domain like that pointed to it.

Some deep browsing (too much free time) led to Filipino forums sharing hacked versions of Opera Mini and other popular apps that let you change the Opera proxy endpoint to other custom domain that then was pointed to Opera's own servers - probably because of similar separate tricks.

Oh, old times...

</comment><comment><USER5> Do you want to get into a a great university?

Because making things like his post is how you great university.

This isn't a large technological feat, but the curiosity and writing ability on display would certainly have me ticking the [yes] box were I in admissions. (Though I am not.)

</comment><comment><USER6> Wasn't this posted a few days ago?

<comment><USER7> 5 days ago, yes [https://news.ycombinator.com/item?id=12500540](https://news.ycombinator.com/item?id=12500540)

</comment></comment><comment><USER8> This strikes me as burying the lede -- if TMobile is traffic shaping based on what looks like the speedtest folder, are they also QoS-prioritizing that traffic to get better speedtest results?

<comment><USER9> That is a great point, but kind of outside the scope of his article. I think using the /speedtest/ folder as a test across the same resource would provide some clues.

s3/asset.jpg s3/speedtest/asset.jpg

Of course, they might whitelist using speedtest but give priority based on originating domain (which would obviously make a billion times more sense).</comment></comment>


The Infinity Machine (2017) - <AUTHOR> https://www.chiark.greenend.org.uk/~sgtatham/infinity.html <comment><USER2> If we can talk about infinity, does that mean our minds are infinity machines? For example, it is impossible to derive the axiom of infinity from any set of finite axioms.

[https://math.stackexchange.com/questions/155380/why- accept-t...](https://math.stackexchange.com/questions/155380/why-accept-the- axiom-of-infinity)

<comment><USER3> By definition, all axioms are not derivable within the axiom system they define.

We can talk about sand but that does not mean our minds are sand or sand machines. We can talk about infinity within a set theory that contains that concept. A very large majority of mathematicians use infinite sets and have no problem with them. There are mathematicians that don't like the existence of uncountable sets or of uncountable choice but almost all of them accept countably infinite sets. For instance, I've never heard of a mathematician who believes that there are finitely many primes.

</comment></comment><comment><USER4> Very amateurish. Why even talk about clockspeed of a machine, that can run any countable set of Turing programs in a single tick? That does not make any sense.

Also, claim, that such a machine is physically impossible in our Universe is unsubstantiated (thought very likely).

<comment><USER5> It's not hard to conceive of an algorithm that, when using the smallest possible unit of energy per step, requires more energy than exists in the known universe.

<comment><USER4> I don't understand your suggestion. Where does the assumption, that each "step" directly maps to energy consumption of some physical machine? Does not that basically rest on the assumption, that no machine can run infinite Turing machine steps with finite energy?

<comment><USER5> It seems self evident that you can not run an infinite process in a finite universe. The laws of entropy are your enemy.

In this case the process is not "infinite", but is larger than your universe. An example is trying to brute force an encryption algorithm. You figure out the minimal amount of energy that could be used to compute each step, in terms of electron state changes or some other fundamental unit. Then you calculate the quantity of energy in the universe (assuming mass gets converted into energy as per E=MC^2 and all energy is put in some form you can use) and compare that against the energy per step * problem space. If the latter is larger then you can say that even though the problem is finite, there is not enough resources in the universe to discover the solution.

<comment><USER4> Now you are assuming, that the Universe has countable size.</comment></comment></comment></comment></comment>


Computing, Without a Whirring Drive - <AUTHOR> http://www.nytimes.com/2008/12/11/technology/personaltech/11basics.html?_r=1&partner=rss&emc=rss <comment><USER2> A cheaper alternative for the desktop -- buy an already quiet conventional drive and place it in an enclosure:

[http://www.quietpcusa.com/Smart-Drive-Classic-Cooper-HDD- Enc...](http://www.quietpcusa.com/Smart-Drive-Classic-Cooper-HDD- Enclosure-2002C---All-Copper-P281C44.aspx)

The Grow Up Japan drive enclosures are good at conducting heat, so you get the benefit of sound dampening without sacrificing longevity. Yes, I've installed one in my desktop.

</comment><comment><USER3> I have noticed for years how my Mac laptops are very quiet. When I go into a conference with someone who has a Windows laptop you can constantly hear hear the hd making noise. It wasn't until when running vmware that my hd would make noise that I put it together. Any idea what Windows is doing?</comment>


Why Ecuador should lift cryptocurrency ban - <AUTHOR> https://medium.com/@phasnox/why-ecuador-should-lift-cryptocurrency-ban-5ff240fcbd4c <comment><USER2> This ban makes no sense, to the general public back in my country. No wonder no one wanted to use their state-run centralized currency.

I hope the new government come to its senses.

<comment><AUTHOR> Consider signing my petition btw: [https://www.change.org/p/asamblea-nacional- por-favor-se-leva...](https://www.change.org/p/asamblea-nacional-por-favor-se- levante-la-prohibici%C3%B3n-de-criptomonedas-en-el-ecuador)</comment></comment>


Ask HN: How do I show a company that I'm worth hiring? - <AUTHOR>

I want to start applying to companies looking to hiring junior developers, but I don't seem to meet the requirements for any of them.
I don't have a college degree. I don't have an amazing GitHub account. I'm not the best programmer in the world. I'm certainly not a "rock star" or a "ninja".
What I DO offer is passion and the ability to learn quickly. What else do I need to convince a company to hiring me? <comment><USER2> Here's one out of my personal playbook on both sides of the hiring process: Find a company that has an API and build something with it. Make a mashup, augment a feature that they have, or build a missing feature. This shows them that you are passionate about their company, have the ability to execute, and can deliver value.

Find a company that you want to work for that doesn't have an API? Build one for them. Scrap their website, grab some basic data, and show them that you can build a rudimentary API that gives customers access to build on top of what they want. Or build out a cool feature that they're lacking.

More than programmers, companies are looking for people who can help them improve their business. If you can bring passion, execution, and vision together you'll always find a job you want.

Also, we're hiring: [http://www.globalgiving.org/aboutus/jobs/software- engineer-f...](http://www.globalgiving.org/aboutus/jobs/software-engineer-for- good.html)

<comment><AUTHOR> I tried to have a look at your API, but it won't load. :) Just sayin.

EDIT: Nevermind, it loaded.

</comment></comment><comment><USER3> Where do you live? One often overlooked avenue is to get contacts in the local tech community via meetups/OSS. Having an existing employee vouch for you is a big leg-up, but of course that person is putting their reputation on the line, so they have to really know your talent / passion / dedication first. Probably not what you want to hear as it doesn't help find a job today, but having people that can vouch for your skills, long term, is invaluable and takes time to build up, so starting ASAP is a good idea. One of the open secrets in the tech world is that most job qualifications are a bit overboard and can be waived entirely for a good candidate. Just realize not ticking any of the skill boxes AND not having an inside recommendation is a hard thing to overcome, so you need to attack one angle or the other.

<comment><AUTHOR> I'm from Jacksonville, FL. Unfortunately, there isn't a huge software community here -- at least not that I can find.

<comment><USER3> [http://www.quora.com/What-is-the-Miami-FL-startup-scene- like...](http://www.quora.com/What-is-the-Miami-FL-startup-scene-like-these- days)

Now, obviously Miami is a long ways away, but at the very least looking into some of the links in the Quora response may lead to interesting things. Or

<http://jacksonville.startupweekend.org/>

Alternatively you could find an OSS project that fits in your wheelhouse and could be something you could get into. Most projects have lots of 'grunt' work that needs to be done, it isn't glamorous or really challenging, normally, but it can get you familiarity with the codebase (necessary for more interesting changes) and it can get you into 'the scene' so you can get to know other project members, get CR's from them (very helpful for learning, though can be scary for beginners...or even experts :)), pointers to jobs opportunities, etc..</comment></comment></comment>


Show HN: Cloud Commander orthodox web file manager with console and editor - <AUTHOR> https://cloudcmd.io <comment><USER2> Hey, that looks like Norton Commander in the browser! Even the icon is an homage to the original. Neat.

Also TIL that "orthodox" file manager is an actual term, and there's even a huge online book about them [1]. That's funny, we used to call then just "file managers"... ;)

1\. [http://www.softpanorama.org/OFM/Paradigm/index.shtml](http://www.softpanorama.org/OFM/Paradigm/index.shtml)

<comment><USER3> Wikipedia has an overview:

[https://en.m.wikipedia.org/wiki/File_manager#Orthodox_file_m...](https://en.m.wikipedia.org/wiki/File_manager#Orthodox_file_managers)

</comment></comment><comment><USER4> A few things I noticed in the live demo:

\- The console isn't there unless you open it manually, at which point it overlays the panels. To me one of the main benefits of an OFM is that you have a console _always_ available _as well_ as the panels (from which you can pick file names or paths (Ctrl+Enter, Ctrl+[, Ctrl+]). If I want only one or the other I'd use Explorer and cmd instead of Far.

\- The context menu (curiously opened with F9, which normally triggers the application menu of the OFM, from which you can access settings, view options, etc.) is not usable with the keyboard, which kinda defeats its purpose in such a tool.

\- Bulk selection keys Num+ and Num- don't work, although they are documented.

\- Alt+Left/Right is perhaps not the best idea for a hotkey in a browser. Sometimes it performs its intended function, when pressed in the wrong panel it instead performs the browser's function for going around the history. I'd say either find better hotkeys or always disable the browser's function, instead of contextual.

\- Page↑/Page↓ curiously move less than a page, which means when pressing Page↓ with the cursor at the top, the list doesn't scroll.

\- When using a keyboard layout where `/~ is a dead key (e.g. US International), the dead key will remain active for the first key pressed in the console, leading to things like à instead of a. This may not be circumventable from within a web application, but perhaps a better hotkey can be chosen instead to make up for the deficiencies of handling input in web applications. This issue also would go away once the console is always there instead of having to be toggled.

\- The feedback button in the live demo doesn't work.

<comment><AUTHOR> Thank you for such a detailed commentary.

\- Yes, there is such thing: console opens on a modal, but it would not be changed in the nearest future in Cloud Commander, anyways console([https://github.com/cloudcmd/console](https://github.com/cloudcmd/console)) could be used independently to build a fork from cloudcmd dependencies which are mostly located on npm. I can help with it but I have no time to do it myself. It is a good idea about picking file names or paths (Ctrl+Enter, Ctrl+[, Ctrl+]). Actually you already can paste path to current directory with Ctrl + P, but using this hotkeys would be more convenient.

\- You right about menu. It is a simplest possible component [https://github.com/coderaiser/menu-io](https://github.com/coderaiser/menu- io), anyways it could be improved, pull requests are welcome.

\- Num+ and Num- and Alt+Left/Right fixed in v5.7.6 ([https://github.com/coderaiser/cloudcmd/releases/tag/v5.7.6](https://github.com/coderaiser/cloudcmd/releases/tag/v5.7.6))

\- I can not reproduce Page↑/Page↓ bug, maybe it is related to screen size? What screen resolution do you have?

\- I'll think about dead key, looks like it should be handled separately.

\- It is strange, I can't reproduce feedback button bug either. What browser and OS do you have? Could you look at Network Panel and Console of Developer Tools of your browser? Is there something red?

<comment><USER4> I'm sorry to not being able to help out with pull requests. My grasp of JavaScript isn't good enough and work leaves me with little time to devote to other projects, sadly. I hope a bit of input from a bit of a usability perspective is still welcome, though :-)

As for Page↑/Page↓: 1680×1050 here. Could reproduce it in both Firefox and Chrome.

As for dead keys: It may require rethinking input handling, depending on how you're doing it currently. Input is usually on two different levels: Key presses and text input. While you usually cannot reliably turn the former into text and cannot get a pressed key from the latter (could also have been an IME or multiple keypresses), you usually should be able to handle a key press (for opening the console) and not have it result in state changes for text input handling (which would be required for input on the console).

Feedback button now works, but didn't for me when I wrote that comment either on Firefox or Chrome on Windows 10. I didn't consider checking the dev tools, though, sorry. But seems to be resolved now.

</comment></comment></comment><comment><USER5> I have been trying to break a FAR manager addiction for many many years, despite being a linux user exclusively for the last 10, FAR is the most useful shell I have ever used. mc doesn't cut it.

<comment><USER6> I guess my may have seen it, but there appears to a project ongoing to try to port FAR to Linux.

[https://github.com/elfmz/far2l](https://github.com/elfmz/far2l)

</comment></comment><comment><USER6> Makes me wish this was what Firefox would present me with if i entered a ftp url...

</comment><comment><USER7> This has to be the greatest logo I've seen in a while. Did you create it yourself and if so what did you use?

<comment><AUTHOR> This logo is a work of a great designer [http://zalitok.github.io](http://zalitok.github.io) She use CorelDRAW and Adobe Ilustrator for this purpose.

</comment></comment><comment><USER8> Anyone want to give a run down of what this is/does?

The live example isn't working either.

<comment><USER9> From the site, it seems to be a Web version of mc on JS base, making file management outside of trusted ssh devices less of a nuisance. Fairly straightforward imho.

<comment><USER8> > Web version of mc on JS base

What is mc?

<comment><USER10> "mc" stands for midnight commander, which is itself a clone of Norton commander, which was sold by Symantec in the 80s and 90s. Norton commander was popular enough that by the time it was discontinued it had been ported to many other platforms (midnight commander being one of the ports for unix systems). Over time, Norton commander became the prototype for the "orthodox file manager", the category of file managers with two side-by-side file browser windows: many of the same key bindings for this category of file manager are the same as the original norton commander keybindings.

Midnight commander (and more generally an orthodox file manager) is especially useful for moving files from one system to another, as it usually supports browsing to remote file systems over ssh or ftp, and gives you a simultaneous view of where you're moving files from and to on the same screen.

The Wikipedia page is a pretty interesting read, actually: [https://en.m.wikipedia.org/wiki/Midnight_Commander](https://en.m.wikipedia.org/wiki/Midnight_Commander)

<comment><USER6> Actually it started as a independent company that Symantec bought in the 90s.

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

<comment><USER10> Fascinating, TIL–thanks!

</comment></comment></comment></comment></comment></comment><comment><USER11> Excellent! Great doco too.

</comment><comment><USER9> This looks hella useful. Checking it out today. Thanks!</comment>


Ask HN: What are some good resources to learn ipv6? - <AUTHOR> Video, discussions, articles <comment><USER2> fwiw, i have found this one : [https://www.amazon.com/Protocols- Implementation-Morgan-Kaufm...](https://www.amazon.com/Protocols- Implementation-Morgan-Kaufmann-Networking/dp/0124477518) to be pretty decent.

but this assumes some level of familiarity with ipv4 protocols etc. for which there are a plethora of resources all over the place.

</comment><comment><USER3> He.net tunnel broker and their ipv6 training is handy. Dn42 might also be useful.</comment>


Gakken EX-System - <AUTHOR> https://en.wikipedia.org/wiki/Gakken_EX-System <comment><AUTHOR> Grand daddy of products like Little Bits. If you like this, also check out other projects from the [http://otonanokagaku.net/english/](http://otonanokagaku.net/english/) series.</comment>


First Bitcoin ATMs of Planned 400 Goes Live in Dubai - <AUTHOR> http://arabcrunch.com/2014/04/video-first-bitcoin-atm-in-the-arab-world-goes-live-in-dubai-with-plans-to-add-400.html

<comment><USER2> »The domain arabcrunch.com has expired.«</comment>


Show HN: Graphene – GraphQL framework for Python - <AUTHOR> http://graphene-python.org/ <comment><USER2> "A GraphQL query is a string interpreted by a server that returns data in a specified format" .... that is the most useless effing description of a thing. That describes basically EVERY non-binary network request.

Please guys, give us an explanation on the front page of what the hell it is (in a meaningful non-generic way) and why we would want to use it.

</comment><comment><USER3> Awesome work Syrus! Super happy to see this library evolve to provide a pythonic wrapper around the core graphql library.

[https://github.com/graphql-python/graphql-core](https://github.com/graphql- python/graphql-core)

<comment><AUTHOR> Thanks! Without your work at graphql-core this would not have been possible! ;)

</comment></comment><comment><USER4> I've been trying to work with this library. So far my conclusion is that it's heavily under-documented and the examples are almost too simple. I'm having lots of trouble understanding errors.

<comment><AUTHOR> I'm sorry to hear that. Documentation is in progress :)

As a side note, a better approach for handling errors is coming to graphene soon

</comment></comment><comment><USER5> One thing I've been curious about with GraphQL and supporting libraries. All the examples I've seen have a hardcoded schema definition, which makes sense because they're just small examples. What if the schema itself is dynamic or stored in a db, with separate schema for every user of an API. Fetching the schema and loading it into the library on every request seems inefficient, although I suppose you could cache it, but I haven't seen any libraries or examples that address that problem.

<comment><USER6> What's an actual use case for this? It sounds pretty obscure, so it's not surprising you haven't seen any examples of it.

<comment><USER5> I was thinking of a user defined schema or ontology for a wiki, allowing the user to also create simple queries for their own data. The example data for a lot of GraphQL tools is Star Wars characters, movies and space-ships. If you look at the Star Wars wiki, it can get a lot more complicated, but it's not something you would want to hard code because new types and relationships are being added all the type. The simplicity of the schemas and queries in GraphQL, and the existence of UI tools out of the box, it seems a lot more approachable than something like WikiData or Semantic Mediawiki.

</comment></comment></comment><comment><USER6> Can resolve functions get executed in parallel or sequentially? Likewise, is there a dataloader equivalent? These things are kind of essential for a performant GraphQL server. I obsessively watch the request waterfall that my graphql-js server executes to make sure it's fully exploiting parallel requests.

<comment><AUTHOR> By default is executed sequentially, however supports parallel resolvers in fields using asyncio, gevent, or async def in Python 3.5+

<comment><USER6> Any chance of an example of how that might look/work?

<comment><AUTHOR> [https://gist.github.com/syrusakbary/65fbce1860ef204ee908](https://gist.github.com/syrusakbary/65fbce1860ef204ee908) ;)

<comment><USER6> Ah nice, i'll have a look into that a bit more. What's the graphql library that's being imported alongside graphene?

Can you see how dataloader might be implemented? The JavaScript version uses magic involving process ticks to aggregate promises within a single run loop, and batch them into a single operation. My knowledge of async in Python isn't deep enough to know whether something similar is possible.

<comment><USER3> Graphene is a more pythonic wrapper ontop of a lower-level library called graphql-core[1], which provides async execution using execution middlewares [2].

As far as how a data-loader is implemented, I have a few experiments doing it with gevent, but nothing prod ready. Essentially you can just use the `loop.run_callback` function to get the "next tick" semantics. I combined this along with gevent's AsyncResult to provide a pythonic coroutine based implementation of FB's datawrapper.

        [1] https://github.com/graphql-python/graphql-core
        [2] https://github.com/graphql-python/graphql-core/tree/master/graphql/core/execution/middlewares

</comment></comment></comment></comment></comment></comment><comment><USER7> One thing I'm wondering about graphql is how does it know when something changed in the db and should be re-queried. For example, I fetch some movies in my front-end webapp and they are cached. Then, later on, I query that movie again but something changed on the server, say the producer had a typo in their name. In that situation, it seems like graphql will only fetch the new fields I'm querying, and not what's already cached.

I understand it's a caching problem which is hard (I know that joke), but I'm wondering specifically how it's handled with a graph query.

The way I've been doing it is using a SQL structured on the front-end and downloading the main table/rows + changes. But graphql seems to be downloading and aggressively caching without keeping track of timestamp.

<comment><USER6> GraphQL doesn't specify anything to do with caching. If you run the same query twice, they'll be fully evaluated each time. You can (and probably should) implement some caching, but it's up to you, and therefore cache invalidation is up to you too.

</comment></comment><comment><USER8> Snappy website. Is that on github as well? I'd like to have a poke around and see how it's made.

<comment><USER9> It's made with Gatsby ([https://github.com/gatsbyjs/gatsby](https://github.com/gatsbyjs/gatsby))

<comment><USER8> Thanks

</comment></comment></comment><comment><USER10> Well this is just splendid!

</comment><comment><USER11> Is there a way to define attributes as a function of other attributes? I poked through the documentation and tried to prototype it but couldn't get it to work. Am I missing something?

<comment><AUTHOR> Hi dwiel, you mean fields inside types? (as class attributes?) If so, putting the attributes inside a function is usually for lazy resolving the fields.

Sometimes the types could be defined after the class definition. In this case, you can use strings for reference field types. Something like:

class User(graphene.ObjectType): friends = graphene.Field('self') # 'User' would work too.

<comment><USER11> Yeah I think that is what I mean. I want one class attribute to be a function of another class attribute. This may be naive but here is an example of what I want to be able to do:

      class User(graphene.ObjectType):
          name = graphene.String()
          initials = graphene.String()

          def resolve_name(self, args, info):
              return user_service.lookup_name(...)

          def resolve_initials(self, args, info):
              # How can I refer to the result of resolve_name above?
              return ''.join(part for part in name.split(' '))

Perhaps I'm not using graphene in the way it was intended to be used?

<comment><AUTHOR> Usually you have a self._root object (in Django, for example this _root is the model instance) and then you use self.instance.name in both resolve_name and resolve_initials.</comment></comment></comment></comment>


Water Harvesting from Air could help water crisis - <AUTHOR> http://perfscience.com/content/2145484-water-harvesting-air-could-help-deal-water-crisis-some-regions-mit <comment><AUTHOR> This is pretty interesting work. Unlike zeolites which are the more common adsorbing material MIT and Berkeley have come up with "metal-organic- frameworks" or MOFs that by their structure can bind to water vapor in the air and release it as liquid water. And this works down to 20 - 30% humidity so over a much more interesting space.

What I don't know is if you could put one of these on your roof for the solar access and circulate air from your building through it. Dehumidifying during the summer to maximize comfort.</comment>


They have really "tightened up" beta 3 for iOS7. Feels much better. - <AUTHOR> http://mashable.com/2013/07/08/ios-7-beta-3/

<comment><USER2> Has anyone tried iOS7 out on older devices? I found iOS7 beta1 to be unusable for everyday use on an iPhone 4 because of the number of bugs, but it operated perfectly on an iPhone 5.

<comment><AUTHOR> I use it on an iPhone 4S and also buggy and some lag.</comment></comment>


Why cleaners get paid more than software developers? - <AUTHOR> I've noticed that if you want to hire someone to clean your house, it's usually 30-35$/hour in the Bay Area, which would equate to about 50-55$/hour if you consider that these people seldom pay taxes on their earnings. That's a lot more than a junior or experienced software developer. This is, of course, true for many other jobs. I don't mean this to disrespect cleaners, plumbers, and the like, of course. I am just really curious to understand why their wages are so different than what we should expect. <comment><USER2> Are you comparing hourly rates to hourly salaries? If so, don't do that. Anyone working on a freelance basis, programmer or cleaner alike, has to charge a hefty premium to pay for self-employment taxes, their own benefits, vacation, non-payment/scheduling/market risk, unbillable time doing rainmaking/business administration, and the like.

If you are doing apples to apples and actually know junior or senior developers with a $50 hourly in the Bay Area, tell them to double their rates _today_. That still doesn't get them to market but hey baby steps like doubling their rates are a good way to get started.

</comment><comment><USER3> We hired a clown for my daughter's first birthday and it was about $100 per hour. She only works weekends though. Remember that these workers (cleaners, clowns, or other on demand workers) don't have a realistic possibility of working 40 hours a week at that rate like a developer does. They will have a few gigs a week, and they spend a lot of time idling or driving.

<comment><USER4> Clowns can probably only do one child's birthday party per day, since they are all around the same time.

</comment></comment><comment><USER5> They don't get paid for travel time or vacation and don't have insurance. If they really are being paid under the table, they also don't have the kind of paper trail that's needed to get a loan for a house or car, or an employment history that would help them find a better job.

But it's mostly the travel time that kills them, I think.

</comment><comment><USER6> _I am just really curious to understand why their wages are so different than what we should expect._

"What we should expect"? What does this even mean? What do _you_ expect someone who provides a service that is in demand charge or make? Why should they make any less than what the market is willing to pay?

<comment><USER7> I don't know for sure, but I imagine OP is curious because cleaning is a relatively unskilled job, and would thus expect higher supply.

<comment><USER6> If this is the case, then it betrays significant naivety on the part of the OP (which is my assertion of the question in general). Good cleaning people/individuals, not just cleaning services, are _not_ easy to find. My household has gone through a handful and at times struggled to keep the good ones.

The same goes for competency in many other jobs, like plumbing and yard work, that may be considered "unskilled" or not. The difference between some of these is that you often hire cleaning or yardwork services on a regular or scheduled basis, so you have a nice feedback loop on determining their value (both monetarily and for keeping them around/finding a new one). Versus services like plumbers, who most people only call when there is a problem (that is, no one keeps a plumber on retainer).

</comment></comment></comment><comment><USER8> If you're hiring from a company or agency, the company or agency may be taking a large cut of that. I know many cleaners round here make around minimum wage; £6.31 (around $10.50) an hour. Whereas hiring from a cleaning company will run you out to around £10-11 an hour (roughly $17)

So, if you knock a third of the price in OP off - and say that's what the company keeps - you'd be looking at more like $20-23 an hour in Bay Area.

Then you've got travel time to count in - say it takes them a half hour to get to your house and a half hour back to base. If they work your house for two hours at a stretch that's another third. So, 40 over 3. That'd get you down to $13 an hour.

And then you've got to ask how many hours they can really fit into the day.

</comment><comment><USER9> Ask HN: why do the entitled elite feel so persecuted?

</comment><comment><USER10> can you explain how $30/hr equates to $50/hr ? As stated in other answers, $50/hr is very low for an independent sw developer in the bay area (and many other places too)

EDIT: Just think on how may real billable hours any of those contractors have in the year

</comment><comment><USER11> Compare annual earnings and SW developers earn lots more... with more job security

</comment><comment><USER12> Because cleaners provide value.</comment>


Pinpoint: open-source APM for JVM - <AUTHOR> https://github.com/naver/pinpoint

<comment><USER2> Curious: how does this differ from Zipkin (which I believe is also a Dapper- alike)?

<comment><USER3> As I understand, to use Zipkin you either need to use Finagle or modify libraries you use. Pinpoint is about "without changing a single line of code".</comment></comment>


Lessons learned from improving Google Code web site performance - <AUTHOR> http://ajaxian.com/archives/lessons-learned-from-improving-google-code-web-site-performance

<comment><AUTHOR> Having recently worked at Yahoo as a front-end engineer, I can say that those rules actually are quite good.

For those who haven't seen it yet, the list referred to (put together by Souders and his performance team) can be found at:

<http://developer.yahoo.com/performance/rules.html></comment>


Show HN: Cixl – a minimal, decently typed scripting language - <AUTHOR> https://github.com/basic-gongfu/cixl <comment><USER2> I enjoy seeing new experimental languages. I really enjoyed working through the README exercises. It's the _perfect_ way to document and teach a language all in one go. The REPL worked great.

First, I love how you've chosen to have functions wait for the correct number of arguments to exist on the stack before executing. I've often pondered how to make Forth-like languages less painful to program - your solution is very clever!

Speaking of clever, I felt very clever indeed when I took your infix equality example:

        | 42 == 42
      [#t]

and it worked when re-ordered as postfix:

        | 42 42 ==
      [#t]

...indicating two things: 1) I actually understood what was happening and 2) the language is coherent.

It's great that basic IO so simple with 'say' and 'ask'. That allows somebody to jump in immediately and start making fun things!

        | let name ask 'Who are you? ';
        say $name

Love the syntax for lambdas: { ... }

What is the rationale for requiring function implementations of the same name to have the same arity? Nevermind! I just answered my own question: because functions need to know how many parameters to seek from the stack.

The literal values for function arguments is awesome - pattern matching!

I don't understand this example demonstrating an "index" for the function parameter types:

        func: baz(x y Int z T0) $x + $y + $z;

I assume 'T0' is the aforementioned index? But I'm struggling to see how it works from this example. Maybe I'm just missing an idiom from some other language?

Bizarro Question: Is there any way you can 'delete' a function in the REPL? For example, to be able to re-use the name 'foo' as a function with a different arity. (It's fine if you can't. The ability would be useless in an actual program.)

You have an error in the README example for "Argument types may be specified in angle brackets...":

        | &+<Int>
      ...
      Error in row 1, col 6:
      Func imp not found

But at least I was able to guess the correct syntax, yay!:

       | &+<Int Int>
      ...
      [Fimp(+ Int Int)]

Dates: I'm confused about the lack of a function called 'year' (singular) since 'day' and 'month' exist. Otherwise, I'm impressed. Dates are damned hard.

Everything about this language seems to be aimed at maximum brevity without sacrificing clarity. I like that a lot. Congratulations for getting this far and I'll definitely be bookmarking this.

I would love to see some longer programs written in Cixl to get a sense for what they look like and how they'd be structured.

How long have you been working on this? How long have you been dreaming about it? And how it is pronounced (SIX-el, KIX-el)?

<comment><AUTHOR> First of all, thanks for taking the time. I'll try to address your questions in the same order, feel free to yell if I miss anything.

'T0' will be substituted for the type of the first parameter (indexing starts from 0) on evaluation, it's the most straight forward way of adding the constraint that two parameters need to be the same type without specifying which type. I should make the example clearer by specifying a less concrete type for x.

Nope, no way right now. I realize it would be nice to have in the REPL but functions use their index in the list of implementations to implement upcall which means I have to figure out another way to do that fast for that to happen.

The reason some fields have plural functions as well is because they have dual semantics. You have both the total number of days and the specific day of month, for example. The year only has one meaning. I guess you could alias 'years' to 'year', but then someone is going to wonder why it's there instead. There's some more material on the reasoning behind dates/times in /devlog.

You pretty much nailed the heuristics I've been using to drive the design. It's been cooking for quite some time but I only started working on the implementation 3 weeks ago or so.

It's slowly getting to the point where it's possible to write more interesting code. I'm waiting for a couple of bigger pieces to fall in to place first, structs are up next.

The C in the name is derived from the host language, which would make that SIX-el.

<comment><USER2> Parameter types: Okay, I'm closer to understanding: "T0" means "Type number 0". But I'm still confused by the example:

        func: baz(x y Int z T0) $x + $y + $z;

z is the same type as the 0th type. I get that now.

But what's confusing me is that it looks as if x's type is unspecified. The 'Int' here belongs to y, right? I'm sure I'll slap my forehead when it's explained to me...

Dates: I see what you mean about there not being a "year of the _" semantically. But when formatting a date, I think of it as "year-month-day", not "years-month-day".

You've made excellent progress in 3 weeks! Keep it up!

<comment><AUTHOR> Ok, now I get where you're going. x and y share the same type, just like 'int x, y' in C. That's what happens when you try to explain two concepts at the same time, my mistake. You have a point with the years, I'll add an alias for now. That is the goal; I'm kind of depending on people chipping in to be able to keep up the pace though, I had a nice runway set up for xmas but now the pressure is on again.

<comment><USER2> Param types: Ah, of course. I had a vague suspicion that was what was going on. But my brain was overloaded. Yeah, one concept per example is ideal. :-)

'Year' alias: excellent! That's one of those "look and feel" things that can make the transition to a new language so much smoother.

I was going to add something about "now comes the hard part after the initial flurry of activity: steadily growing the language without losing the passion." But I didn't want to end on a downer. I'm truly impressed with what you have so far.

<comment><AUTHOR> Agreed, it needs momentum to keep going and that's where I could use some help right now. But it also becomes less of a struggle since I don't have to constantly invent the ground I'm walking on, and since it's now getting to the point where interesting programs are becoming possible. As an example, adding symbol support ([https://github.com/basic- gongfu/cixl#symbols](https://github.com/basic-gongfu/cixl#symbols)) took about 30mins.

</comment></comment></comment></comment></comment></comment><comment><USER3> Sweet, shades of FORTH. Very retro yet timely

<comment><AUTHOR> The principles of Forth sit at the bottom of most languages, though most like to keep that power to themselves. And I've always felt that the Forth language suffered from being so damn dogmatic and protective about the obvious lack of convenience. As an added bonus, it makes a nice contrast to the current trend of crippling languages ever more to protect people from themselves.

</comment></comment><comment><USER4> Cool! Why'd you make it?

<comment><AUTHOR> The fact that no one else was doing it started to feel like an obligation. Cixl is an attempt to find a middle way; a more permissive, less religious, yet modern and convenient approach to solving problems in code. Unlike most other languages; it isn't very interested in reinventing or ruling the world; and doesn't mind being embedded in and extended from other languages.

<comment><USER5> I was with you at first, but then your usage of semicolons went way overboard.

<comment><AUTHOR> Which usage of semicolons are you referring to? The only one I can think of is using them to terminate definitions. I realize it's slightly unorthodox, like most of cixl; but many languages seem to be fine with using semicolons to terminate every single freaking statement, how is this worse?

<comment><USER2> I believe the semicolons in question are in your comment, not in your language.

<comment><AUTHOR> Ah, epic swoosh :) They fill a clear purpose as a step between commas and periods, which allows putting more structure into sentences and helps express meaning more clearly. I've been told that they're more commonly taught and used in Europe than the US, and my first language was Swedish. On the other hand I definitely write more code than otherwise, so that probably explains some of my fascination with punctuation. In the end, languages are tools for accurately conveying meaning; (see, there he goes) and whatever rules don't contribute to that goal may safely be tossed out.

<comment><USER6> Semicolons should be used to join two complete sentences while having a "comma-like" flow (e.g. "I like cake; it tastes good"). I personally tend to use them quite a lot (despite being American). However I generally don't put more than one in a sentence, which I think is somewhat standard. That being said, I don't think it's considered an _error_ , per se, to do so.

<comment><USER7> if you have a list where at least one element has a comma in it you should use the semicolon to separate the elements, like the sibling comment by spiceoflife says, so that would usually produce multiple semicolons in a single sentence.

<comment><USER6> Definitely. I meant that in the usage that I described (as a way to join complete sentences) you generally only see one per sentence.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> "decently typed"?

<comment><AUTHOR> Well, from one angle it's statically typed; names never change their types within a scope. It's also strongly typed, more so than common scripting languages. On the other hand it has a very dynamic, gradual feel to it; to the point where you almost don't notice. That and the fact that using the word 'decent' seem to upset a lot of people, which is an indicator of much needed mental debugging.</comment></comment>


Postmates NYC treats their deliverymen like trash - <AUTHOR> http://peterk.co/postmates-nyc-treats-their-deliverymen-like-trash/

<comment><USER4> The headline is significantly linkbaity. Courier job applicant was told to arrive 5-10 mins early for interview, arrived 4 mins early and was unapologetically told to go to the next session in 30 mins.

<comment><USER5> The linked article does not indicate that the applicant was told to arrive 5-10 minutes early, and it explicitly says that they were to reschedule for _another day_ , not the next session in 30 minutes.

<comment><USER6> The linked article absolutely shows that the applicant was told to arrive 5-10 minutes early, in this image embedded in the article: [http://peterk.co/content/images/2014/Jul/email.png](http://peterk.co/content/images/2014/Jul/email.png)

"Late arrivals will not be admitted, be sure to arrive 5-10 minutes early."

<comment><USER5> Indeed; thank you for pointing that out.

</comment></comment></comment></comment><comment><USER5> If I were a delivery company then I might decide that I didn't want to hire the people that merely show up _on time_ , or even the people that show up a few minutes early. I want the people who go out of their way to show up a lot, lot earlier than they're expected to.

Even if that wasn't true, though, I suspect that I would not be interested in hiring the guy who didn't show up early the _second time_.

</comment><comment><USER7> It depends on your understanding of the invitation. I agree that this is contentious, but I could see how Postmates would argue that the invitation _only incidentally_ states that the orientation begins at 6:00pm. The time you are requested to arrive is 5-10 minutes before that.

This isn't about the forces of the courier market (although I'm sure there's a fascinating market in NYC). This is about breeding a culture where participants in that culture have a sense of punctuality that supersedes all else. I wouldn't have been much more surprised if showing up _too early_ would have gotten the author turned away. It's easy to show up 45 minutes early to something if you blow out everything leading up to that appointment, which you can do because you see it as a one-off. Being on time for every appointment you make takes more diligence. It takes cutting people (even yourself) off from an arguably more interesting diversion.

I wouldn't lose much sleep over this story; the author describes another courier who's been in this situation before. He clearly failed and was given a second chance. This isn't one of those "fail once and you're banished for life" kinds of things. Postmates will probably keep slamming the door in these people's faces until they show up 5-10 minutes early (ie they learn the lesson Postmates is trying to teach).

Or, you know, they find another job, where this kind of nitpicking isn't normal.

</comment><comment><USER8> This reminds me of Van Halen and their "no brown M&M's clause"

[http://www.entrepreneur.com/article/232420](http://www.entrepreneur.com/article/232420)

To sum it up, Van Halen would put in their contracts that they are to be served M&M's with no brown ones present. If they found that there was indeed brown ones, they would not play because they felt the gig was not paying attention to detail.

Seems to me that if you are applying for a job that basically is all about time (delivery in 30 mins) then it is a great litmus test to not let people who are late to the orientation have a job. These people obviously did not care enough for the job interview- It stands to reason they likely wont care to be extra fast once/if hired.

<comment><USER9> They weren't late, though? If they wanted people to show up 5-10 minutes early, make the training at 5:50 or 5:55. Don't say 6 and really mean earlier.

<comment><USER10> Exactly. "Early" is generally understood to mean before the "time in question" \-- the time that serves as the frame of reference when an engagement will occur.

Asking participants to arrive early would, at least to me, strike as a caveat to those who might otherwise arrive late -- but not at the "time in question".

On time is on time, which is AT the stated time. Not before, not after.

</comment></comment></comment><comment><USER11> Well, if it's a courier service that hopes to distinguish itself by being unerringly on-time...I guess this is a good way to enforce such a mentality from the get-go. Kind of like Van Halen being a stickler about brown M&M's, except that showing up on-time for the interview is directly related to the services at hand.

(If the OP arrived at 5:55, then unless he knocked on the dot, he was technically later than the "5-10 minutes early" notice. OTOH, it seems to be a common convention that when a time is set, i.e. 6:00PM, that is the actual drop-dead time)

</comment><comment><USER12> This is unfortunate, but I have to wonder why 557.png (the image of the phone in this post) was last edited by Photoshop. :tinfoil:

      $ extract downloads/557.png
      Keywords for file downloads/557.png:
      mimetype - image/png
      image dimensions - <USER3>
      produced by software - Adobe ImageReady
      comment -
      created by software - Adobe Photoshop CS6 Macintosh
      mimetype - image/png
      video dimensions - <USER3>
      pixel aspect ratio - 1/1

<comment><AUTHOR> Here's the original. I didn't like the way it looked.

[https://dl.dropboxusercontent.com/u/10272371/image.jpeg](https://dl.dropboxusercontent.com/u/10272371/image.jpeg)</comment></comment>


Designing a New Electronic Medical Record - <AUTHOR> http://techcrunch.com/2012/11/13/redesign-electronic-medical-record/ <comment><USER2> Since this is going on github, why not expand it a bit to allow people to submit things like stylesheets for different types of media/screen sizes or even JavaScript code for formatting the CCD XML format or maybe doing different internationalization formats? Anyway the next step after the design is for everyone to try to code the same design, so might as well at least be open to that part of it.

I don't really have time but if I wanted my submission to be considered I would try to cheat that way by creating working JavaScript code that processed XML and spit out different formatted versions for phones vs. larger screens and also different languages.

<comment><USER3> We're having a quick discussion tomorrow - we currently have .HTML. We are going to add .CSS and .JS.

Anything else we are missing?

<comment><USER4> Please excuse the off-topic rant: It's my mission right now to change something a little different about EMR design. You're looking at the output. That's wonderful and I am really happy about it. We also need to fix input. EMR/EHR interfaces are mostly terrible; that has significant negative consequences for both patients and providers.

You're looking for an output design that is effective as a physical document. Please consider a follow-up challenge for EMR input UI/UX.

</comment></comment></comment><comment><USER5> Not at all surprised the VA is involved in something like this -- they are one of the best large EMR/EHR deployments in government and a great system by commercial standards too. They seem to be a decade or two ahead of the active duty military medical system on this. (VistA vs. AHLTA).

There's a new effort to merge both systems onto a new one called OSEHRA (Open Source ...), which should be interesting, but I hope it looks more like VistA and less like AHLTA. I suspect MEDCOM is more powerful politically than the VA, though.

</comment><comment><USER6> Please forgive the semi-shameless plug, but if you're into this we're a team that thinks about this full time, and we're hiring! We're a small startup rethinking the way patients and their caregivers interact with data. Check us out at <http://elationemr.com>

<comment><USER7> i'm actually interested in this for different reasons.

ps. got an api?

[edit] forgot to read the profile

<comment><USER6> Plans for one! My contact info is in my profile. I'd love to get your input on what you'd like to see in an API.

</comment></comment></comment><comment><USER8> looked up a bit for existing records, and required fields and there is no placeholder for genetics data.

Maybe I'm wrong, or I'm overseeing something but I think that "Patient has inherited malicious BRCA1 mutation" information should be IN patients medical record.

<comment><USER3> we're using the standard set of fields that all EMRs will be required to produce. you can def submit a design that includes those AND how you would represent genetics data.

<comment><USER9> You are using the very same set of fields that all EMR will be required to use by the government?

So if I understand correctly, you are basically doing what you have been told to do? Good for you - call that corporate software development, but not design, creation, startup of whatever.

Regarding your reply, it's not about the "right" way to represent genetics data, but having any way at all to input that - which seems "absent" in the current model, but maybe I haven't dug deep enough.

Also, $50k for the design that will be used for 6 millions potential clients? Hmm it's like 0.0083 cent per client. If you make a piece of software that successful, it's like selling it for 1 cent apiece on the applestore.

So I guess I'll pass on this one.

BTW there is something funny in the article: "You might even end up working with big EMR startups like Practice Fusion."

Well, yey :-/

I'd rather like to _create_ a new EMR company - the one that'll put the others out of business :-)

Good luck to all entrants anyway.

<comment><USER5> EMRs and all related systems (PACS/DICOM in radiology which is what I know best, Lab Info Systems, etc.) all interoperate by open (but usually fairly stupid) standards like HL7. They are basically the worst of OSI, ASN.1, etc. all rolled into one. But, they're standards, and there is a huge amount of workflow deployed around them -- $5-10mm imaging devices that speak these protocols, entire labs, huge numbers of doctors trained around them, etc.

There's no way a records presentation system would be useful if it didn't take standards like HL7, ICD9 codes, etc. on the input. There has been a huge effort over the past few years to get small practices onto EHR/EMR (for a variety of reasons...patient care quality and billing/admin cost savings), so anything which didn't work with those standards would be a huge step backward on those efforts as well.

The nice thing is most of these ugly protocols have decent libraries available (some open source, some commercial), so you can build a HIS/EHR/EMR/PACS/LIS/etc. with general software engineering talent and a limited amount of specialty knowledge, but you really do need some experience in the clinical environment (at least as a tech or doing tech support), I think, to build a credible overall system. And to actuall sell larger systems, an MD on the team is really helpful (at least for PACS, a rad or ortho).

That said, being able to 'pretty print' a medical record (on paper, or maybe some kind of interactive format) for patient use or portability outside the system doesn't require a huge amount of clinical knowledge, but it's not enough to replace an EHR.

</comment></comment></comment></comment><comment><USER10> They're dedicating a whole $25k for this project. As a prize? Surely the government should be engaging a good UX design shop and spending a reasonable sum of money for a complete design and implementation cycle including user testing.

</comment><comment><USER11> This is right up my freakin' alley. Awesome.

<comment><USER12> Oh man, you're the guy that did the cool site face lifts :).

</comment></comment><comment><USER7> when you're saying design, you don't mean the actually restructuring, but just the way it's represented correct? so whatever is in the txt stays in the txt

</comment><comment><USER13> great. Just signed up.</comment>


Fiverr case study: Growing your Internet empire for $5 - <AUTHOR> http://www.viperchill.com/fiverr-case-study/

<comment><USER2> WRT legality, fake testimonials are illegal in Europe (astroturfing and what have you), there was specific legislation to this effect called the Unfair Commercial Practices directive, eg [http://www.theregister.co.uk/2009/12/08/eu_consumer_protecti...](http://www.theregister.co.uk/2009/12/08/eu_consumer_protection_laws/) which in turn links to [http://ec.europa.eu/consumers/rights/docs/Guidance_UCP_Direc...](http://ec.europa.eu/consumers/rights/docs/Guidance_UCP_Directive_en.pdf) and <http://www.out-law.com/default.aspx?page=9050>.

</comment><comment><USER3> Finally created an account here, since I've been on the homepage a few times.

Thanks for the submission, Oscar!</comment>


The Types of People I Wanna Work With At My Startup - <AUTHOR> http://www.founderdiaries.com/2011/07/the-types-of-people-i-wanna-work-with-at-my-startup/

<comment><USER2> YOU should work for ME. I'll share the credit, promise.

</comment><comment><USER3> I like the way you think

<comment><AUTHOR> Thanks. I appreciate that.</comment></comment>


Show HN: IP Sidekick, geolocation API with additional metadata - <AUTHOR> https://ipsidekick.com <comment><USER2> Very cool.

I think 1 request per minute is way too low for any sort of usage, though. That made me dismiss the project immediately, ex. I won't even try it because I would never be able to use it in production anyway.

If I was you, I wouldn't offer a free tier at all if you can't handle a standard load (30,000/day+), and just offer a 14-day trial.

I would base tiers on the number of requests with a minimum of 30,000/day, but most importantly on the amount of data you receive: tier 1 only the country, tier 2 GMT offset and everything else.

I don't think it's a product that needs support, it's easy and once I set it up I'll never touch it again, so I would not pay premium for support.

Good luck, congrats on releasing!

<comment><AUTHOR> Good point. Thanks for the feedback.

</comment></comment><comment><AUTHOR> One thing I want to do with IP Sidekick is to include additional information about the location it resolves to. For now, the result includes the national public holiday of the country it resolves to. This should work for the next few hours of Aug 17:

      $ curl https://ipsidekick.com/22.214.171.124
      {
         "countryCode" : "ID",
         "country" : "Indonesia",
         "holiday" : "Independence Day",
         "timeZoneName" : "Asia/Jakarta",
         "ip" : "22.214.171.124",
         "gmtOffset" : "GMT+7:00"
      }

I'm planning to add more data types. Welcome any feedback.

</comment><comment><USER3> Cool stuff. Adding lat/lng to the dataset as well would be nice as well. Alternatively a lat/lng that can be associated to the country can be an idea. For example by using something like [https://developers.google.com/public- data/docs/canonical/cou...](https://developers.google.com/public- data/docs/canonical/countries_csv)

<comment><AUTHOR> Yes, I plan to include a lat/long somewhere down the road when I can get it to be more accurate.

Slightly related, what can someone do with the lat/long in that data set? (since there's only a canonical lat/long for each country)

<comment><USER3> Great! Lat/lng would of course be best implemented if kind of accurate. Ipinfo.io seems to do this quite well. I would happily use this to detect if somebody tries to spoof the info provided from window.gelocation.get/watch, whic is pretty sweet to utilize for anything that relates to maps. :)

</comment></comment></comment><comment><USER4> What is the advantage of this over something like MaxMind or NetAcuity? Thanks!

<comment><AUTHOR> There're 2 ways to access a geolocation service:

1) Secure your own database(s) and offer it as an internal library/API 2) Use a hosted version.

IP Sidekick offers the latter option. The advantage over running your own version is more predictable Opex, both money and effort — if operate your own, you'd have to find source(s), make sure they are updated and make sure the services remain up.

With IP Sidekick, you pay a certain amount monthly, and it's a relatively simple API to use, so there's 0 maintenance and ongoing effort.

Another advantage is I'm supplementing additional data other than what other geolocation services offer. eg. the results now include the public holiday for that day in that country. Planning to add more.</comment></comment>


Ask HN: What do you wish Twitter could do? Free app ideas. - <AUTHOR>

I posted a few app ideas on Twitter this afternoon, but I thought I would pass them along to the hacker community to see if anyone would actually take interest and build them.
I would like to open the topic to anyone who would like to freely share their Twitter app ideas.
What do you wish Twitter could do?
See my two ideas below: <comment><AUTHOR> _Idea 1)_ Option to collapse tweets containing replies, mentions or retweets when viewing an individuals profile.

I think this would be great for quickly seeing what a profile is really all about. Remove the extraneous content and get down to the individual.

 _Idea 2)_ Enable filtering, browsing and sorting of public timelines by source client.

Would be good for spam control and discovery. For example, one could quickly pick out which profiles are posting junk from twitterfeed or browse tweets from a specific source website of interest.

<http://twitter.com/DotSauce></comment>


Automatically Lock Your Mac When You Walk Away - <AUTHOR> http://superbcrew.com/sesame-locks-your-mac-automatically-when-you-walk-away/

<comment><USER2> There is also software you can use that monitors for Bluetooth devices and can perform actions based on them. Makes it very easy to roll your own piece of software and not have to trust a 3rd party device: [http://www.macupdate.com/app/mac/23858/proximity](http://www.macupdate.com/app/mac/23858/proximity)

I am not entirely sure why you would need a dongle over a phone. Perhaps the the creator can chime in here and explain to us why we would chose a hardware device over what we already have in our pocket?

<comment><AUTHOR> If we get an answer to your question, it will be forwarded here.

</comment></comment><comment><USER3> Great idea, but I don't want another fob. If it could be made to work with a phone then this would be perfect.

<comment><USER4> [http://www.knocktounlock.com/](http://www.knocktounlock.com/) comes to mind.

Edit: Sorry, it appears Knock can't actually lock your Mac. Airlock promises that functionality though - so that might be of interest to you.

<comment><AUTHOR> Thanks for contributing with that link :)</comment></comment></comment>


Tor Is For Everyone: Why You Should Use Tor - <AUTHOR> https://www.eff.org/deeplinks/2014/06/why-you-should-use-tor <comment><USER2> _" Perhaps you end up with an embarrassing medical condition and you want to search for information about it but you don't want Google and every advertiser to know about your bodily functions. Tor can help you keep that information private."_

Using DuckDuckGo instead of Google will also protect your privacy, without the performance degradation incurred by Tor.

 _" Tor can also help prevent online tracking more generally as well. Proper use of Tor can circumvent most third party trackers that governments and corporations can use to track your browsing habits and send you obnoxious intrusive advertisements."_

Installing a few browser add-ons (AdBlock Edge, RequestPolicy, NoScript, Cookie Monster, BetterPrivacy, etc.) can block most tracking and ads.</comment>


Microsoft exec bans company from pulling any dumb April Fools' pranks - <AUTHOR> https://arstechnica.com/gadgets/2019/03/microsoft-exec-bans-company-from-pulling-any-dumb-april-fools-pranks/ <comment><USER2> I wish more companies would do this. April 1st on the internet is a pain.</comment>


Almost a quarter of Android owners are planning to switch to iPhone - <AUTHOR> https://bgr.com/2018/10/10/iphone-vs-android-switchers-18-percent-next-device/ <comment><USER2> And from the same chart, about a quarter of iPhone owners are planning to switch to Android.</comment>


How does the top grossing iOS game make its money? - <AUTHOR> http://iteratingfun.com/post/30438564732/top-grossing-rage-of-bahamut-analysis

<comment><USER2> So the top grossing game doesn't actually have any gameplay. Does anyone else find this strange?</comment>


Silicon Valley Goes from Libertarian to Keynesian - <AUTHOR> http://blogs.wsj.com/digits/2009/04/07/silicon-valley-goes-from-libertarian-to-keynesian/

<comment><USER2> Better title: _Silicon Valley Goes from Libertarian to Corrupt_

The full quote: "Silicon Valley used to be libertarian, but we are all Keynesians now...Everybody is trying to stick their snouts in the flow of pork."

This isn't Keynesian economics, this is just corruption and opportunism.

<comment><USER3> Agreed [1]. But the two notions are inseparable really. To the extent that Keynesian economics demands that the government get involved at every turn to 'fix' things, the only possible outcome is corruption, corporatism, and (if you dare to use the word) fascism.

[1] though I prefer to hold the politicians responsible

<comment><USER4> But Keynesian economics doesn't demand anything of the sort. It suggests that, in a recessive economy, when monetary policy reaches its zero lower bound, temporary fiscal stimulus can make up the output gap.

<comment><USER3> We must not be speaking the same language. I read " _monetary policy_ " and " _fiscal stimulus_ " as " _the government getting involved with the markets._ "

Now I would hate to conflate Keynesian economics with any one proponent, but John Maynard Keynes himself once half-seriously proposed that the government bury dollar bills in old mines so that the economy could be _stimulated_ by people working to dig them up.

<comment><USER4> Right. It's the 'at every turn' in your original post, rather than 'under certain very specific conditions,' that I was objecting to.

</comment></comment></comment></comment></comment><comment><USER5> I'm not sure it's hypocritical to go after this money. After all, paying taxes is not a choice. So you could say: I'm opposed to a plan where the government taxes and borrows to fund startups - but if this happens regardless of how I feel about it, I may as well get the benefit I can.

<comment><USER6> Right, tell that to the shop owners where you buy. Tell that to the small companies who won't make it in due to lack of connections.

If Google wants to foot the bill for Youtube, fine. But taxpayer money shouldn't be used in a gamble, IMHO. That's money collected from other businesses who pay.

</comment></comment><comment><USER7> I don't think there's any fundamental change here. Silicon Valley's traditional libertarian position is largely based on the fact that regulation of new technology tends to be Bad and Wrong. If there's money flowing, people in the tech industry will want to get a share as much as anybody else. In both cases, it's simple self-interest.

</comment><comment><USER6> As an outsider, this is an obvious attack from Wall St. to Silicon Valley. Wall St. is getting bailouts about 100 times bigger without almost anything to show for them. Silicon Valley has no credit to pay for its growth.

I hope Silicon Valley wakes up and realizes it doesn't need Wall St. or the help of the US government. It would be great if something like a broad cyber- scrip currency shows up. Or some other way. I'm sure California will join in as they are insolvent already anyway, making it really scale.

</comment><comment><USER8> Apparently by "Silicon Valley", the Wall Street Journal means VC's.

</comment><comment><USER9> Technology is a legitimate engine of economic prosperity. I'm happy to see funding flow to this sector. Its just a shame that the government has inserted itself as a middle man, and a generally inefficient one at that.</comment>


'Pay it forward' pays off - <AUTHOR> http://www.eurekalert.org/pub_releases/2010-03/uoc--if030510.php

<comment><USER2> It's interesting how truth can be revealed through empirical research and also art.

As someone who started out as purely a math, physics, hyper-rationalist type of person, I used to think truth could only be found in empirical studies like this one.

However, the results of this study became apparent to me several years ago, largely due to watching the film Princess Mononoke. Since then, I've lived a happier more fulfilling life.

@nazgulnarsil: I think both (the study and the film) have extremely applicable conclusions that make them worthwhile to pay attention to: Since there is a multiplier effect on all of your actions, don't do bad things and do do good things. Or more simply, Karma exists. Just because the conclusion is simple, doesn't mean it can't have powerful effects.

<comment><USER3> "Karma exists"

That is definitely true. I don't think there anything magical about it though. When you damage somebody, that person may kick you back. Even if they don't, if you keep acting that way eventually somebody will. Doing wrong also has a bad effect on your self esteem. That's got to affect you. There is also the issue of your reputation. Acting wrongly will definitely damage it. The same applies for doing good.

</comment></comment><comment><USER4> what exactly does this study tell us that we didn't know before?

edit: I'm going to assume down votes without a response don't have anything more solid than the article's nebulous bullshit.

<comment><USER5> Are you really going to say you "knew" this rather than perhaps assumed it? The test may not be perfect but it is some sort of proof beyond anecdotal evidence.

Also I'd say down votes are because you made a accusatory statement without any sort of thought behind it.

<comment><USER4> I read the article, saw no conclusion that was novel or applicable, saw the 18 upvotes...

<comment><USER6> You're doing your science wrong.

The upvotes are because the conclusion is novel.

<comment><USER4> let me rephrase: what quantitative predictions can I make using the results of this study?

<comment><USER6> A relevant quantitative prediction would be of this form:

When participants are randomly divided into two experimental conditions, "donation" and "no-donation", participants in the donation condition donate significantly more than no-donation participants. The amount of donation is the dependent variable - it's the way you measure, quantitatively, that the experimental manipulation caused the participants to behave differently.

EDIT: I forgot the prediction part. So, I predict that this "donation effect" generalizes. If I ran a charity and I wanted to increase donations, then I might predict that if I gave something to potential donors, they would donate more when they were given the chance. I'd measure the outcome in terms of dollars donated.

<comment><USER4> this study explicitly controls for reciprocity effects though.</comment></comment></comment></comment></comment></comment></comment>


Samsung Defection from ARM to RISC-V - <AUTHOR> http://www.electronicsweekly.com/blogs/mannerisms/dilemmas/samsung-defection-arm-risc-v-2016-11/ <comment><USER2> Probably they will use RISC-V for small devices where there are no royalties involved (you must pay a small sum to ARM holdings PLC. for ARM devices).

But I guess Samsung will be a long-term user of ARM processors because of Android.</comment>


Are Git and Mercurial Anti-Agile? - <AUTHOR> http://www.grahamlea.com/2013/11/git-mercurial-anti-agile-continuous-integration/

<comment><USER2> DCVS is good because you can have tracked local changes. Sometimes you are doing a larger change to the software that takes a while and may require some thought, without stacking up hundreds of minor changes sitting in the source folder uncomitted that get applied simultaneously (a la CVS and SVN) and merges happen into that working folder, with no reversability.

You could make the same argument all the way down to requiring that every single line changed is committed at the instant of writing (otherwise they are hiding their code!).

Without tools like Git and Mercurial, people are still doing exactly the same behaviour, just it isn't being source controlled.

</comment><comment><USER3> Something about this seems orthogonal to me. There's nothing about dvcs itself that implies a lack of fluidity in a codebase, is there?

In a rough attempt to get down to first principles, CI means you need to be able to deploy a codebase at anytime. Feature development means that codebase needs to be ever-changing. Successful deployment means the codebase needs to be at a level of guaranteed quality.

This means that the quality of a "change" needs to be guaranteed to some level _before_ it is merged to the deployment branch.

So right there, that implies the need for "changes" to be developed and quality-checked somewhere other than on the deployment branch.

I think that takes us pretty inexorably to the practice of branching the codebase, developing there, quality-checking there, and also merging _from_ the deployment branch into the feature branch as the deployment branch changes.

So what's left is qualifying what is meant by "change". Is it one feature? A story? A functionality layer? That can be harder to decide on. Agile says it should be a ui-focused story, but sometimes stories are epics (like a simple form submission that somehow implies several SOA services be set up to make it work). So I think that means we can still do functional dependency analysis and shrink stories down to smaller functional steps, sometimes.

The key is to keep stories/features small enough so that they aren't in progress for weeks at a time. When you're working on a feature and then are faced with a _massive_ merge _from_ the deployment branch, that's where things get messed up.

</comment><comment><USER4> " Dave Farley (co-author of 'Continuous Delivery') describes Continuous Integration as the process of automatically creating a potential release candidate after every commit. Are feature branches going to help you do that? "

I think so, if you build a feature outside of the main branch, test it fully and prepare it correctly, the commit to the main branch will be a potential release candidate. You can't say that if you are integrating a potentially broken feature into the main branch everyday.

I've never seen a git crew work in isolation before. If two teams or people are working on two different modules that need to work together they are still integrating between themselves on a regular basis. It's just that those changes do not get pushed up to main until they are finished.

</comment><comment><USER5> The issue is that the C in CI is a convenient fiction. Someone on your team is always going to be changing the code, which means that they will have it, at some point, in a state that fails validation. Requiring that they get it to a point where it's fully passing is fine, but in many cases that just means a longer time before checkins.

DVCSes, on the other hand, bring to the surface and keep in the record that the code is always branched to some degree. It's not that it's incompatible, it's that it's giving more granular information than the CI process can work with or needs.

</comment><comment><USER6> I strongly agree with the fundamental point that the author is making.

However, there are nuances. A lot of this depends on the type of development that you are doing.

For example, most of my day-to-day work is done in very small increments. Minor bug-fixes, incremental classifier performance improvements, parameter changes, and so on. Only rarely will I work on a feature that is so significant in its' impact that the work-in-progress causes the branch to spend several days in a broken / non-working state. I also work in fairly small teams, so the rate of pushes to Gerrit is quite low: only around a dozen pushes per day or so. This means that integration is pretty easy, and that our CI server gives us value & helps with our quality gating. We can follow a single-branch development path with little to no pain, and because both our software and the division of labour in the team are fairly well organised, conflicts very very seldom occur when merging (even when using suboptimal tools to perform the merges).

This state of affairs probably does not hold for all developers, but it holds for me, and for most of the people that I work with. As a result, we can happily work without feature branches (most of the time), and lean on the CI process to keep ourselves in sync & to measure the performance of our classifiers & other algorithms.

Now, don't get me wrong, I think that Git is great. I am the nominated Git expert in my team, and spend a lot of time helping other team members navigate the nuances of using Git with Gerrit, but for most people it is yet another tool to learn in an already over-complex development environment. Git gives us the flexibility to do what we need to in the environment that we have; but it is anything but effortless and transparent, which is what it really needs to be.

Software development is about developing software. Making systems that work. Not wrangling branches in Git.

My ideal tool would be the bastard son of Git and a real-time collaborative editor. My unit tests should be able to report when my local working copy is in a good state. Likewise, my unit tests should be able to report whether a merge or rebase has succeeded or failed. Why can I not then fully automate the process of integrating my work with that of my colleagues? Indeed, my work should be integrated & shared whenever the following two conditions are met: 1) My unit tests pass on my local working copy, and 2) My unit tests pass on the fully integrated copy. These are the same criteria that I would use when doing the process manually ... so why do it manually? Why not automate it? Triggered by every save, the resulting process would create the appearance of an almost-real-time collaborative working environment, opening up the possibility for new forms of close collaboration and team-working that are simply not possible with current tools. A source file would be a shared document that updates almost in real time. (If it is only comments that are being edited, then there is no reason why the updating could not actually be in real time). This means that you could discuss a change with a colleague, IRC-style, in the comments of a source document, and make the change in the source file _at the same time_ , keeping a record not only of the logic change, but also of the reasoning that led to it. (OK, this might cause too much noise, but with comment-folding, that might not matter too much).

Having said all of that, branches are still useful, as are commit messages, so we would still want something like Git to keep a record of significant changes, and to isolate incompatible works-in-progress in separate branches; but there is no reason why we cannot separate out the "integration" use case and the "collaboration" use case from the "version control" and "record keeping" use cases.

</comment><comment><USER7> I strongly disagree with this whole notion, I think in fact that the opposite is true.

With Git you can make sure that you merge when your story is actually done, with Subversion you need to worry about other's changes if you commit all the time.

With feature branches you only have to worry about integration into the mainline once, when your task is complete, which makes continuous integration far easier than with the SVN model.

If we would need to call a VCS anti-agile, I think that would actually be SVN, which makes continuos delivery a lot harder.

</comment><comment><USER6> Git and Mercurial make CI harder. CI is an important part of the discipline needed to make Agile work. (CI is an important part of making anything work). You can still do CI with Git and Mercurial. (If I can, anyone can). But you need to fight the tools (a little bit). Fortunately, Git is super-flexible, and you can make it do (almost) anything.

</comment><comment><USER8> We use gitflow and it works well for us. We run tests before integrating. git isn't anti-agile at all. I don't understand the article.</comment>


As Trade War Escalates, Tech Companies Flee Mainland China - <AUTHOR> https://fortune.com/2019/08/13/trade-war-china-tech-taiwan-manufacturing/ <comment><USER2> With so much of this production moving to Taiwan, I have to assume a nasty side-effect of this trade war will be Beijing advancing its timetable to take the island by any means necessary, especially since economic downturns often cause authoritarian governments to use nationalist bread-and-circuses (which "taking back" Taiwan definitely would be) as a distraction.

<comment><USER3> Not so sure yet. I doubt Beijing will try at this time. Moreover I feel it's good for China to force it to rely on internal consumption instead of exports at a faster pace. The problem is changing the mindset will take long, so not yet sure how will it work. One friend moving a production to Vietnam faced a lot of challenges, costs escalated and it cannot fulfill the demands yet. It will take 10 or more years for Vietnam to reach China's skilled workforce capabilities for production.

Also move to Vietnam is happening since 2008, like Samsung and Lotte moved there due to shrinking market in China and missile shield row between China and USA.

Moving productom to Taiwan and South Korea will increase the costs with more upfront capital expenditure and still they won't be able to fulfill the demands. At present there is a attacks on global trade which will impact everyone. You can see the signs already with conflict between Japan and South Korea. Germany, Singapore facing technical recession and USA went back to loose monetary policy and reduced interest rate.

</comment></comment><comment><USER4> Somebody made Taiwan/S.Korea/Vietnam Great Again! But "MTSKVGA!" is not catchy on a cap.</comment>