Ask HN: What are your 2014 Predictions? - <AUTHOR> What are your predictions for the world in general for 2014? <comment><USER2> 1\. Apple won't release a new product category (like an iWatch). But they'll do just fine by having the best industrial design and hardware.

2\. Bitcoin and other digital currencies will take the world by storm.

3\. Google will make a major improvement in AI with Google Now.

4\. There will be another SnapChat or Instagram like product that'll make communicating with phones fun in a new way.

5\. The internet and social networks will continue to cause social upheaval in authoritarian nations.

6\. Facebook will add auto-playing video commercials and people will hate them.

7\. Low-end cameras will start dying off rapidly. There will only be phones and high-end professional cameras in the future.

8\. As technology automates more and more things, it'll contribute to unemployment of people who are unprepared to be knowledge workers.

9\. People will start taking MOOCs a lot more seriously as an alternative to higher education, especially in meritocratic fields. Not a big change in 2014, but it'll be more obvious.

10\. TV will start feeling like print media in the face of the internet, it's inevitable.

</comment><comment><USER3> * There will be a major regulatory crackdown on Bitcoin in most countries due to money laundering concerns.

* It will become apparent that Apple's history is repeating itself. As mobile becomes commoditized, they will refuse to lower their prices and become a luxury niche player sliding slowly into irrelevance.

* Google will announce Go (golang) for Android.

* The U.S enonomy will grow fast at the start of the year and treasury yields will spike making the stock market and ultimately the economy crash. Next recession starting Q4 2014.

</comment><comment><USER4> In-app purchases will be absolutely raping user's minds and wallets.

Virtual reality will make a strong come back. Steambox + Oculus combo will be quite popular among hardcore gamers.

There will be a growing disappointment in HTML5 not being able to provide proper mobile experience.

HTML5 spec will not be stabilized.

</comment><comment><USER5> By the end of 2014, very few people have a smart watch.

Bitcoin continues to become more popular. Many physical places begin supporting the currency.

The UK government will start pushing for the porn block to be enforced for existing subscribers (not just new ones, as is the case now).

Low-end cameras are replaced by smartphones.

Linux's marketshare increases but remains relatively low. Steam OS has varying degrees of success. It's lack of mainstream professional games hinders adoption.

<comment><USER6> Low-end cameras are replaced by smartphones has already happened, surely?

<comment><USER5> Some people still have cameras but I suspect they will be off the shelves by the end of 2014.

</comment></comment></comment><comment><USER7> 1\. Litecoin to the moon!

2\. This guy is going to be very wrong... [http://www.businessinsider.com/williams-bitcoin- meltdown-10-...](http://www.businessinsider.com/williams-bitcoin- meltdown-10-2013-12) _> > I predict that Bitcoin will trade for under $10 a share by the first half of 2014, single digit pricing reflecting its option value as a pure commodity play. Miners/speculators will be best served to acknowledge the meltdown has begun, act quickly and take fleeting profit off the table._

....or, if he turns out to be right I will buy $5,000 worth of BTC and be a millionaire by EOY 2014 when the price spikes back up.

3\. Snowden leaks will reveal something super-duper-crazy-out-there; e.g. AIDS invented in a lab or 9/11 really was an inside-job. Something almost beyond believable like that.

4\. Blackberry will shutdown, be acquired or start making enterprise security phones. i.e., Blackberry will be to the mobile phone market what box.com is to the file-sharing services market.

<comment><USER8> Regarding #3, I'm pretty sure Snowden only had clearance for NSA-related materials. Those examples would be intelligence outside of the NSA's area.

</comment></comment><comment><USER9> Moore's Law remains halted. Nobody figures out how graphene will help. Programmers continue (see below) to move away from Java in favour of C to claw back some performance.

* See [http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

<comment><USER10> I doubt so. Programmers are more likely to adopt relatively new programming languages which are easier to learn and provide and produce software that is relatively fast, while not being as optimized as a C/C++ program. Java probably still has a long life ahead.

</comment></comment><comment><USER11> \- No major changes in governments monitoring their citizens. Lots of intermittent hoopla. The story slowly fades.

\- In the U.S., the Republicans, which have been mostly given up for dead, somehow make a comeback. Mainly because voters have no other choices

\- Portable hardware continues to amaze. Tablets, music players, and cell phones are just the beginning

\- More startup incubators kick off. At some point, folks realize that while there's not going to be a new SV any time soon, there are going to be a hundred 5% versions in the next few years

\- Everybody agrees that Facebook loses it's mojo but has enough momentum that it remains a viable concern -- and will for some time into the future

\- The EU continues to skate just ahead of monetary crisis. As the end of the cash infusion appears, investors get nervous. Very nervous.

\- Economists continue to argue using calculus, making the rest of us sad that we ever taught calculus to those guys

\- Saudi Arabia seriously begins a nuclear program (probably covertly)

\- Israel does not strike Iran

\- Japan makes it's first steps towards becoming a true regional military power again

\- China makes another hamfisted attempt at regional hegemony, continuing to alarm the neighbors

\- The politicization of science continues unabated

\- Open Science gains a little ground, but not much

\- Christmas Tree machines still remain a distant possibility. 3D printing doesn't make huge gains

\- Every week we're told of a new amazing discovery in energy -- batteries, solar cells, air storage, thorium reactors, fusion by means of tea kettles. It's always tantalizing, we always say the same things about it on HN -- and it always never amounts to much

\- Some major discoveries about cancer are made, probably along the lines of immune system modification as a treatment

Okay, that's all I got. Wonder how many I'll hit on?

</comment><comment><USER12> 1\. Stock market: up.

2\. Economy (U.S. and world): up.

3\. Political polarization: up.

4\. Stupid-patent lawsuits: up.

5\. World violence: down.

</comment><comment><USER13> I'll shoot for;

1) We see a 'start-up' bubble form as sites like we funder open the mass market to VC.

2) Bitcoin has some big peaks and dips but ends the year overall on a reasonable up.

3) The US starts to feel inflationary effects from ongoing quantitive easing.

</comment><comment><USER14> There will be an exponential increase in Bitcoin pseudo-intellectuals in the media (and everywhere else, of course).

</comment><comment><USER15> We will see a one-man startup/app/product valued/acquired at north of $100M.

</comment><comment><USER16> \- Stock market correction. Maybe a crash if Murphy's Law holds true and there is a sudden major unwind. Will have genuinely new characteristics. For example, you might see a selloff in "safe" dividend paying stocks and _not_ tech, due to rotation of retirement funds out of stocks into fixed income. Another theory is you might see a panic out of financial stocks again once we see two quarters of downtrending inflation.

\- Bitcoin will hit $5k at some point. No bitcoin crash in 2014. Dogecoin gives us a glimpse of the long-term role of cryptocurrencies: not really to buy physical goods, but to send micro-payments to people for micro-services from simple tasks to just making you laugh or giving you insight. As mobile devices permeate our lives (see the iBand below) this form of exchange becomes more natural. This dynamic gains more traction as additional means of "tipping" are made on various sites (though this term may not be the way it is presented.) Twitter might lead the way here, building in a feature that allows you to tip any tweet with bitcoins or maybe even dogecoins, as absurd as that sounds now.

\- UST 10yr will close about where it is now, ~3%, maybe lower yield if we see deflation/disinflation. Muni bond crisis is overdone and spreads tighten, regained interest in fixed income for the retirement investment crowd as it becomes clear no inflation is imminent drive rates down. Talking heads start to posit that we're seeing rapidly increased productivity in the economy due to technology, and this means deflation and low GDP for a longer time than we ever thought. Unemployment stays high and talk of a living wage gains traction though is a pipe dream in the US. Rotation out of equities here contributes to the market correction. GLD ends the year down another 10-15%.

\- Apple introduces iBand, thin glass wristband that serves as a paired device to your iPhone or iPad. It's a beautiful curved display that wraps around your wrist, and calling it a "watch" seems pretty ridiculous since it is essentially a display surface for apps _around_ your wrist, not some boxed-off tiny square screen encased by a frame and held on by a "dumb" leather or plastic band like the pebble or gear. (The analogy here is blackberry is to iphone as pebble/gear is to iband.) No on-board processors, RAM, or storage, iPhone/iPad does the heavy lifting. Use cases include obvious things like mapping, reading messages, fitness, and maybe payments with integrated touchID. Tim Cook demos FaceTime on the wrist on stage and points how just how insane it is that we have a Dick Tracy watch. Nerds write it off because it lacks features the Pebble has, is too expensive, looks stupid, has poor specs, or can't imagine why they would use it when you can't type on it. Will have a novel charging mechanism, design, or technology that makes it natural and easy to charge when not in use. The motivation for iOS7's focus on depth, layering, and typography and classic print design comes into clearer focus on a small screen which the user views at many different angles in quick glances. Might use gyros to enable fine scrolling control or flick gestures with tilt of the wrist. It's a major blowout hit with huge margins for Apple at a relatively low price point (prob $400 max.) Becomes a major cultural status symbol due to customization options (color, finish, maybe even different options catered to men and women) and is immediately the most visible Apple product a person owns. As such is the most fashion-conscious product Apple has ever created. For people who own the iBand, looking back on a time where they had to dig into their pockets to read a text message seems backwards and ridiculous. Samsung apes it, poorly, in Q1 2015 for Galaxy Gear line. AAPL closes 2014 in mid $800's, low $900's, maybe a 10-15% haircut from there if wider market takes a beating.

\- By end of 2014 Obamacare will be generally accepted as a Good Thing as people actually start saving money. More people quit their jobs and start companies in 2014 than expected because they no longer fear having to lose employer insurance. Democrats will be a lock for the midterms. Obama gets 2 years left without obstructionism.

\- North Korea status quo maintained. Diplomatic progress on Iran as tensions cool. Ceasefire in Syria created, then broken, then created again.

\- Google makes an autonomous vehicle surprise announcement of some sort, or announces a consumer robot, or at least a dev kit for robotics that is a leap forward compared to the status quo today. (No, you won't get your self driving car in 2014, but I think you'll be able to spend money on something from Google that has "Google Robotics" on the side.) Basically at the end of 2014 Google acknowledges it is a robotics company. Glass gets rejected by the youth but finds applications in industry, though this is just starting to become clear by the end of 2014. 2014 is year of the smartband, not the year of the smartlens. (That year will come though, and yes, Apple will break the design challenges first again I think.)

\- Momentum continues to build around the Oculus and awareness of its wider implications. The horse will still be in the barn in 2014 but it will be making some serious noise.

looking forward to checking back here in 2015 :)

<comment><USER17> "By end of 2014 Obamacare will be generally accepted as a Good Thing as people actually start saving money. More people quit their jobs and start companies in 2014 than expected because they no longer fear having to lose employer insurance."

Who is saving money? The small minority who have existing conditions are, but not the majority of healthy people.

Sounds like you don't run your own business or buy your own insurance. Small and healthy business owners like me just had a massive increase in the cost of doing business. Health insurance costs are much more and the benefits are much less.

A doubling of health care costs in my case, and a much higher deductible.

These plans are incentivized to keep people tied to their current employers. The costs of self-insurance is now just shy of a mortgage payment. Self- employeds are looking for a job, so they can be covered by obamacare.

<comment><USER18> >>Who is saving money? The small minority who have existing conditions are, but not the majority of healthy people.

I am saving money. I quit my job 2 years ago to be a freelancer and was declined health insurance due to a "high" cholesterol condition and was kindly offered a $1200/month plan. I declined to pay such a high premium. Now me and thousands of entrepreneurs are free to choose and get whatever insurance they want at group rates.

>>These plans are incentivized to keep people tied to their current employers. The costs of self-insurance is now just shy of a mortgage payment. Self- employeds are looking for a job, so they can be covered by obamacare.

You must be out of your freaking mind to say that

</comment></comment></comment><comment><USER19> Let me try :

\- politicians will keep lying, bankers will keep ruining good people and stock markets will keep not reflecting the actual state of the economy amidst general apathy, mine included.

\- taxes will go up, employment down.

\- Miley Cyrus will somehow be nude somewhere on TV and this will appear on one of the many thousand news I will inadvertently consume this year.

\- in the same vein, Linus Thorvalds, RMS, Mark Shuttleworth and Theo de Raadt will make outrageous comments (and or gestures for Linus) that will agitate the community (not taking risk here ;-).

\- the start-up bubble will implode and common people will pontificate on how investors were throwing millions on stupid apps that a 14yo could have coded in 3 hours a rainy Saturday afternoon.

\- on a personal note as a .net developer I will still be paid the same salary as a bus driver reflecting my management's valuation of my work. French job market outside Paris being what it is, I will keep churning business apps each time my manager has a brain fart ... huh ... idea ... while dreaming on the start-up stories that i will read on HN.

</comment><comment><USER20> SpaceX will do a vertical landing of their Falcon 9 v1.1 first stage on land.

</comment><comment><USER21> 1) Actual international-conflict geopolitical risk will _not_ bubble over in 2014. Stupid saber-rattling in Asia, insurgencies and wars in Africa, but nothing critical.

2) Security/privacy will become something normal people and businesses ask about, and ask fairly superficial questions about, during many transactions (e.g. people are going to stop being fucking morons and just relying on "the cloud" for sensitive data without questioning it; they may still end up using the cloud, but will want to make a more informed choice.)

3) Snowden, Manning, and Assange will remain in the same positions on 31 DEC as they started on 1 JAN. weev will remain in prison. aaronsw

4) Zerocoin will launch, and will be a lot more interesting than Bitcoin to many Bitcoin early adopters. Alternative digital currencies which are NOT purely proof-of-work will also start to be interesting; not necessarily USD backed, but maybe equities, or debt instruments, or whatever. Some may be based on bitcoin. Either Open Transactions or a strippled-of-XRP form of Ripple, or something like it (blinded tokens). BTC/USD will remain between 250 and 2000 on 31 DEC, even if it has excursions. If I had to bet, I'd bet today's price/no net change as the most likely center (the "most likely" single price is of course 0, but plenty of other prices are also likely)

5) Apple will continue to slide into irrelevance; the vanguard of most- technical users will move away from iOS and OSX, if not Apple hardware, due to Apple anti-freedom policies

6) Someone will actually put together a credible packaged solution for secure CPE (wifi-wifi, wifi-ether), secure basebandless pda thing, secure laptop (a modified chromebook or something), server solution, and network services, in a way which can be verified down to the metal, for pro and enterprise/intl sales, at semi-sane price points (i.e. not Crypto AG prices)

7) A non-US location will emerge as a serious startup location _specifically_ due to NSA/USG policies. I'm betting on Germany with German/Swiss arbitrage -- people living/working in Berlin on dev and ops in Switzerland. Maybe other non-EU/EU splits.

8) US mid-term 2014 elections will consist of "fuck the incumbents", independent of political party.

9) Yahoo will continue to slide into doom, and will be revealed to be the biggest collaborator among major non-financial, non-travel, non-carrier companies in the US. Alibaba will remain their only real value.

10) China will start to try to take the "moral high ground" on issues as a counterpoint to the US. It won't be universal, but it will hopefully cause US politicians (and electorate) to rethink things. They may offer to help in Afghanistan post US-withdrawal, in the same way they help in Africa today -- economic support, little political involvement.

<comment><USER22> No. 10: " little political involvement." \- I don't know but they do kind of run Africa...Someone I heard of bought some land in Namibia or Mozambique or someplace. He planned to build a house so he got a geologist to check the bedrock, which turned out to be rich in copper. He thought he hit the Jackpot so he asked for mining rights, the government's reply was "We're sorry, you may build a house on the land but we have sold the mining rights to the chinese gov't".

</comment></comment><comment><USER23> I predict I'll finish my HP 200LX clone running RetroBSD on the new PIC32 board that just arrived. I get an excellent web developing job working on interesting project(s). I finish my book. :)

And on the whole: 2014, year of the Linux desktop... Hey, I can dream, can't i?

<comment><USER24> I'm looking forward for this. My prediction is that I don't move forward on my RetroBSD running DIY calculator.

<comment><USER23> Hah, well keep an eye on the RetroBSD forums, I've been hacking away at the simulator and working on the PCBs for the keyboard and display. I've based it off the Fubarino, which I'm pretty sure is what my mail slip that arrived today is for, yay! I do predict it'll take me most of the year, as I'm going to have to hack in proper power management and other things, but it's so much fun that I don't care! I can't think of anything cooler than a HP 200 styled palmtop running a *nix. The question is, do I use the original 200LX case, or injection mould my own?

Got a link to your project at all? My website is in my profile, I'll be posting build logs once I pick up the board :D

<comment><USER24> Unfortunately on the hardware side I haven't done more than ordering a LCD and trying out several switches, and on the software side I'm not beyond POC software. I'm still not sure what kind of interface i want. Currently I think it should be RPL alike, but i see some UX issues i'd like to solve sometime. Sorry, no link.

</comment></comment></comment></comment><comment><USER25> A lot of predictions here with a US or tech perspective:

Like the Economist I see the EU succeed in putting more pieces of its banking union in place. This means large EU banks fall under ECB regulation rather than national regulation. This severs one link that exacerbated the € crisis but stops short of full fiscal transfers between regions which means more pain for the less resilient economies.

In Europe and the US inequality will continue to grow as nothing has been put into place that reverses the socialism-for-the-rich policies and the part- capture of politics by finance. There will not be another Occupy movement but with unemployment holding stubbornly steady and people unsure whether this is down to the 1% or tech automation expect to see undirected anger at the wealthy and the tech industry.

The centre of economic activity continues to shift to the far east. China stays on course to become the world's largest economy within five years. Chinese companies become more visible globally following the lead of Japan and Korea.

It becomes obvious that higher learning is being radically re-shaped by online courses and content. The current education players (publishers/universities) that do not embrace this new landscape will face hard times. Institutions will only be limited by linguistic boundaries, not (geographical) national ones. Primary and secondary learning unchanged because kids must go to school while parents work and must go to school locally. Pretty good chance that computer programming is adopted as a core skill by more and more regions.

Areas of activity in 2014 will be Space, Solar, Gas, Biotech, Cybercurrencies (rivals to BTC will emerge this year), and the FOSS gets serious about federated (anonymous/pseudonymous/real name) social networks and secure private chat platforms.

In terms of conflict I think we'll get more of the same. War of attrition continues in Israel, settlement activity continues, no progress on peace. No significant development in Syria unless China/Russia do a volte face. Possible internal turmoil in North Korea due to purge and defections - N. Korean regime will eventually collapse as no malevolent dictatorship or tyranny has ever survived as such but calling when is impossible. As the Arab Spring has everything to do with the spread of enlightenment ideals and very little to do with internet technologies expect to see more demonstrations around the region and concessions like allowing women to drive in Saudi Arabia and things like this but no government being overthrown. Iran pushes forward with its nuclear program (as do other petroleum states) and finds US/Israel to be implacable, as US withdraws from Afghanistan the likelihood of boots on the ground in Iran increases.

</comment><comment><USER26> webRTC becomes easily usable and almost fully implemented by the end of 2014.

<comment><USER27> And yet it will still remain infeasible for real-world use due to no IE support.

<comment><USER28> Someone will make a plugin for IE if the demand is large enough, like they did for webgl (even though webgl demand isn't very big).

<comment><USER27> This still kills the only benefit of WebRTC that it has over existing solutions - it's no-install nature.

If a user gets to the point of installing something, there's really not much difference between Skype and the plugin. Except, of course, everyone is already on Skype.

</comment></comment></comment></comment><comment><USER29> People will start switching to Google+

<comment> chestnut-tree _" People will start switching to Google+"_

I expect Google will continue to strongly push Google+ on as many users as it can. Whether it will actually persuade users to join or actively use the service is another matter.

Social networking will be very important to Google in 2014, so says Eric Schmidt in his 2014 predictions (2 min video)

[https://www.youtube.com/watch?v=vzKM8oyCsUg](https://www.youtube.com/watch?v=vzKM8oyCsUg)

I'd like to believe that we'll be more privacy-conscious in 2014, but I don't actually think that will be the case. I'd like to see more scrutiny of the data companies collect about users, particularly because they are now collecting more data than ever before. Some companies like Google have staggering amounts of user data. They're probably salivating at the prospect of capturing even more precise user behaviour through an OS (Chrome) that potentailly captures _everything_ you do online.

Far from the tech community (who you might hope would be most informed about this) actually raising concerns about the privacy implications of this, I think Google (and other companies) will continue to get away with barely any scrutiny at all.

</comment></comment><comment><USER30> * Battery tech makes a leap forward - on the consumer level not academic.

* Google Glass goes nowhere. Makes for very interesting case study though - much is learned.

* Apple faces an uphill battle on all fronts. Manages to hold its ground well.

* US keeps pushing the copyright angle hard. Zero real world effect - pirates keep on happily pushing bits and bytes around the world.

* Startups in northern Europe soars. Not UK. Probably Germany - as rdl said in his prediction.

* Germany continues to kick ass on the economy side. Spain / Italy / Greece still in trouble. Tension within EU as a result.

* Elon continues to kick ass - at least on the Tesla front

* Startup scene becomes (more) overcrowded. Even the people with good products struggle to get noticed.

* Steambox takes off. xbone loses out to PS4 by a sizable margin.

* Win 8 adoption picks up significantly at home. Zero corporate interest though.

* The year of the Linux desktop doesn't happen. nix dominates everywhere else though (server, tablets, home entertainment etc)

* The hits keep coming for the USA - whistleblowers, NSA etc. Real world financial consequences - but only noticed by the tech crowd.

* More people start using VPNs. Internet security expenses become a must for the tech crowd (i.e. in addition to paying for internet).

* UK economy wobbles significantly. If the wobble is anywhere near their housing market then things could get shaky world wide.

* At least one serious flash crash / HFT drama of sorts. Widespread acknowledgement that its dangerous. Nothing happens to curb it due to powerful players protecting status quo.

* Military drone tech keeps soaring. US starts doubting their big budget manned fighter programs. China drone tech makes more progress than expected - USA caught off guard.

* Renewable energy takes off. Drama because the grid & energy sector just isn't ready for the distortions it causes.

* Epidemic of some kind comes from India. Everyone realizes global coordination is inadequate & medical sector panics about drug resistance.

* Fukushima keeps being a problem. Japan mans up and asks Russia & USA for serious help (i.e. not gestures) - only 3 years late.

</comment><comment><USER31> Bitcoin is overtaken by something else.

JavaScript continues to get faster.

Google Glasses gets released and we see them grow quickly, similar to how stuff like the pebble has been growing traction. 2013 was the year of the smartwatch. 2014 will be the year of the smartglasses.

2014 is the year of the Linux desktop with SteamOS!

<comment><USER4> "2014 is the year of the Linux desktop with SteamOS!" \- can't be 'desktop' since most of them will be under TVs.

</comment></comment><comment><USER32> We did this already: [https://news.ycombinator.com/item?id=6954238](https://news.ycombinator.com/item?id=6954238)

</comment><comment><USER33> I'm hoping coding will enter the mainstream and more people will learn to create software that helps them in their lives and work.

<comment><USER4> Being smart and having a specific mindset will become mainstream? Cool!

</comment></comment><comment><USER34> I am 100% sure the world will not end again.

Because if it does no one can call me on this prediction.

</comment><comment><USER35> Micropayments go mainstream.

</comment><comment><USER36> same as 4 years ago: [http://lazyant.com/post/424318610/predictions-for-the- new-ye...](http://lazyant.com/post/424318610/predictions-for-the-new-year)

</comment><comment><USER37> People tend to overestimate what can happen in a year, but underestimate what can happen in a decade....

That said -

* Current economic recoveries are too top-heavy and debt-focused; businesses and investors are taking for themselves without giving back enough to the workers to provide customers and make recovery sustainable. Real terms wages aren't recovering, household debt is rising. I don't see a track record of that sort of thing correcting naturally, so I'd suggest it'll be a brake on recovery through 2014 and possibly push one or more major economies back into recession.

* Apple's iOS market - the cash cow supporting the whole business - continues to decline. iOS lost market share leadership on phones (aside - one of these days we'll start calling them tablets too, accident of history that they're called phones now) some years ago, and by some measures has recently lost it on tablets too. I see no practical way back for a single company releasing 2-3 devices a year against an ecosystem releasing hundreds. Stocks will continue to decline, I doubt they'll be more than a niche player in 5 years time. (Links - [https://news.ycombinator.com/item?id=4431730](https://news.ycombinator.com/item?id=4431730), [https://news.ycombinator.com/item?id=3076576](https://news.ycombinator.com/item?id=3076576))

* Mark Zuckerberg has a track record for spotting the Next Big Thing, if possibly also for overpaying for it. Facebook.com will continue its move towards being a social hub for varied sources rather than just a single entity, while stories continue dismissing its relevance. Facebook, Inc. will continue growing through this expanding footprint, whatever the core property's traffic does.

* I hope I'm wrong, but China seems to have been spoiling for a fight in various ways for some time. From its currency manipulation used to build up a balance of payment surplus which is then used to buy up real assets overseas, to its territorial stances - Taiwan, South China Sea, Senkaku / Diaoyu.... I suspect much of this is pre-emptive distraction from the fact that it needs to keep the economy growing at 7% annually to sustain their young population (and suggestions that they've been cooking the books to cover failures in this), but.... Too big a power, too much sabre rattling, too much nationalism being invoked. North Korea is clearly far from stable, Japan has a leader who wishes to paper over much of the 1931-1945 period. My hope is for China to collapse in on itself as with the former USSR; I'm not confident that we won't see war in that region in the next few years.

* Speaking of authoritarian regimes trying to use mineral wealth to paper over internal cracks and rattle sabres, Russia seems a matter of concern. Sochi 2014 is a pure vanity project; hosting a Winter Sports festival in a summer resort that's very near a region with a recent history of violent political instability (witness the recent bombings in Volgograd), building facilities in somewhat geologically unstable areas that then collapse and require rebuilding, large-scale corruption... I would be very surprised if the Sochi games go without interruption and I sincerely hope that they can prove the start of Russia freeing itself from Putin.

</comment><comment><USER38> Microsoft retrenching into "IBM mode" under the new CEO.

</comment><comment><USER39> Google Now will grow to be scary!

</comment><comment><USER40> This thread is a gold mine!

</comment><comment><USER41> \- Coup d'état in North Korea, with civil war between pro-democratic forces and loyalist forces. American, South Korean forces entering North Korea from the DMZ and Chinese troops entering from the Yalu river. North Korea is divided in half. China declares a large buffer zone, forcing South Korea to concede 25% of the peninsula. Japanese Self Defense Force clashes with Chinese Navy in a limited naval/air battle which results in Chinese loss. Both sides declare victory.

\- Another dot-com bust. Facebook is delisted from stock exchange after share prices crash and investors lose confidence in rapidly declining user-base. Amazon crashes, Walmart takes over the space left behind by Amazon after being acquired. The idea of valuation from future profits in technology stocks is wiped out with the major market correction. Warren Buffet addresses it in his annual shareholder's meeting.

\- United States announces return to the gold standard angering China as the treasury notes become worthless.Global recession many times bigger than the 2008 market crash soon follows.

\- Bitcoin is made illegal as it is discovered the Founder of Bitcoin turns out to be Ross Ulbricht, the founder of Silk Road. Cryptocurrency is banned in United States and other nations follow.

<comment><USER42> Your predictions got more and more outlandish as the post went on.

</comment></comment><comment><USER43> New Private Cloud era with cloud306.com

<comment><USER8> Spam.</comment></comment>


Why cute drawings? - <AUTHOR> http://jvns.ca/blog/2016/11/14/why-cute-drawings/ <comment><USER2> On the one hand, they're good because they lower the barrier to system development, which could speak to people who would otherwise not think about getting into sys-dev.

On the other hand, it may attract a bunch of people who think it's easier than it really is and we end up with a bunch of bad system code in the future :D

</comment><comment><USER3> Someone called them childish? Probably also thinks his 3 year old can paint like Pollock. I sure can't draw like that.</comment>


Firefox New Tab Page: Cognitive Shield - <AUTHOR> http://labs.mozilla.com/2009/03/firefox-new-tab-page-cognitive-shield/ <comment><USER2> I think the best compliment I can pay Aza Raskin is that whenever I look at one of his designs, I know immediately that it's his. He's got a focus for circular designs combined with an emphasis on minimal displays that convey a lot that's a signature look in my mind.

This stuff he's doing for Mozilla thrills me. It's great to see him working with a huge company.

<comment><USER3> I'm a bit skeptical. The circle is loved by designers, but it does not seem to survive in software that is actually being used by people. There are few pieces of software that uses circular control elements - the few that I can think of (the logitech mouse, LabView) don't handle well.

<comment><USER2> In this case, the design doesn't _function_ as a circle. It changes to a linear list once you move your mouse. The circle is just there as a placeholder.

Have you used Raskin's music site Songza? It's a great example of circular navigation that works really well.

<comment><USER3> It does not work for me personally. I don't like the way that the options appear in places that I did not predict they would appear in. When I interact with anything, I want it to behave exactly the way I expect it to behave, and to do so consistently.

The songza site does not behave as I expect it to, and even after I learn how it works, it does not behave consistently in its own mould. I click an item and up pops some 4 arrow thing. When I move over some arrows, yet more things pop up and on some other arrows, more things don't pop up, and there is no hint as to which will cause things to pop up or not. So even though one might learn how such a navigation works on that particular site, as soon as you go to another site, you will have to relearn again which of those arrows will cause popups and which will not. Contrast that to a right click menu which always indicates which options will pop out.

I don't think circles are good navigation tools, for the reason that there are very few popular tools which use circles as their main navigation mode.

<comment><USER4> It seems like you are not arguing against circular navigation in general, but specifically the navigation on songza.

Your problem with the unpredictability of the menus in the songza-style navigation could very easily be fixed by simply adding an arrow to each item that contains a submenu, just like the typical context menu.

An arrow could be added on the tip of each leaf of the songza navigation circle that uses has a submenu. The arrow would visually indicate that a menu will pop out if the mouse hovers over leaves with these arrows. This would function exactly as the arrows on the typical context menu.

</comment></comment></comment></comment></comment><comment><USER5> I don't get the point. The only time a blank tab opens is when you're typing in a URL or search phrase, at which point your eyes are on the chrome anyway. If the Cognitive Shield has any perceptible load time, it's not worth it. Granted, at least it doesn't look like an error message like IE7's default blank tab.

<comment><USER2> The mission is to make it possible to click some easy links _without_ the visual clutter that other browsers' start pages give.

Have you not seen Speed Dial/Chrome/Top Sites? Because this is the _exact same_ functionality as those other ones, and none of them have perceptive load times. Firefox is playing catch-up here: it's not giving anything particularly new.

</comment></comment><comment><USER6> Chrome's tab-selection of top pages is a lot more useful to keyboard-centric users... anytime I have to move my hand to the mouse is time from my life I'll never get back!

A certain improvement would be to, instead of hitting tab-tab-tab-tab-tab- return, I could just hit alt-5...

<comment><USER2> Knowing Aza this will very likely support keyboard navigation. Aza's a stickler about having things ultra-accessible.

</comment></comment><comment><USER7> The big flaw with this design (the initial circle), of course, is what if a site doesn't have a favicon?

<comment><USER8> Odds are it's not one of your favorite sites if the site owner isn't even committed enough to have made a favicon.

Before you smack the reply button to pop up with "But here's an example of my favorite site without a favicon!": I said _odds are_.

I doubt the number of favorite sites without a favicon is low enough at this point that Mozilla shouldn't spend a lot of time worrying about it.

<comment><USER9> The example picture has two sites with the same favicon, so the general-case problem probably isn't all that uncommon. Especially if you're the sort of user who does things like checking multiple twitter pages without an RSS feed.

</comment></comment></comment><comment><USER10> This looks like an awesome idea. I haven't been able to try it out yet because I'm running FF 3.07 (simply because Ubuntu repos haven't brought it up to 3.1 yet, and I don't really want to bother that much atm), but it reminds me of the controls built into some FPS's and even old Lucasarts Adventure games like Full Throttle or Grim Fandango. Except the default actions in this case are all favorite websites. Nice to see Mozilla labs pushing the envelope yet again.

</comment><comment><USER11> Something else I'll promptly be turning off/removing ASAP when I am forced to upgrade to a newer version of Firefox. Firefox was at its best in 1.5 -- hardly anything after that has been anything but developer flights of fancy.</comment>


Advanced R by Hadley Wickham - <AUTHOR> http://adv-r.had.co.nz/ <comment><USER2> The "Advanced R" title is not joking, and will be less useful for people who are not already familiar with the language.

For more common knowledge of R, see Hadley's book R for Data Science. (HN discussion: [https://news.ycombinator.com/item?id=12513985](https://news.ycombinator.com/item?id=12513985))

</comment><comment><USER3> I browsed through the debugging section of the text and was disappointed:

> The easiest way to enter the interactive debugger is through RStudio's > "Rerun with Debug" tool.

Oh, great. Let's take a language intended to be driven from the command line and tie it up with a non-official GUI that abstracts away the details of how one actually debugs with R.

<comment><USER4> Did you read the text? For every RStudio UI feature, I also provide the equivalent function call.</comment></comment>


YouTube suspends Logan Paul's ad revenue, blames 'recent pattern of behavior' - <AUTHOR> https://www.theverge.com/2018/2/9/16994364/logan-paul-youtube-suspends-advertising <comment><USER2> > we believe he has exhibited a pattern of behavior in his videos that makes > his channel not only unsuitable for advertisers

I'm indifferent on Logan Paul, but this sounds like classic bullshit, considering how his channel generates over $10m a year, stated previously in the article. Sounds like YouTube is scared that one bad apple is going to spoil the rest of them. This would be a non-issue in a decentralized platform.

Centralized gatekeepers who personally green-light all of the content coming through the platform doesn't scale, and it's not provably fair at all. Just as we saw with governments, it is impossible for a single highly responsible entity to give proper attention to real issues and problems in a fair way. As long as a handful of far-removed people in a room are making decisions, we will continue to observe freedoms being taken away.</comment>


Schneier on Security: Online Credit/Debit Card Security Failure - <AUTHOR> http://www.schneier.com/blog/archives/2010/02/online_creditde.html <comment><USER2> From the paper: "In any case, security economics teaches that you're unlikely to get a secure system if Alice guards it while Bob pays the cost of failure."

This problem is nothing new. All that changes with 3DS is that Carol pays instead of Bob.

</comment><comment><USER3> Article already appeared in <http://news.ycombinator.com/item?id=1077656></comment>


Paradox: Is There Toscanini's Ice Cream In Heaven? - <AUTHOR> http://www.wunderland.com/WTS/Ginohn/cetera/heaven/heaven.gif

<comment><USER2> Is Tosci's even still open?</comment>


An Accurate Depiction of the Scale of the Universe by Nikon - <AUTHOR> http://www.nikon.com/about/feelnikon/universcale/index.htm Many of you may be familiar with a recent flash-based model of the universe that wasn't exactly accurate.
I recently found one that's not only accurate, but informative.
Check it out. <comment><AUTHOR> It's pretty neat as well because it depicts the relative size of transistors and LSIs compared to bacteria and the like, which goes to show how far we've come technologically.</comment>


WebSockets in Firefox - <AUTHOR> http://hacks.mozilla.org/2010/04/websockets-in-firefox/ <comment><USER2> Sensible response by Mozilla, but a shame that means we won't be seeing websockets included in the near future.

<comment><USER3> I disagree. The argument is that it's under constant change and discussion. This is true for every single part of the development stack. It's important to just get it out there and iterate in response to what developers are _doing_ with WebSocket. The sample size to justify Content-Encoding: gzip, deflate in that mailing list post is two, and is very unlikely to grow if Firefox doesn't add support! We could discuss theoretical improvements to WebSocket for months on a mailing list.

If you look at the initial discussions about the WebSocket protocol, much was said about reconnection negotiation, queues/batches support, meta headers, et cetera. Discussing a feature forever holds back progress. Firefox argues that there's "a lot of ongoing discussion", but that's been the case since Day 1.

Firefox should do what Chrome 4 did, add it, then continue to improve it. There's a very low chance that the developer API will change anyway.

<comment><USER4> I like the chrome approach of including experimental features in stable builds but requiring a command line switch to turn them on. It makes it much easier to try out new features without making people expect future compatibility.

</comment></comment></comment><comment><USER5> This is one reason I'm not particularly fond of Mozilla. They care too much about ideology, PR and all that stuff. They have had the code but won't release it because it could make them look bad or annoy some web devs or doesn't fit their ideology. Why can't they just release stuff and see how it fares, and improve it based on public's response.

<comment><USER6> Not caring about ideology is what got us into the IE6 mess in the first place.

<comment><USER7> I disagree.

Not caring about ideology over technology is what got us Chrome.

The Embrace, Extend, Extinguish destructive MS ideology is what got us into the IE6 mess.

<comment><USER6> You know what got you Chrome? WebKit. WebKit started as KHTML which was developed by an ideological group named KDE.

<comment><USER5> KDE, an ideological group? Really? I've found KDE people to be very pragmatic, not ideological. KDE's history and their choice of Qt also supports that, remember that FSF (there's an ideological group for ya) rejected KDE for some time, and creted Gnome to compete with it purely for ideological reasons. KDE in comparison was created because the founder felt the need for a good desktop environment for unixy systems.

</comment></comment></comment></comment></comment><comment><USER8> Hopefully it becomes a widely adopted standard before we start inching backwards towards the good ol' days when sites were optimized to the browser.

Web apps can be neat and useful, but do we really need a 250-300MB run-time for a thin client?

Maybe I'm just getting old.

</comment><comment><USER9> Less talk, just ship it!</comment>


Ski rental problem - <AUTHOR> http://en.wikipedia.org/wiki/Ski_rental_problem <comment><USER2> What about next season?

<comment><USER3> That was my first thought (and why renting is in general uneconomical for anything other than temporary purposes) - but then, if you were bringing them home and back next time, you'd have to pay extra on baggage charges, so then it becomes baggage charges vs. rental charges, I guess.

<comment><USER4> Equipment becomes obsolete / worn / damaged just like technology.</comment></comment></comment>


We don't need Elon Musk - <AUTHOR> https://www.iafrikan.com/2018/09/12/elon-musk-technology-startups-silicon-valley-innovation/ <comment><USER2> > According to the employment website indeed.com, the average salary at Tesla > ranges from approximately US$38k to US$147k. Not bad money really, but it > means that even a top earner at Tesla would take 133,000 years to amass > Musk's fortune. So, either what he does is 133,000 times more important than > what they do, or this is a massive confidence trick.

What someone EARNS is not the same thing as what they are WORTH. Elon Musk doesn't EARN 20Bn a year. He is WORTH 20Bn. Is it fair that he's worth 133,000 times what someone earns in a year? Probably not. Is it relevant to compare what Elon Musk is worth - primarily due to his work at Zip2, X.com and primarily denominated in Tesla stock which is highly variable, to the day to day pay of someone collecting a pay check from Tesla?

What is really bizarre about this article is it's totally economically illiterate. The reason Elon Musk is worth billions is because he owns a significant proportion of Tesla stock and Tesla stock is worth Billions. If you want to make a coherent point about that it's about how the value of assets have sky rocketed whilst the value of incomes have stayed flat.

Let me give you a concrete example:

Jeff Bezos runs Amazon, the second most valuable publicly traded company in the world. Jeff Bezos is worth $164.7 billion and according to Forbes is the richest man on earth.

Tim Cook runs Apple, the most valuable traded company in the world. Tim Cook is worth $750m.

The difference between these two people is that one of them had equity in the company from the start, and the other is paid a salary. They are both leaders.</comment>


Ask HN: How many times you got promoted in your professional career so far? - <AUTHOR> I've been working for 10 years, I was never promoted. Just wanted to check about you :) <comment><USER2> I've never been or witnessed anyone get promoted except by job transfer, and have thought for quite some time that "the promotion is dead." I've only seen very small raises, usually cost of living adjustment type things, and everything I've seen has confirmed that the lateral move is the only route to advancement in the software industry.

Of course others here have different stories, so YMMV. It may depend on where you're working and in what kinds of companies.

<comment><USER3> I have had a similar experience, and also met many people with similar experiences. I have had exactly 2 advancements in my 5 year career. One was a cost of living increase (actuallyl slightly less then that), but only after I complained numerous times. The second was when I switched companies to a new position.

</comment></comment><comment><USER4> I've been promoted about once every 2-3 years, depending on where I was working, but I've also been pretty vocal about career advancement and aggressive in going after the things I want. I may or may not be an outlier here. Take my advice with a grain of salt. :)

For me, the trick is to make my desire for promotion clear to The Powers That Be. I went to my boss, and I set a goal. "In 3 years, I'd like your job. What do I do?" If she's a good boss (like mine was), she'll help you put together a plan to get to that point. If she won't help, and you really want that position, then it might be time to leave and find a new job where you might have a more amenable boss.

As a manager, many of my developers are perfectly happy to just code all day long. I've asked them about career goals, and they'll say things like "I want to learn a new language" instead of "I want a promotion." I think the default mindset for managers is to assume that their employees do _not_ want promotions, so if you want one, you should definitely mention it at your next 1:1 with your boss.

You want to phrase it less as "I want a promotion" and more of "I've decided on a long-term career goal as X position in Y years. What do you recommend I do to get there? I would appreciate any opportunities you can give me that move me toward that goal." Good managers will love that kind of thing and move heaven and earth to help you out. It might take 2 years to get that particular position, but small changes along the way can make a huge difference. (And by "long-term goal" I mean 3-5 years, so 2 years is good progress.)

There's also the issue of what is the definition of a promotion? Are you talking about going from "Junior Software Engineer" to "Senior Software Engineer"? That kind of promotion is generally just a title change, maybe with some increased responsibility, but not really a different job. IMO, the jump from Senior -> Lead or Engineer -> Manager is a bigger change.

Are you getting raises? If you're getting raises, and your responsibilities are mostly the same, then I'd say those don't really count as promotions. If you're getting raises AND more responsibility, then you're getting promotions, even if your title hasn't changed in 10 years. (Also, it never hurts to ask for a better title -- titles are free!)

<comment><AUTHOR> Thanks for the response. Every 2-3 years? that's great! :) I get raises and title change when I change the company(3 companies so far).

As you mentioned about career goal I'm more like 'I want to learn a new skill' kind of person. I hoped that if you do some very challenging/complex work, you will be recognized & rewarded for it. But sadly that's not the case (at-least in my country) :(

I think it also comes with one's personality, I consider myself as quite introvert. So most often I feel management use that as excuse. (eg: You are not interactive, not talking much others etc etc)

<comment><USER4> I don't think being an introvert is a problem, necessarily. Some jobs require people skills (managers, etc), but I also consider myself an introvert, albeit one with people skills. There are different kinds of responsibility, though. You can take more project-based responsibility and be more of a tech lead rather than a people manager.

Really, as long as you're learning and growing, and as long as you're getting raises, and as long as you're happy, then don't worry too much about promotions. :)

<comment><AUTHOR> Yes that's true. I forgot about promotions. Learning and getting paid market salary is fine with me. I believe, If they tell some-one as promoted and cut their salary by 10% ..then no-one will ever want to be get promoted :)

</comment></comment></comment></comment><comment><USER5> Once, but I hated it, back to the grunge and trenches for me.

Meetings every other day until 2pm? The same meeting 4 times with slightly different groups of people? Having to tell people they need to work overtime?

No thanks.

</comment><comment><USER6> Consulting - Once in 3 years.

Once every two years is pretty common early on in consulting.

</comment><comment><USER7> About five times in 16 years as a sysadmin.</comment>


Don't MAWK AWK - the fastest and most elegant big data munging language - <AUTHOR> http://anyall.org/blog/2009/09/dont-mawk-awk-the-fastest-and-most-elegant-big-data-munging-language/ <comment><USER2> Perl was written partly as a replacement for awk, and as such it has command- line switches that make it more suitable than it might appear. You could get very similar behaviour with a much shorter implementation using `perl -nai~`, something like:

        BEGIN { open(VOCAB, ">vocab"); }
        if (!$imap{$ARGV}{$F[0]}) {
          $imap{$ARGV}{$F[0]} = ++$I{$ARGV};
        }
        if (!$jmap{$F[1]}) {
          $jmap{$F[1]} = ++$J;
          print VOCAB $F[1] . "\n";
        }
        print "$imap{$ARGV}{$F[0]} $jmap{$F[1]} $F[2]\n"

Which apart from the BEGIN line is almost a direct translation of the awk. A lot uglier, but for one-off things that isn't much of a problem.

(And if you want to claim awk has a three-line implementation, this is four lines.)

Admittedly, it's not quite the same - instead of putting output from file1 in file1n, it renames file1 to file1~ and puts its output back in file1. If you want to change that, you have to add your own file-handling code. That would only be a few lines. And it's probably never going to be as fast as mawk.

There are other cases where I suspect perl would beat awk, but maybe get beaten by sed. Not to rain on awk's parade or anything - it's still cool. Just not _that_ much cooler than perl. :)

<comment><USER3> aha, very nice! I was wondering how to do the awk-style structure in perl; it was unfair I didn't research it.

Maybe it's just me, but I find it much harder to read than the awk syntax, I think mostly because of the dollar signs. I think it's pretty crowded as a four liner. Awk's condition-action syntax helps a little here too.

        BEGIN { open(VOCAB, ">vocab"); }
        if (!$imap{$ARGV}{$F[0]}) { $imap{$ARGV}{$F[0]} = ++$I{$ARGV}; }
        if (!$jmap{$F[1]}) { $jmap{$F[1]} = ++$J;print VOCAB $F[1] . "\n"; }
        print "$imap{$ARGV}{$F[0]} $jmap{$F[1]} $F[2]\n"

</comment></comment><comment><USER4> sed, grep and awk are among the major reasons why I love Linux so much. It took months until I first used them, now I use them daily and they made me work so much more productive than before.

</comment><comment><USER5> Silly bash function I use all the time.

      function f {
        awk '{print $'$1'}'
      }

      cat tab-separated | f 2 > just-the-2nd-column

<comment><USER6> cut -f2 tab-separated > just-the-2nd-column

<comment><USER7> doesn't work if it's any-amount-of-whitespace separated

<comment><USER8> -d'<tab>'

<comment><USER7> Nope: echo 'a b' | cut -d' ' -f2 a b

</comment></comment></comment></comment></comment><comment><USER9> 1GB isn't exactly "Big Data". I'd expect most truly Big Data tasks to be more I/O bound than computation bound -- at least if your "computation" consists of text parsing and hash table lookups.

That said, it's interesting that mawk is so fast.

<comment><USER5> Depends. If you do a naive Ruby implementation, then you'll be CPU-bound quite quickly.

      #!/usr/bin/env ruby
      while line = STDIN.gets
        puts line.split(/\s+/).first
      end

This pegs my CPU at only 2MB/s, well below the IO capabilities of any modern system. I guess the tool you're using matters, which I think was the original point.

</comment></comment><comment><USER10> A pretty good showing from Java on this, even though Java's I/O system is pretty annoying. I don't think the implementation he shows there is _too_ odious if you're used to Javaland pain.

<comment><USER5> It's not the end of the world. It just adds a few lines, but for multi-GB text processing, the runtime speedup, and the decent concurrency support is worth it.

      import java.io.BufferedReader;
      import java.io.InputStreamReader;

      public class Foo {
        public static void main(String[] args) throws Exception {
          BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
          String line;
          while ((line = reader.readLine()) != null) {

          }
        }
      }

<comment><USER11> It's not hard to write a utility that wraps an InputStream in an Iterator so you can do things like:

      for(String line : readLines(System.in)) {
        //do something with line here
      }

<comment><USER5> Like org.apache.commons.io.IOUtils.lineIterator? Ultimately, I choose to either be a Maven project and require half the world, or just a single file that's easily compiled.

If it's the latter, I don't bother creating many abstractions.

</comment></comment></comment></comment><comment><USER12> I used mawk a long time ago, but it became stale. Last version I used, I believe, was 1.3.3. It was excellent - fast and accurate. I crunch a lot of data, and it always outperformed gawk. I migrated away from it when it would no longer compile on a Linux system. As I still had gawk, and gawk was fast enough, I left mawk behind.

Now I'll have to see if I can get it to run on OS X. Hmmm... ;)

UPDATE

It's available on MacPorts. It should be on my machines tonight.

<comment><USER13> I'm installing it right now.

</comment></comment><comment><USER14> I wonder if the C/C++ code compiled with LLVM/Clang would make a dent in the run time?

</comment><comment><USER15> use it in unicode mode, that kills performance</comment>


Google could pick Git to manage Android code - <AUTHOR> http://news.cnet.com/8301-13580_3-9951208-39.html <comment><USER2> Google's moving from Perforce to Git? I dare say Git has won the DCVS war.

<comment><USER3> I don't think Perforce is an option for this code, as it's being made public. I didn't see the article say anything about changing their internal CVS.

<comment><USER4> FWIW, Perl has been in Perforce forever, and it's an open source project. But Perforce sucks, so it's being migrated to Git.

<comment><USER5> Interesting. Linus is the new Larry.

<comment><USER4> Actually, I misused the word "forever" to mean "a long time". Larry isn't really involved with Perl 5 anymore, though, so any conversion to Git was not his idea.

</comment></comment></comment></comment></comment><comment><USER6> Wow! Stop the presses.</comment>


How the Minimum Wage Affects Restaurant Hygiene - <AUTHOR> http://www.npr.org/2017/09/13/550607377/how-the-minimum-wage-affects-restaurant-hygiene <comment><USER2> I believe this is the paper being referenced - [https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2992783](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2992783)

</comment><comment><USER3> Well yay, I'm really glad I read that. I'll just go ahead and cook for myself forever now.

Have you ever washed your hands in a restaurant bathroom just to be greated by only a hand drying machine and think, "how the hell am I going to get out of here without a paper towel to protect me from touching that dong-germ encrusted door knob?"

<comment><USER4> I'm starting to see foot-operated door-pulls (e.g., [http://www.stepnpull.com/](http://www.stepnpull.com/)) around Minneapolis.

</comment></comment><comment><USER5> Increasing minimum wage also increases tax revenue, maybe some of that should be appropriated to the health department to vigorously enforce they law against companies that feel entitled to profit at the expense of harm to others.

</comment><comment><USER6> I am supportive of higher minimum wages, but I think those who agree should recognize and accept that a business exists to make money. Where one cost rises, a business will find a way to reduce costs in other area. Be it lower quality food, less employees, or in this case, less attention to sanitary conditions. It's too bad a city can't take the radical, opposite step and get rid of the minimum wage all together. That would be a very interesting experiment.

<comment><USER4> Didn't we already run that experiment in the United States, from its founding up through the early 20th century? In what ways do you suppose things would differ today?

</comment></comment><comment><USER7> This is a poor study. The "control" of NYC doesn't match Seattle in most every respect, and switching to Bellvue - well, you can read the paper where they say Bellvue followed the state minimums instead of the raises that Seattle implemented, and had the same increase in low-level health violations.

It's a poorly made case of correlation.

</comment><comment><USER8> This is apparently business owners failing to uphold state required hygienic processes.. which in and of themselves are perhaps too forgiving

But my experience working restaurants shows under paying employees incited a certain apathy in the workers causing lazy implementation of food handling standards

I'd argue more pay makes the workers appreciate their work more which would tangentially result in better hygiene

But for an owner to intentionally 'skimp' on hygiene practices due to 'reallocated profits' is ridiculous

Also the tone is ambiguous, is the intent is the paper that I am supposed to see these dubious correlations of stats and think, 'they were right.. raising the minimum was a bad idea'?

</comment><comment><USER9> I have to wonder if the restaurants in the study have also attracted new staff as a result of the pay increases ($8 to $13-$15 an hour).

New staff may result in those not fully trained (yet), perhaps a small percentage of new staff feel that certain responsibilities are beneath them, new hires may get dumped with more of the "dirty" work, previous staff dismissed in favor of new staff (for _various_ reasons), etc...

Just saying that there could be other factors are play here.

</comment><comment><USER10> They sure buried the lede there

"Let me catch up with you. What we're seeing here is the research shows if workers get paid more, _to earn the same profit_ , businesses need to cut on something and where they're cutting is around the edges on hygiene?"

The issue is business owners who want to earn some ridiculous multiple of what their employees do. The haircut should come from their profits.

<comment><USER11> What is a fair profit for the owner of a small restauraut? Put 500k in to start it. Puts in 70 hours a week. Since you want to say what a fair profit is, what is it? 30k a year? 200k? 500k?

<comment><USER12> Restaurant profits are controlled by landlords. The rent goes up just to the point where the business survives. Due to the natural shortage of space, this works perfectly for landlords and not very well for anyone else.

What the minimum wage does is create an unmoveable barrier that can't be negotiated away. Minimum wage lowers the maximum rent the landlord can charge without killings the tenant. The wages come out of the landlord's pocket, not the business's.

<comment><USER13> What about in small rural towns where rent isn't as egregious?

<comment><USER12> I agree that minimum wages need not be uniform over large geographical areas.

<comment><USER13> > The wages come out of the landlord's pocket, not the business's.

I was referring to this claim. If rent is a relatively modest expense, how does a minimum wage come out of a landlord's pocket?

</comment></comment></comment></comment></comment></comment><comment><USER14> People really are finding any way they can to make raising the minimum wage look bad. With rising inequality, a growing lower class, and a shrinking middle class[1], it seems like the business owners are going to grasp at everything they can to pay the lower class less and less each year.

[1] [http://www.pewsocialtrends.org/2016/05/11/americas- shrinking...](http://www.pewsocialtrends.org/2016/05/11/americas-shrinking- middle-class-a-close-look-at-changes-within-metropolitan-areas/)

<comment><USER15> By and large those who oppose it are not evil for the sake of evil but concerned that the alternative is not a higher minimum wage but no wage at all as workers in unskilled jobs are replaced by self-service or automation. McDonalds is already doing it. The answer is using technology as a lever to help people do higher-value-adding work and incentivising people to upskill into those jobs after a brief period at entry level. Not raising the level of entry level so high that it pulls the ladder up.

I say this as someone who started working before the minimum wage even existed, at a fraction of what it was when it was introduced.

<comment><USER16> The people who complain about it seem to be owners who just complain because complaining is free and any they are against increase whatsoever: [http://www.workingwa.org/sky-aloft/2015/tom- douglas](http://www.workingwa.org/sky-aloft/2015/tom-douglas)

<comment><USER15> We have the situation in the UK where people on minimum wage get top-ups via the welfare system which makes no sense, I'd like to see an increase sufficient to negate that, because it's just taxpayers subsidising businesses! But £15/hr for unskilled work can't be justified. £9-10/hr is probably about right.</comment></comment></comment></comment>


The Common Lisp Condition System – Upcoming Book - phoe-krk https://www.apress.com/us/book/9781484261330 <comment> phoe-krk Author here. The book has just gone to production and will be available at the end of the year in dead-tree and electronic formats.

The book happened because I got annoyed at the fact that there is no good reference that shows how the condition system works, what are the foundations required for it to work, what are the basic building blocks that it is composed of, and what are its uses, both in the domain of handling exceptional situations and, more importantly and less obviously, outside that domain.

The book also contains a description of a full implementation of a condition system that can (and hopefully will!) be used outside Common Lisp. There's hope that some languages will pick up these parts of Common Lisp that fully decouple the acts and means of signaling conditions from the acts and means of handling them, therefore allowing for means of dynamically controlled control flow that are currently very hard to achieve in other languages.

The accompanying code is available at [https://github.com/phoe/tclcs- code](https://github.com/phoe/tclcs-code) and [https://github.com/phoe/portable-condition- system](https://github.com/phoe/portable-condition-system) \- it will be copied over to the Apress repository soon.

Linked Reddit thread: [https://www.reddit.com/r/lisp/comments/hrjzs8/](https://www.reddit.com/r/lisp/comments/hrjzs8/)

AMA, I guess.

<comment><AUTHOR> While this may seem absurdly naive, what is the CL condition system? Based on what I see (read) It seems like you need to know what it is before read the book.

<comment> phoe-krk Let me answer by posting an introduction to the condition system by Kent M. Pitman. It is the first subchapter of the book.

\</comment></comment></comment><comment>

 _There have been many attempts to declare the Lisp family of languages dead, and yet it continues on in many forms. There are many explanations for this, but an obvious one is that it still contains ideas and features that aren 't fully appreciated outside the Lisp community, and so it continues as both a refuge and an idea factory.

Gradually, other languages see the light and these important features migrate to other languages. For example, the Lisp community used to be unusual for standing steadfastly by automatic memory management and garbage collection when many said it couldn't be trusted to be efficient or responsive. In the modern world, however, many languages now presume that automatic memory management is normal and natural, as if this had never been a controversy. So times change.

But proper condition handling is something which other languages still have not figured out that they need. Java's try/catch and Python's try/except have indeed shown that these language appreciate the importance of representing exceptional situations as objects. However, in adopting these concepts, they have left out restarts --- a key piece of the puzzle.

When you raise an exception in Python, or throw one in Java, you are still just performing an immediate and blind transfer of control to the innermost available handler. This leaves out the rich experience that Common Lisp offers to perform actual reasoning about where to return to.

The Common Lisp condition system disconnects the ability to return to a particular place in the program from the necessity to do so, and adds the ability to "look before you leap." In other languages, if you create a possible place to return to, that is what will get used. There is no ability to say "If a certain kind of error happens, this might be a good place to return to, but I don't have a strong opinion ahead of time on whether or not it is definitely the right place."

The Common Lisp condition system separates out three different activities: describing a problem, describing a possible solution, and selecting the right solution for the right problem. In other languages, describing a possible solution is the same as selecting that solution, so the set of things you can describe is necessarily less expansive.

This matters, because in other languages such as Python or Java, by the time your program first notices a problem, it already will have "recovered" from it. The "except" or "catch" part of your "try" statement will have received control. There will have been no intervening time. To invoke the error handling process IS to transfer control. By the time any further application code is running, a stack unwind already will have happened. The dynamic context of the problem will be gone, and with it, any potential intervening options to resume operation at other points on the stack between the raising of the condition and the handling of an error. Any such opportunities to resume operation will have lost their chance to exist.

"Well, too bad", these languages would say. "If they wanted a chance, they could have handled the error." But the thing is, a lot of the business of signaling and handling conditions is about the fact that you only have partial knowledge. The more uncertain information you are forced to supply, the more your system will make bad decisions. For best results, you want to be able to defer decisions until all information is available. Simple-minded exception systems are great if you know exactly how you want to handle things ahead of time. But if you don't know, then what are you to do? Common Lisp provides much better mechanisms for navigating this uncertain space than other languages do.

So in Common Lisp you can say "I got an argument of the wrong type. Moreover, I know what I would do with an argument of the right type, I just don't happen to have one or know how to make one." Or you can say "Not only do I know what to do if I'm given an argument of the right type (even at runtime), but I even know how to store such a value so they won't hit this error over and over again." In other languages, if the program doesn't know this correctly-typed value, even if you (the user) do know it at runtime, you're simply stuck.

In Common Lisp, you can specify the restart mechanism separately from the mechanism of choosing among possible restarts. Having this ability means that an outer part of the program can make the choice, or the choice can fall through to a human user to make. Of course, the human user might get tired of answering, but in such a case, they can wrap the program with advice that will save them from the need to answer. This is a much more flexible division of responsibility than other languages offer._

<comment><USER2> Am I allowed to think the described use case less than compelling?

It's especially not compelling that the caller passed the wrong type, the called function would like a different type and somehow a different piece of code would know both end of the situation and fix it instead of the caller or callee.

It all seems like an artificial and convoluted use case.

Software design tend to know if they'd like to abort (throw) or report (callback) statically. Conditions may be general, but they seem to me to mostly allow unnecessary open-ended complex design.

If the supposed gain is that a single system can do it all, I again don't feel it is a convincing argument. In fact, I tend to prefer a one-goal system, where different use case are easily differentiable because they are different. IOW, that throwing an exception, calling a callback, sending a signal or converting a value should look different is a plus.

This is something I've noticed: one starts with a rigid design, then adds abstractions. But one reach a point over over-abstracting where the design becomes uncomprehensible because it is so generic that it becomes meaningless.

<comment> phoe-krk Sure. The type-error example shown here is easily fixable by languages which utilize static typing and therefore make invalid code uncompilable, but it has the advantage of being easily understood by almost all programmers.

A more contrived example would be a situation in which some piece of data (e.g. a worker's monthly timesheet report) is passed between modules of a programming system, but the receiving module, upon performing validation, discovers e.g. that the employee was working during a holiday.

Handling that situation is hard, since there are multiple ways of handling it, each of them valid in its own specific context. If the employee is in another country where that day is not a holiday, we should proceed without any other actions. If the employee has an agreement with their manager that they are having crunch time, then the system should proceed after applying overtime payment. If the employee is on a flexible time schedule, we should proceed and log this somewhere else; if the employee has no justification for that overtime, we should abort and signal an error; more examples follow.

In other words, when we signal the condition, we do not have full information about what should happen to it. We have the question "What should we do with this timesheet?" and the answer to that question is "It depends."

It is possible to model this situation by a condition type named e.g. EMPLOYEE-WORKING-DURING-HOLIDAY, and instances of that condition type being signaled inside the programming module. We create a dynamic environment where the proper handler routines for EMPLOYEE-WORKING-DURING-HOLIDAY are established, and we call the module's validator function inside that environment.

This process fully decouples the act of signaling a condition from the act of choosing _whether_ to handle that situation and also from the act of choosing _how_ to handle that situation.

One can (and should) document the condition type in the design specifications, and also describe functions that are allowed to signal it.

<comment><USER2> I'm afraid to sound like a negative type, but to me this example is simply a callback?

The described EMPLOYEE-WORKING-DURING-HOLIDAY is akin to a system has a slot to register a callback (or signal which can be connected to receiver, to use a Qt-like design) which can handle the situation or decide raise an exception.

Again, I understand that it might be attractive to have a single unified system to handle the different possible situations instead of separate systems. I find it hard to imagine a case where the decision to be an exception-like, callback-like or restart-like is chosen dynamically at run- time by any or all participants. And like I said, I' d be afraid that if such a case come up, it would make understanding the design harder, not simpler.

For example, as much as Qt signal/slot mechanism is powerful and flexible, I've found that when used fully, it makes understanding the code hard because it becomes impossible to know what will happen when a signal is raised because the handling is so well uncoupled.

<comment><USER3> They are callbacks, but when they return they don't return to you. Instead they return back up the stack to whoever called the function that signalled the condition.

<comment> phoe-krk > Instead they return back up the stack to whoever called the function that > signalled the condition.

Not necessarily. They may return to _any_ point on the stack that has been "announced" as a valid return point. One can compute a list of these return points, choose which one to utilize, and under which conditions.

That's what constitutes the power of restarts (and non-local exits) in Common Lisp.

</comment></comment></comment></comment></comment></comment><comment><USER4> For those unaware, Common Lisp exception handling is heads and shoulders above almost any other programming language: Imagine having your program crash in the middle of a function, being able to inspect the call stack to find the bug, fixing it, then completing the function call from the middle of the function, at the exact point where the exception happened, with the fix in place.

<comment><USER5> This seems really valuable for development, but is there a way to use this in production systems? Say a user hits a bug in a CL web app. Could I write an exception handler that (1) immediately returns a 500 error page and (2) persists an image somewhere so that I could fire it up later and have the debugger ready at the offending point?

<comment> phoe-krk I think that it's possible. Immediately returning a HTTP 500 is easily doable, and you should be able to fork the Lisp process, continue serving requests in the parent, and save stack information (such as function parameters, etc..) and dump the Lisp core for further analysis in the child. (Do note, however, that this process breaks all FDs, which includes open files and network sockets.)

<comment><USER6> Depending on how the HTTP library works, one might be able to return an error to the user, but preserve all the other call state in an open thread, and later on join it from an interactive debugger … perhaps even a Lisp debugger running in a Web browser!

<comment> phoe-krk That's doable. Common Lisp has a programmable debugger hook which allows for implementing one's own debugger - also, possibly, as a web application. And for situations where the standard debugger hook is not enough (e.g. BREAK or INVOKE-DEBUGGER), one can use [https://github.com/phoe/trivial-custom- debugger](https://github.com/phoe/trivial-custom-debugger) to completely override the system debugger with a custom one.

</comment></comment></comment></comment></comment><comment><USER7> The condition system is often hard for non-lisp people to understand as the best they've had in the past is a core dump or a c++-style exception system. The main problem for me with those is that by the time you see the exception the state has already been destroyed. This is the problem with core dumps as well: all your files and network connections have been closed. The only alternative is to use a debugger which is a high overhead situation.

The roots of condition system evolved from two related hacker environments: the ITS system at the MIT AI lab and the lisp machines (both CADR and its descendants and the PARC D-machines) as well as influence for the Smalltalk folks.

In ITS what is called the "shell" these days _was_ the debugger. If your program signaled an error you were immediately in the debugger and could debug, just exit, or Force a core dump. This was the routine way to interact, even for non-programmers. The lispm did the same. Debugging was a lightweight operation.

So it was natural in the 80s to develop a system that formalized this mode of operation. Because an exceptional situation by definition requires greater knowledge than is available _in situ_. When you catch an error in java or can++ it's too late to look at the state of the object that caused the error without standing on your head and possibly redesigning the try block say to allocate something on the heap that can be passed to the error (which means no more RAII etc etc).

In addition, try/catch typically puts the hand lin too close to the site of the problem for you to be useful; if not, by the time you get the exception there's not much you can do but terminate the calculation politely.

<comment> phoe-krk > The main problem for me with those is that by the time you see the exception > the state has already been destroyed. This is the problem with core dumps as > well: all your files and network connections have been closed. The only > alternative is to use a debugger which is a high overhead situation.

This seems like two core issues with understanding the condition system. First, the currently popular exception systems always destroy the stack by unwinding it, allowing the programmer to debug only dead remains instead of a living program; second, debuggers are bolted on top of programs instead of being their internal parts, which gives many people an impression that using them as an integral part of the whole programming lifecycle is inconvenient and unnatural.

The condition system in Common Lisp solves both of these issues, which IMO, paradoxically, contributes to it not being well understood outside Lisp circles.

</comment></comment><comment><USER8> This book looks great!

I tried to implement this in Ruby with a gem about 6 years ago and got really close. If anyone wants to know more about this, but is more fluent in Ruby, you might find this a good jumping-off point. There's a good explanation in the README.

      https://github.com/michaeljbishop/mulligan

Why did it not work in the end? Because even though I was able to implement an error-recovery mechanism that wouldn't pop the stack, it still triggered all the `ensure` statements that were up the stack. It was still a valuable exercise. I'd welcome this addition in any exception-based language.

<comment> phoe-krk Thanks for that link! I'll include it in the book.

</comment></comment><comment><USER9> Fun trivia fact: Rust had conditions at one point. They weren't really used by anyone and so ended up getting dropped.

<comment> phoe-krk The book mentions that fact. The commit that removed them (along with the rationale) is available at [https://github.com/rust- lang/rust/commit/454882dcb7fdb03867d...](https://github.com/rust- lang/rust/commit/454882dcb7fdb03867d695a88335e2d2c8f7561a)

<comment><USER7> Those reasons seem more rust-specific than being a general reason to avoid restartable conditions — as the commit message acknowledges at the end.

<comment><USER9> They're also "2014 Rust" specific; Rust changed a bunch between then and 1.0. Which doesn't mean they still wouldn't apply, just it gets harder for anything earlier than may 2015.

</comment></comment></comment></comment><comment> dan-robertson A problem I don't have a good answer to is how to extend conditions (or even exceptions) to async programming models.

Two problems are:

1\. some code may fail multiple times (with non-async code, once an exception is caught the program can't throw another one from the same dynamic extent of the try block; similarly once a restart is invoked and control is transferred, a condition won't be signalled from the same dynamic extent where the restart was bound (for the purpose of this clause, we consider a retry restart to mint a new dynamic extent to bind the restart in again after retrying))

2\. Some computation may happen after you don't care about its result because a parallel dependency has failed. E.g. suppose you have some rate limiter where you pass an async function, get a promise for it's result, and the rate limited will queue your function to be called soon but with the condition that it will only allow say 5 calls to be in flight. Now you have some resource- downloading function which puts many separate download requests into the ratelimiter in parallel, and combines the results in such a way that the whole download fails if any request fails. But now if an early request fails, your function will continue trying to download all the other resources even though it doesn't care about the result now that it has failed. You could imagine having a way to cancel promises and maybe you would be clever and write really solid programs and never have issues but to me this seems to be inviting very difficult to debug problems (just like expecting any thread to be killed at any random point (or at least a bunch of different points) would make correct multithreaded programming harder.

Perhaps a more succinct description of problem 2 is that unwinding the "stack" isn't well-defined with an async programming model because "stack" doesn't really mean the call stack from the scheduler you whatever bit of async computation you happen to be doing, but rather the combined dynamic scope from everything that started the computation and is currently awaiting its completion.

A related and, I think, very useful thing to have is a way to represent computations which may signal conditions or be restarted. I think CL doesn't have a great story for this (threading isn't really a part of the language though). An example use case would be some program which has to process some stream of events. If it gets stuck on one or some, you may want to continue processing the rest of the events while deciding what restart to invoke for the problematic ones. Perhaps an effect system could help with this.

<comment> phoe-krk I'll be frank: my book does not touch this topic in the slightest, and this is an open question. Common Lisp does not have any asynchronous features built in and, as I've said in some earlier comment, the condition system is fully synchronous.

This topic is still waiting to be explored, either with an extension of Common Lisp or a completely different language that permits asynchronous programming with an adaptation of the condition system to this programming paradigm.

</comment></comment><comment><USER10> I tried to buy (pre-order) the book. I created an account on the Apress site as described in their help section.

There is no link to buy the book. Sigh.

<comment> phoe-krk It is an upcoming book, as the title describes. It will be available later in the year.

<comment><USER11> Amazon generally has a "pre-order" option. If there was a pre-order option, I also would order your book. By the time your book is in print, I will have forgotten about it. Fascinating topic; nice to see good coverage. I always felt that callbacks and exception handling left a little something to be desired. It looks like you've addressed that.

When your book is in print and available for sale I hope you post again here as a reminder.

<comment> phoe-krk The pre-order option is there! [https://www.amazon.com/Common-Lisp-Condition- System-Mechanis...](https://www.amazon.com/Common-Lisp-Condition-System- Mechanisms/dp/148426133X)

Thank you for the kind words; I hope that the book suits you well once it's out.</comment></comment></comment></comment>


Demand Media's IPO A Hit, Stock Is Up 39% (DMD) - <AUTHOR> http://www.sfgate.com/cgi-bin/article.cgi?f=/g/a/2011/01/26/businessinsider-demand-media-stock-price-2011-1.DTL <comment><USER2> Is wanting to put Demand Media out of business a noble goal?

By creating a service with better content of course.

</comment><comment><USER3> The tech bubble is real.</comment>


You cannot cURL under pressure - <AUTHOR> https://blog.benjojo.co.uk/post/you-cant-curl-under-pressure <comment><USER2> I do find myself using wget to download things because I don't have to remember the curl option to follow redirects, and wget saves the file using the same name as the last bit of the uri.

<comment><USER3> curl follows redirects, `curl -O` is functionally identical to wget.

Unless I'm missing something in your statement.

<comment><USER4> > curl follows redirects, `curl -O` is functionally identical to wget.

No it's not :)

You need to `curl -LO`. See for example github releases:

      curl -LO https://github.com/S2-/gitlit/releases/download/v1.4.1/gitlit-1.4.1.tar.gz

downloads the tar.gz, while

      curl -O https://github.com/S2-/gitlit/releases/download/v1.4.1/gitlit-1.4.1.tar.gz

will download an html file.

Even better would be to use `curl -LOJ`, so if the filename is not in the url, but in the `Content-Disposition filename` http response header, curl would get the filename from there.

<comment><USER2> Pretty good overview of why I just use wget for such things.

</comment></comment></comment></comment><comment><USER5> Just FYI, there's a way to get to the QEMU console with a certain keyboard shortcut. There could be potential for mischief (if you are logging the sessions look at the one that ended just now with "too much data written to the terminal", that was me trying to attach the host's /etc/passwd as a raw disk image to the VM).

<comment><USER6> Heh, I was just trying to do the same:

[https://sr.ht/O2oy.png](https://sr.ht/O2oy.png)

Ben: you can fix this by adding -monitor none to your qemu command line.

<comment><USER5> Even with that disabled I still wouldn't trust it (QEMU devs didn't originally plan for its stdin to be attacker-controlled, so there could be subtle bugs even with monitor disabled - remember the GRUB bug where you could bypass the password with specific keystrokes). I would've personally made it to simulate a serial port to the guest and the browser-based console being connected to that.

<comment><USER6> Yeah, that would be wise.

</comment></comment></comment></comment><comment><USER7> Cool, but I think spawning VMs on server is overkill for that. It should be possible to build cURL with Emscripten with fake socket interface to verify requests.

</comment><comment><USER8> Why boot many VM instead of saving the state and restoring from there?</comment>


Proof point on why resumes are not an effective way to hire engineers - <AUTHOR> http://blog.hackerrank.com/heres-what-happens-when-you-stop-using-resumes-to-build-engineering-teams/ <comment><USER2> Yeah, I think we have all been there at one point. Spending hours tweaking every single line in a resume to make it match the job description perfectly.

It just doesn't work for people that come from different backgrounds. This story offers some hope.

Even though he's from hardware, and his programming experience dates back to the '70s, he was able to prove his skills by solving a coding challenge.

I'm working on hardware right now along with software, and I'll have to be careful when I apply for jobs in the future.</comment>


Constraint programming in Python - <AUTHOR> http://uswaretech.com/blog/2009/03/constraint-programming-in-python/

<comment><USER2> More info:

The article is an introduction to Constraint Satisfaction Problems (CSP's). <http://en.wikipedia.org/wiki/Constraint_satisfaction_problem>

A very rudimentary demonstration of this: <http://aispace.org/constraint/sample2.html>

Norvig implemented a quick and dirty version of this for his sudoku solver: <http://norvig.com/sudoku.html>.

Note, while you _eventually_ end up just telling a CSP what you want, there's a plethora of algorithms to solve these constraints.

</comment><comment><USER3> I think the example cheats _a lot_ by assuming the solutions have to be positive integers. Is there a mechanism to tell the system "a and b are integers", and if so, could the system still solve the simultaneous equation?

<comment><USER4> About solving systems of simultaneous equations, I don't know if this particular solver can do it but many solvers can by using Gaussian Elimination from linear algebra.

<http://en.wikipedia.org/wiki/Gaussian_elimination>

</comment></comment><comment><USER5> This is basically logic programming. If you really want to do something like this, you are far better off just using a logic language like prolog and saving yourself the trouble.</comment>


Raft Is So Fetch: The Raft Consensus Algorithm Explained Through Mean Girls - <AUTHOR> https://www.cockroachlabs.com/blog/raft-is-so-fetch/ <comment><USER2> Also, if you never watched Mean Girls and want to know what all the fuss is a about, look at this article as Mean Girls as explained via the Raft Consensus Algorithm.

</comment><comment><USER3> I guess she finally made fetch happen

</comment><comment><USER4> I didn't realize this is what I was looking for all my life

</comment><comment><USER5> I wish more protocols and algorithms were explained this way</comment>


Apple Watch – Guided Tours - <AUTHOR> http://www.apple.com/watch/guided-tours/ <comment><USER2> This is pretty un-Applish video but after watching it I'm now thinking _may be_ I would have some use for this... Including second button in watch doesn't seem to make any sense whatsoever consider traditional minimalism Apple wants to achieve. I also love how every video has so far avoided to showing how to do text entry in case dictation isn't working well.

</comment><comment><USER3> Is it just me or does anyone else think that moving the crown with your finger looks cumbersome.</comment>