PayPal nears deal for Braintree Payments - <AUTHOR> http://blogs.wsj.com/digits/2013/09/22/paypal-nears-deal-for-braintree-payments/ <comment><USER2> I'm CEO at Braintree. I'm not going to comment on any of the rumors that are being circulated. I will tell you that we won't do anything that would compromise our product or our service. We are all fully committed to that. More on that here --> [https://www.braintreepayments.com/blog/more-committed- than-e...](https://www.braintreepayments.com/blog/more-committed-than-ever)

<comment><USER3> > I will tell you that we won't do anything that would compromise our product > or our service.

Wouldn't be the first time someone said that prior to being acquired, only to realize later that they do not have the influence over upstream decisions that they imagined they would.

<comment><USER2> I'm no babe in the woods. I've been through multiple acquisitions in the past as well as multiple funding rounds. With either you run risk of meaningful changes for employees and customers if you don't choose well and structure properly. Lots of founders and CEOs take the cop-out of "I didn't know." You won't find any of that here.

When I give my commitment and my word that we won't do anything that would compromise our product or our service, I do so with eyes wide open. Again, I'm not making any statement about the rumors that others are fueling. However, I do want to be very clear about our principles and the fact that everything we do will be driven by our commitment to deliver great products and fantastic service to our customers. That means I'd have to be very confident in our ability to do that for any path we choose – with no cop-out of "I didn't know". There will be no deviation from that – you have my full commitment on that.

<comment><USER4> I am an extremely loyal Venmo user (I generally make people sign up if they want fast payment from me, and don't feel bad since everyone I have onboarded has become a loyal user). Thanks for coming in here and talking about this, since I'm not a huge PayPal fan and definitely worried that this type of move could break what I love about Venmo (if it happens). Keep up the good work on Venmo, it's really been a huge improvement in my life, from buying movie tickets, to splitting checks, to letting me use my rewards card to make big purchases for a group and instantly get paid back since the mobile implementation is so good.

While you are here, one interesting positive I could see from joining up with PayPal is letting people use Braintree without a merchant ID (the main drawback of Braintree, I run a Shopify store for someone and can't get Chargify set up on Braintree because of this).

</comment></comment></comment></comment><comment><USER5> I would love to hear DHH's thoughts on this because:

a) He recommended Braintree from Day 1 as an interesting payments company.

b) He liked that they were Bootstrapped.

c) They took a lot of funding and that seems to have gone sour.

d) They are being acquired - in what looks like a desperation sale.

e) They are being acquired by Paypal - which I am sure I have heard him hate on.

If he will talk publicly about this...that would be quite interesting.

I imagine now, he may consider moving all his payments to Stripe.

<comment><USER6> Interesting - can you provide sources for b, c, d? In particular, isn't b) and c) contradictory? Just want to read more on this - not trying to be adversarial.

<comment><USER7> BrainTree has been bootstrapped since it's beginning until October, 2012 when they raised $35 million. And the guys at 37 Signals sure love BrainTree since, that is what they use to process payments for 37 Signals. Also, BrainTree was featured in their famous 'Bootstrapped, Profitable and Proud' series [http://37signals.com/svn/posts/2800-bootstrapped- profitable-...](http://37signals.com/svn/posts/2800-bootstrapped-profitable- proud-braintree)

<comment><USER5> Thanks for providing that link...that's what I was remembering, but couldn't find it.

</comment></comment></comment></comment><comment><USER8> But wont most of Braintree's customers jump ship rather than deal with Paypal? They're effectively killing it by buying it.

<comment><USER9> No. That line of thinking is incredibly tired.

<comment><USER10> I think he's got a point - users won't jump ship because Braintree (and Venmo) are now PayPal products, they'll jump ship because PayPal ruins them with fees, long payout times, etc...

<comment><USER11> If I were a Braintree customer I'd jump ship now before things get bad. Why wait? PayPal have a long history and are a known entity. There's no reason they wouldn't turn Braintree into something that feels like a PayPal company shortly after the celebrations are over and the ink is dry.

If you're a Braintree customer, jump ship while times are good before the storm arrives.

<comment><USER4> Stripe is about as good as Braintree in my experience (at least in terms of online payments processing and powering a shopping cart), and has fantastic customer service. But if Braintree is working, why switch now? Stripe is really easy to integrate if you have to later.

Braintree kills its competitors in P2P payments though. Venmo has been a huge improvement in my life.

<comment><USER11> Why wait until things get bad? That's like being in an area where there's a real tsunami warning and saying "hey, it's calm now ... I'll just wait until the waves get here before I leave!" The waves will come and you'll be caught off guard.

If PayPal buys Braintree it's likely the PayPal culture will rub off and they'll stop being the great company they are now. This is the reason I'd dig my well before I'm thirsty and switch to a company that doesn't appear headed for a beheading by PayPal.

<comment><USER4> That's not a good analogy. Switching from PayPal to Stripe is currently very easy (I did it a few weeks ago). Nothing like fleeing an area with a tsunami warning. When switching costs are that low, why not stick with something that is working?

<comment><USER11> Because what happens when your Braintree account gets arbitrarily frozen under PayPal's risk management policies? It might be working today, but that doesn't mean the rug won't be pulled from out underneath you, and at that stage there will be real consequences for your business, i.e. frozen funds and drama. Then you've got to do the whole migration while putting out a fire.

If you wouldn't want to do business with PayPal, you probably wouldn't want to do business with Braintree if it's owned by PayPal. A different brand doesn't mean that they're not being operated by the same masters.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Too bad. I had nightmares with Paypal and always considered Braintree as a viable alternative. I'll be switching off soon.

</comment><comment><USER13> One day a payment company will refuse to be acquired and give paypal a run for their money. Paypal fees are just too expensive and I have to believe there's a company who will want to disrupt and take on Paypal rather than succumb to them.

<comment><USER14> It might be that this is indicative of the core value of Paypal's fraud prevention intelligence. All the smart people I know who work at Paypal are working on fraud prevention (even the analytics guy I know there admits to providing more data to the fraud prevention teams than anybody else).

I wouldn't be very surprised if Braintree decided to be acquired because they learned that doing "enough" fraud protection requires the sort of fees that Paypal charges – _plus_ a dataset like eBay to mine for patterns and to instrument up for real-time triggers.

Thinking about it (as in, this is not some long-held considered belief, just some random thought that's just popped into my head), it'll kinda surprise me if anyone smaller than Paypal/eBay, Amazon, Facebook, or Google, will be able to compete longterm as a payment company. If you don't have firehose-sized transaction data to monitor (Paypal/Amazon) or strong social network signals about identities (Facebook/Google), I doubt you're going to be able to create fraud protection as effectively as those players, and that's going to cost you and your (non-fraudulent) customers and be reflected in the transaction fees you'll end up non-competitively charging.

Random thought number 2 – I wonder if there's now some opportunity to start up a non-US based payment company, and lobby for privacy law changes in the wake of the post-Snowden knowledge about how the PRISM-linked companies are mis- using personal data, especially of "non US persons"? I wonder how hard you'd have to push the Brazilian government to make using PRISM-linked or US based companies as payment services illegal - for domestic privacy reasons? (Unfortunately, I suspect the opportunities for me in Australia to lobby for laws protecting Australian citizens from surveillance by the NSA won't get any support at all from our in-bed-with-and-beholden-to-the-US government.)

<comment><USER15> There could be ways round the big-data-required problem. You could charge different transaction fees depending on how good your data is on somebody and allow them to provide data to improve your confidence in them. Or require deposits from people and return them over time.

<comment><USER14> That's a good idea - but I suspect it'd be a much harder sell to end user merchants (and their web developers).

Explaining "our fees are based on your customers fraud risk, only 0.9% + 25c per transaction for people who've liked your facebook page and have more than 100 facebook friends and an account more than 24 months old, up to 5% + $1 per transaction for people using TOR or coming from ex-Russian-state ip addresses" isn't going to go down so well as "Paypal costs 2.9% + 30c/transaction and works globally in any currency, you can probably get half that rate from you own bank if they'll give you an internet merchant number - but they'll probably only give you local currency transactions."

<comment><USER15> Agreed. It might be easier to charge the customer rather than the merchant. If as customer I could choose from a list of payment providers and get a different fee from each one then the competition would be very transparent. Plenty of barriers to overcome to get to that point though.

</comment></comment></comment></comment></comment><comment><USER16> Congratulations to the shares and options holders, but that is too bad. My first introduction to Braintree was this Profitable & Proud article from 37signals[1]. Braintree's principles of providing exceptional service both to business people and developers, their work to improve the overall industry, and their concern for the people employed by them will probably not survive being merged into PayPal.

1 [http://37signals.com/svn/posts/2800-bootstrapped- profitable-...](http://37signals.com/svn/posts/2800-bootstrapped-profitable- proud-braintree#all_comments)

</comment><comment><USER17> I'm so glad I didn't use Braintree now. Thank you Stripe for opening the UK Beta at just the right time back when.

</comment><comment><USER18> I think it's great for braintree if they get acquired by PayPal. Unfortunately, I won't use their service since PayPal is one of the worst run companies I can think of aside from eBay. The CEO of Braintree doesn't control the company, the majority shareholders do (and in this case it sounds like it will be PayPal).

<comment><USER4> >> PayPal is one of the worst run companies I can think of aside from eBay.

Probably related.

</comment></comment><comment><USER19> Seems like an inevitable downgrade to me - real pity.

Also, as always, less competition means a worse overall offer for devs.

</comment><comment><USER20> As with all acquisitions, if they give them a healthy amount of autonomy and give them more resources than they would've had as a startup, then I can see this going pretty well. Huge and improbable "if", but it's worth pointing out.

</comment><comment><USER21> PayPal and Square are engaged in a pitched battle to win mobile and small-shop business. Square does about 10% of PayPal's volume.

</comment><comment><USER22> If stripe was a public company, their share price would increase today and even more-so when this is official.

</comment><comment><USER23> Good thing i stayed away from braintree, paypal be a perfect match for them considering both are shit

<comment><USER24> Thank you for that low brow insight gem.

<comment><USER23> My business nearly went under because of SHITPAL

how is that for an insight?

<comment><USER4> Braintree is much better.</comment></comment></comment></comment>


Ask HN: Did you learn to hate Windows? - <AUTHOR> I've used Windows since version 3.1 (~1992) and really loved it. OK, maybe not the batch files, I think I always hated them. Except for a brief excursion to OS/2 and some grumbling about "activation" in XP, I've stayed with it until Windows 8. Windows 7 was probably the last version I really liked.
Windows 8 was bad but you could kind of ignore the dark side.
In Windows 10 this changed:
- Windows reboots without asking! Since when is this considered acceptable? Did you remember to save everything, always? Start a job, step away for a minute and yes, it's probably rebooting.
- You have no control over updates, even for 'power users'. They are downloaded and updated without asking. Remember to check for updates before you do a presentation.
- To add insult to injury, after seemingly every update some (most?) of my settings are removed. I really like to customize Explorer ... not anymore.
- Edge ... couldn't they just accept when I say no?
- Spying or 'Telemetry' as they call it. Not OK.
- Also whenever you find a way to make it behave (like controlling updates), the next update will probably remove that functionality.
This no longer feels like "My Computer". And I hate it. <comment><USER2> After supporting everything Windows under the sun since 3.11 I've grown to loathe it. I've been working with Mac OS and mostly Linux for the past few years and when I can avoid it I will not touch Windows anymore. Mostly for all the reasons already mentioned but also because after getting used to the "freedom" in Linux I just feel trapped whenever I have to do something on Windows. The only positive thing I can see is the Windows Core edition coupled with (the still improving) Powershell, but it's still not the same.

</comment><comment><USER3> I started with 3.1 and it was vastly worse than the lighter WMs I used on UNIX. I became an almost full time windows user at work and it got parity with 98/XP. Still a sh...y system requiring full reinstalls every two years or so, to make it fast again. I quit in 2009, avoiding Vista. Ubuntu 8.04 was much faster than xp on the same hardware and required less clicks to do the same operations. All the sw I used could run on Ubuntu, never looked back. Videogames on a Playstatio :-)

</comment><comment><USER4> I guess you mean Microsoft and its desktop offerings, I will tell you why I hate MS 1) Loss of control of the hardware, initially one could use DOS to control hardware, access has been progressively denied 2) Stupid security, blocking programmes that you need and allowing viruses in 3) Updates, I have no idea why they are so massive and constantly needed 4) Dumbing down of the OS 5) MS users

100) etc

</comment><comment><USER5> I tried 3.1 for a couple of weeks and thought is was OK but not great, then I wanted to install TeX (emTeX) and didn't have the disk space for both, so back to DOS. By the time I could afford a larger disk I had discovered Unix and never looked back. My computer has always felt like my computer.

</comment><comment><USER6> I have up on Windows because of defender. Can't turn off. Registry hack let's me turn off till next patch. Then it's back. Current PC will be last windows PC I ever buy.

All I lose is games, but will stick to PS4 for games. For anything else my windows PC is dead to me.

</comment><comment><USER7> I've hated windows since Vista. But I was raised on Macs, so part of it was probably just unfamiliarity.</comment>


Startup Business Development Posts - <AUTHOR> http://life-longlearner.com/startup-business-development-posts/

<comment><USER3> I grabbed one at random and thought it was a pretty sleazy thing to do (my opinion only)

[http://life-longlearner.com/business-development-quick-trick...](http://life- longlearner.com/business-development-quick-trick-to-increase-cold-email- responses/)

<comment><USER4> I think it can be sleazy if done subversively, however it can be a less- abrasive than a regular cold call if intention/purpose is stated up front. Finding the right person in an organization can be hard, and it's much less of a waste of time for all parties if you find the relevant person quickly. It would also be important that you don't give the impression that the person referred to you believes the higher-up referred you because they endorse you.

<comment><USER3> The tip here, as written, suggests that it works because there is an implicit endorsement:

"As soon as your prospect sees you were referred by their superior, you become important. The likelihood they respond skyrockets. Put yourself in their shoes…what's worse than someone potentially wasting 15 minutes of their time? Blowing someone off who their boss wanted them to talk to."

</comment></comment></comment><comment><USER5> Great post (oops just said what you explicitly said not to in one of your posts)! My main takeaway from your articles was that most of these skills only come to people who very pro-actively develop them. As a college student, I used to think that what I needed to learn for my career would be eventually taught to me in college. Boy has that been wrong. This has been a pretty good kick in the behind for me to really start developing these skills if I ever want a shot at becoming a great entrepreneur.

</comment><comment><USER6> Ok, some of his stuff is really good, and some of his stuff would never have flown at all, and possibly been down right destructive.

Implying, but never confirming, that you have a competitor as an account - <USER2> certain businesses this can get you flagged and then black balled from the entire market.

But some of his other comments are pretty useful hacks.

</comment><comment><USER7> This are all very good resources. Even better than anything some _paid_ consultants know. But they are a bit generic, and enterprisey. Not a bad thing in itself, but it might tend to turn people off.

</comment><comment><USER8> Thanks for the post, I've been looking for this kind</comment>


Ask HN: Advice for starting a fashion brand? - <AUTHOR> My partner is a talented designer and wants to start their own fashion brand and I'm curious to see if any of y'all have advice relevant to this. Perhaps funding or marketing tips, book recommendations, etc?
Thanks!
Someone asked, "What makes the brand unique?" Here's my partner's answer:
> I create futuristic, gender neutral clothing for people who are looking for something other than the tired trends that get rehashed over and over again. It will be versatile enough to wear casually on the street or in a board room meeting. My target customer is the investment shopper who wants to create their own signature look and a reliable wardrobe without feeling pressured to buy more and more clothing each season. <comment><USER2> Tips from my personal experience. I've been into bridal fashion for 8 years now, have 3 street shops and work with a handful of international brands.

\- creating cool things without market appeal won't take you anywhere. so you need to test designs/products/ideas with your target audiences and see how they react. I found a good way of doing this by posting photos in Facebook and promoting them. Audience response varies from 10 to 1,000 likes, and we use that not only to decide which wedding gowns are catching more attention, but their attributes (style, color, luxury etc.)

\- don't mind about producing/making products yourself in the beginning. once you know what the markets at your reach are interested on, you can start buying and selling products from vendors. by doing this you can save energy ($) for more marketing/selling per se. as you get more into your customer's brains and know what they want, you should be able to see gaps in your vendor's collections. this is when you can start designing and producing your own products to close that gap.

\- find a good (and real) digital influencer. this was key to the first two years of my business. I found an influencer who was specialized into budget weddings. She helped me put my business on the map, which is not easy in the very beginning.

\- don't lose any night of sleep because of the competition. they are missing as much as you are in many things and there is room for everybody in the market. the main reason you are not selling is YOU, not THEM. this is key for stress management.

Good luck!

</comment><comment><USER3> Tips from my experience

* Whatever you do, try to talk to customers (not friends) as early as possible, and try to keep them in the loop when taking critical decisions. Frequent feedback can keep you on the right direction and also not lose morale. (Nothing like a long release cycle to invite self doubt and other self destructing emotions.) \- Try to find the venues (online or offline) where people who can be potential customers hang out and interact.

Apart from other recommendations below: (Blue Ocean Strategy, Expanded Edition: How to Create Uncontested Market Space and Make the Competition Irrelevant )[[https://www.amazon.com/Blue-Ocean-Strategy-Expanded- Uncontes...](https://www.amazon.com/Blue-Ocean-Strategy-Expanded-Uncontested- ebook/dp/B00O4CRR7Y)]

</comment><comment><USER4> Do your competitor research. Which is the closest brand offering what you're offering. What kind of brand voice do they use when communicating with their customers? What are they doing right? Are there any gaps in their designs that your brand can fill?

Talk to customers: \- Look up fashion subreddits to see what people are wearing, what they like and what they don't. \- Reach out to Instagrammers that fit your customer profile. If they have a large number of followers, see if they'd be interested in trying out a sample of your designs. \- Get an advertiser account on FB/IG and use their hyper targeting ability (geo, age range, favorite brands, etc) to get an idea of the size of your market

Test out different platforms that you'll use to sell. Shopify, Etsy, Squarespace etc all offer ways to sell online, but the prices, levels of service and reliability are going to vary.

Try to forecast your production volume accurately, so you don't accidentally take orders for items you no longer have inventory for.

</comment><comment><USER5> Just an idea. How about creating a social media "Brand" presence? Show off the fashion with it being unavailable. Get feedback, gauge who your audience is and put it in peoples minds. You can see how viable it is and gather feedback before committing to anything too big. Maybe offer social media models samples in exchange for advertising?

</comment><comment><USER6> The only think I know about this is that I believe Nasty Gal got caught out by not doing their clothes on a size curve: [https://www.quora.com/How-can-I- make-a-size-curve-for-clothi...](https://www.quora.com/How-can-I-make-a-size- curve-for-clothing-retail-so-I-can-determine-what-quantity-of-each-size-to- order)

</comment><comment><USER7> I think this lacks the "leverage" that excites a lot of the people on HN and which people (around here) believe make a business worth doing.

>"Startups offer anyone a way to be in a situation with measurement and leverage. They allow measurement because they're small, and they offer leverage because they make money by inventing new technology.

What is technology? It's technique. It's the way we all do things. And when you discover a new way to do things, its value is multiplied by all the people who use it. It is the proverbial fishing rod, rather than the fish. That's the difference between a startup and a restaurant or a barber shop. You fry eggs or cut hair one customer at a time. Whereas if you solve a technical problem that a lot of people care about, you help everyone who uses your solution. That's leverage.

If you look at history, it seems that most people who got rich by creating wealth did it by developing new technology. You just can't fry eggs or cut hair fast enough. What made the Florentines rich in 1200 was the discovery of new techniques for making the high-tech product of the time, fine woven cloth. What made the Dutch rich in 1600 was the discovery of shipbuilding and navigation techniques that enabled them to dominate the seas of the Far East."

>"If you want to understand startups, understand growth. Growth drives everything in this world. Growth is why startups usually work on technology — because ideas for fast growing companies are so rare that the best way to find new ones is to discover those recently made viable by change, and technology is the best source of rapid change. Growth is why it's a rational choice economically for so many founders to try starting a startup: growth makes the successful companies so valuable that the expected value is high even though the risk is too."

I recommend reading these:

[http://www.paulgraham.com/growth.html](http://www.paulgraham.com/growth.html)

[http://www.paulgraham.com/wealth.html](http://www.paulgraham.com/wealth.html)

and especially zero to one: [http://zerotoonebook.com/](http://zerotoonebook.com/)

First chapter is free online.

</comment><comment><USER7> Could you add what will be unique and innovative about the brand to the question? It will help with answering.

<comment><AUTHOR> Done!

</comment></comment><comment><USER8> What will be gender neutral about it? How will you account for the different body shapes of men and women?

<comment><AUTHOR> From my partner:

> Most garments don't have a lot of difference when it comes to body types. > They don't need to be constructed that differently (although they are when > you go to the mall). I also use very forgiving fabrics to account for people > who have more curves in their body. In general, my clothing has a more > androgynous fit. I also use fit models of various body types to ensure > flattering fits for varying body shapes. If required, a garment can be > constructed while taking into account breasts/hips and still maintain a > gender neutral aesthetic.</comment></comment>


The Skinny on Bad Parchment - <AUTHOR> http://medievalbooks.nl/2014/10/24/feeling-good-about-bad-skin/

<comment><USER2> Thank you - a really good post. With no real knowledge of books of the period I learned two or three things about why medieval books in popular culture are as they are. Wrapped in oilskin, heavy bindings with thick clasps, are a product of the parchment not some weird idea of securing books with locks. Throw in some notes on the Ecoasystem of parchment and a few mentally ill scribes and I am in hog heaven

Brilliant - I did not know I was intellectually curious about parchment till you piqued the interest and satisfied it in one go. A real HN post

Cheers

<comment><USER3> Agreed. Very enjoyable.</comment></comment>


Tell HN: Please downvote linkbaity headlines - <AUTHOR>

I can't believe how many "Please do/n't..." headlines I read today, and I didn't learn anything. <comment><USER2> But doesn't that still fulfil the request of anything that good hackers would find interesting?

</comment><comment><USER3> This is not Reddit, you can't downvote a story. You can flag a story or ignore it. You can downvote only comments.

</comment><comment><USER4> I don't learn anything from 99% of HN posts.. My suggestion is to do something else w/ your time.</comment>


Take a Deep Breath : Viz of PM2.5 concentration in various cities of the world - <AUTHOR> https://numbersofindia.com/stories/pm25 <comment><AUTHOR> Take a Deep Breath : A visualization of the concentration of PM2.5 in the atmosphere, in various cities of the world</comment>


Ask HN: Rate my Product : QueryCell - <AUTHOR>

Hi,
I've saved up 6 months worth of money and am taking time off to try and start a software company.
I have just released a new version of my app QueryCell and would love any feedback people have.
QueryCell is an add-in for Microsoft Excel that allows you to query Excel data using SQL, Generate SQL Insert statements, generate test data and mark rows.
http://www.querycell.com/
http://www.querycell.com/welcome.html (welcome is going to be the landing page for ads)
Thanks <comment><AUTHOR> Clickable Links

<http://www.querycell.com/welcome.html>

<http://www.querycell.com>

</comment><comment><USER2> Nice, However, a question raised in my mind. Are you targeting Excel's power users, such as analysts and accountants or software developers?

Since "standard" users are not going to learn SQL your market is narrowed to developers only.

You may add a GUI based Query-Builder such as can be found in MS Acess and MSSqlServer and other DB systems and by these you can gain more market share.

Build an easy to use wizard and let the end user choose between SQL mode and GUI mode.

<comment><USER3> > Since "standard" users are not going to learn SQL your market is narrowed to > developers only.

Power users aren't _that_ narrow a user base. There are an enormous number of data miners (analysts, integrators, etc.) out there who work in Excel because they must, or because they're used to it, or because that's the format that their data arrives in, or because it's a nice visual tool that allows them to easily inspect intermediate results---but who ultimately need to run reports across multiple large spreadsheets. SQL is astonishingly easy for such people, and I've watched dozens of data experts learn it from scratch (with help).

I'd beg you not to add wizards to your product, and instead focus on treating power users rather than being all things to all people. (Your syntax highlighting is good, and little red underlines on unparseable SQL would be good.) Trying to train users to use (or avoid using) SQL with wizards is a dangerous business for a piece of software to be in.

This looks incredibly useful. I'll check it out more thoroughly on Monday.

<comment><USER4> I agree 100%, I don't think it is wise (at least initially) to water down your product with wizards, etc. Focus on that niche and focus hard.

<comment><AUTHOR> Thanks for these opinions all.

I can see the arguments both for and against wizards and gui query tools.

On the one hand I personally agree with the jcdreads and viggity. These sorts of interfaces are very difficult to get right and dilute the SQL focus.

On the other hand a number of people have suggested going this way, so people do think it would be useful.

I have no immediate plans to go this way but I intend to be responsive to what customers request.

Cheers

<comment><USER5> Read up on Joel Spolsky's days at Microsoft trying to build a GUI code-builder for VBScript. Ultimate fail. Too complicated for basic users, too simple for power users.

</comment></comment></comment></comment></comment><comment><USER6> Brilliant idea. There have been so many times where I've been in Excel thinking "if only I could run SQL on this."

Only thing to concern yourself with now is how long before Microsoft implements this in Excel?

P.S. Great to hear an Aussie accent in a demo video!

<comment><USER7> _There have been so many times where I've been in Excel thinking "if only I could run SQL on this._

There is a Perl DBD for this. It doesn't run _in_ Excel, but you can run SQL queries on spreadsheet files.

</comment></comment><comment><USER8> I don't use windows or excel but if i did, i would be getting interested in QueryCell. I am going to pass the url along to people I know who do.

Does QueryCell work when excel is being run on a non-windows OS via wine? ( I assume not, but if it does, I know more people who might be interested ).

\--

Also, the video cut off for me in mid-sentence. I think you are missing the end. For me, it ended at with "if you would like to try query cell for free, feel free to download".

<comment><AUTHOR> Thanks SpooneyBarger.

</comment></comment><comment><USER9> You have a million dollar idea in your hands. If you get the promotion and customer care right, you'll be very successful. Especially if you incorporate tzury's idea. There are countless departmental "applications" that use Excel, and being able to query data directly solves a problem that many encounter at some point or another. It's usually frustrating enough, to get people to pony up money for it.

</comment><comment><AUTHOR> Thanks for the feedback all.

@smicallef

Yes the idea of Microsoft proving a similar functionality is scary, but I feel a little bit like "if they were going to do it they would have done it", also they have access to protect. But maybe I am in for an unpleasant suprise, certainly a risk.

@tzury

Yes there is an interesting marketing proposition here in my opinion. I can either market to heavy Excel users who don't use SQL yet or market to SQL users who occasionally find themselves using Excel. It's an interesting one. At the moment I am leaning more towards SQL users, they can immediately see the possibilities. hmmm.

<comment><USER10> You can get Excel to run SQL queries already, although it's more painful than your method. See e.g. bottom of [http://forums.whirlpool.net.au/forum-replies- archive.cfm/697...](http://forums.whirlpool.net.au/forum-replies- archive.cfm/697334.html)

I could see a lot of one-off usage (for occasional Excel users) and a few requests for a refund under the 30-day guarantee.

That said, it looks like it'd make the job a lot easier. The first thing I do when I get a big excel 'database' is convert it to something else!

</comment></comment><comment><USER11> Feature Idea: Compile to "Vlookup" or compile to VBA.

In other words: I build a spreadsheet with QueryCell, but I want people who don't have QueryCell to be able to use it.

So I hit "Compile", and the program generates standard formulas using hlookup/vlookup and/or VBA so that the spreadsheet works for those who don't have the Plugin. (Of course it adds a link to "Built with QueryCell" :)

<comment><AUTHOR> Thanks for the idea caffeine.

I don't quite follow though. To use querycell you load a normal Excel file into Excel. You can then open the QueryCell pane to query the regions of data in the open worksheet/workbooks.

The result sets returned from queries are then added to a new 'resultset' worksheet.

So as it stands you can pass around spreadsheets you have used with QueryCell to people without QueryCell.

Let me know if I misunderstand.

Cheers

<comment><USER12> No offense but if you're not currently implementing this the way the guy suggested you can make the product a ton better if you take his suggestion (I'm guessing you yourself aren't a power user, again no offense intended).

It sounds like what you're doing is generating a new worksheet and populating it with (static) data generated by running the user's SQL query.

This is fine for sharing static data but b/c you're apparently not using excel formulas in generating the 'resultset' worksheet (it's just raw data, again) the 'resultset' sheets aren't going to be auto-updating if the underlying data got changed (on the 'sourcedata' worksheet, if you follow).

If you can compile SQL queries into excel formulas that'll stay updated as data change this goes from an A to A+ produce.

You should start by looking at the documentation for Vlookup and Hlookup, as those are the built-in functions people use to (fake) selection.

<comment><USER11> Yep, exactly what I meant. Thanks for explaining it better.

<comment><AUTHOR> Thanks caffeine and frig.

I now understand what you is being suggested.

Yes it's true, that is not how QueryCell currently works.

I will have a think about this idea. My first impression is that it would be quite complicated to implement and get right but very powerful if done well.

Thanks Guys.

<comment><USER13> Another idea - viral marketing. You should at the bare minimum add a link in a cell under the result set so that the user who gets the result set created with QueryCell will know about it. You might consider a special landing page for those links

<comment><AUTHOR> Thanks again Amir, I appreciate all your ideas.

What do you think about this : <http://www.querycell.com/captionMe.html>

I need help with my Comic Ad.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Seconded - this is a million dollar idea! Well defined niche, great product, very useful, very catchy name and branding (totally straight forward) - can't get any better than this.

Not sure how hard it is to create a Mac OS X version as well, but that would probably not be the initial target audience.

</comment><comment><USER15> "87 rows in 3 seconds" - performance could be a problem. Last time i used Excel I thought that you can already run sql on the data and if you need to really do that sort of thing you'd just export to sqlserver and do it there. I think this idea is the wrong market. Those that know sql will use sql against sqlserver as I just described, and those that don't spend countless hours in excel trying to use formulas.

sorry, I prefer to like start up ideas but this one just doesn't seem to have any legs in my mind.

<comment><AUTHOR> Thanks for your honest opinion sfphotoarts.

I would say in defense that:

\- The return time doesn't scale with the number of rows returned. I have just run a query that queried 6 tables, invoked numerous string concatenations, included 2 MOD functions, 2 RAND functions and returned 22,000 rows, it took 11 seconds. This is not up to database performance of course.

\- There is a static overhead to running a query, and that's much greater in QueryCell than in a database directly.

\- QueryCell is not meant to replace databases, just make life easier for people working in Excel.

It was pretty much the 'countless hours trying to use formulas' that made me think about QueryCell.

Cheers

</comment></comment><comment><USER16> What I would need would be a simple way to auto-update some cells based off an SQL query on the rest of the data. Can your tool do this?

</comment><comment><USER17> This is awesome! Love the idea and the implementation looks really slick too. I had to work on a huge excel file before (like 400,000 rows) and I so wished to have an add-on to run a simple SELECT query.

Congrats on the bold move. I am in the same boat -- just quit my job last Friday and will be working on my startup. I wish you the best of luck!

Alex

</comment><comment><USER18> This looks really cool, I would definitely be one of your target market if I still worked at my job (which I quit half a year ago to focus on my own startup). I now use Apple iWork 09 almost exclusively, so as soon as you come out with a Numbers version, please let us know!

</comment><comment><USER19> It looks like a really great product, I might personally find some use for it.

When you're generating the table names, I think naming the table after the sheet it's on might be more intuitive than a single letter, especially when there's only one data range per sheet.

<comment><AUTHOR> Thanks for the suggestion, I will have a think about it.

The table names can be changed, you could click on the default letter name, 'A' for example, and rename it to SALES_NUMBERS for example.

I see the sense in using the worksheet name although there may be complications if there were multiple data regions on the same sheet or if the sheet name was long, as there isn't a huge amount of screen real-estate for the regions grid.

Thanks for the food for thought.

<comment><USER13> I like the idea, I sometimes need to work with excel and hate formulas and filters. I prefer sql and most of the time I don't export data from excel to a DB, I just grind my teeth and do some filtering and formulas in excel. some remarks:

1\. Perhaps you can let define the tables in the FROM clause like: FROM workbook1.xls~sheet2~A1:D4 AS table1

2\. Add an option to autohide the not selected rows instead of coloring the selected rows, this will give a condensed result set that the user can maybe copy and paste to another sheet.

3\. Don't worry about Microsoft competing - they might offer to buy you out.

keep focused! Good luck!

<comment><AUTHOR> Thanks for the ideas amih!

</comment></comment></comment></comment><comment><USER20> Great product. Hard to find doing Google search though. Need to get it to show up when typing "Excel sql", "Excel query", "sql in excel", etc. etc. I think if you do your sales will rocket. Good luck and thanks for a great product

</comment><comment><USER21> Looks like a good idea to me.

I don't work with Excel often enough to purchase but will keep in the back of my mind in case I have a future need.

Marketing advice: invest in a copy writer and voice actor and reproduce your video.

</comment><comment><USER22> Good idea.

You might want to get a professional PSD designer to sharpen the overall look. It has a template like look for design, though for this concept design might not be as important as selling it's functionality.

Good luck!

</comment><comment><USER23> I'm going to try it at work on Monday. If I like it, I'll buy it. You don't know how many times I've had to export a csv to do some sql on it, then import it back into excel.

<comment><AUTHOR> That's great to hear. If once you've taken a look you have any feedback, positive or negative, I would love to hear about it. The contact details are on the site.

Cheers</comment></comment>


Haskell, Monads and Purity - <AUTHOR> http://jelv.is/blog/Haskell-Monads-and-Purity/ <comment><USER3> I think that the misconception the author talks about happens because a noun is used for the properties of an object.

An adjective such as "monadic" can be used instead: "In Haskell, IO actions are monadic because the IO type has a flatMap (bind) operator and a unit (return) function which satisfy left identity, right identity and associativity".

All of the above are the properties (traits?) of the IO datatype. Monads (in Haskell) don't "exist" by themselves, they're just a property.

<comment><USER4> I think a part of it is a slight weirdness of Haskell typeclasses. In math, the noun "monad" refers to is a triple containing a functor and two natural transformations. The equivalent noun in Haskell would be the typeclass _instance_ for a particular type. However, because Haskell (basically) only allows one instance per type, you select different instances by choosing a different (possibly equivalent, as with newtype) type, and so there is some natural conflation that arises in the language people use to talk about these things.

The dynamic may be slightly clearer for semigroups. In mathematics, a semigroup is a pair containing a set and an (associative) operation on that set. In Haskell we say things like "ByteString is a semigroup" but that's short for "there is a semigroup where the set is all possible ByteStrings" and you assume the people you're talking to understand what the operation is because there is only one instance of Semigroup commonly defined for ByteString.

</comment></comment><comment><USER5> I think there's an important difference between saying Haskell uses monads to do IO and we use rings to do arithmetic. In Haskell, understanding monads helps you do lots of tasks more effectively, since so many data types are monads: IO, Maybe, lists, ...

In math, there are other uses for rings, but if you're using them, it helps to know a little ring theory. Similarly, if you want to use any of the other Haskell monads, it helps to know how monads work.

<comment><USER6> You say "I think there's an important difference", but then, you end up saying precisely the same things about monads and rings. What was the difference?

</comment></comment><comment><USER7> > This is why unsafePerformIO is unsafe: it's completely foreign to the > programming model

Maybe, although it is also not _type safe_ because Haskell doesn't have a value restriction for polymorphism. (or looked at another way Haskell's value restriction assumes that function application is a value).

<comment><USER8> And, by extension, we don't have a value restriction _because_ unsafePerformIO is foreign to our programming model. If it was actually part of the abstraction, Haskell would be a lot more like ML!

</comment></comment><comment><USER9> why, it is just an ADT which could be implemented in almost any language. Something like tagging a value with a type-tag and then define whole bunch of constructors and selectors, and then procedures which removes the tag, applies a given procedure and sticks the the tag to the result.

      (cons 'safe x)

OK, In Haskell this stuff could be type-checked, which means only that the arguments to functions and its return values are of correct type (tags are present).

But calling this a "safety" is a silly meme.)

<comment><USER10> Why is it silly? Haskell libraries derive a lot of safety benefit out of being able to type-check different kinds of effects. One example is the STM library which uses this property to prohibit IO within an atomic transaction. Since transactions may be aborted and/or repeated, it's important to ensure no interaction with the outside world takes place within them lest these effects be repeated.

<comment><USER9> Because it has nothing to do with safety, but with manipulating of specialized data-structures. "Instantiation of a value of a given type" in Haskell is what? Calling a "type-constructor" which is just what? Constructor - <USER2> procedure which returns a data-structure.

Now, how CL style type-tagging is fundamentally different form what Haskell does

What Haskell does in no more "safer" than if I do tag-checking at runtime. (That's why CL is called a strong-typed language). So this is why it is a silly meme.

The idea that compile-time checks is much better than runtime checks is also not obvious (Java's and other commercial languages nonsense about type safety aside - Java is no more safe than CL).

What is better - to clutter the code with explicit type annotation or clutter the code with explicit type-tag checking in the runtime code is another question.)

I personally love Lisp and Erlang with "everything is a pointer to a tagged value" semantics.

<comment><USER11> Safety as you're using is not the concept that Haskeller's refer to when they talk about the language. "Type safety" is a very precise term that refers to several proofs about the semantics of the language.

See: [http://jspha.com/posts/all_you_wanted_to_know_about_types_bu...](http://jspha.com/posts/all_you_wanted_to_know_about_types_but_were_afraid_to_ask/#formal- terminology)

<comment><USER9> OK. All I am trying to say is that there are different kinds of strong-typed languages, and neither one is "safer" or superior.

<comment><USER12> I don't think that's true, though. There _are_ "safer" languages (for the informal notion of safety we're discussing). You're free to argue that the safety you gain in one language is not worth the effort, but you cannot argue that every language is equally safe.

<comment><USER9> Why no? The technical term "type safety" as described in the link above, implies that each value has a type, this type doesn't change during the evolution of a program, etc. How does it differ from the guarantees we have in so-called strong-typed languages?

The fact that compiler is refusing to compile type-mismatching expression for a simple built-in types doesn't imply that it is "safer". Other languages, notably Lisp and Erlang will catch and signal the same error later, at runtime.

I am not a Haskell guru, but what I see, especially in the case of Monads, is an implicit type-tagging with additional tag - name it State, or IO, or Safe and then type-checking against them.

I cannot see the fundamental difference which gives that "extra safety".

<comment><USER13> >How does it differ from the guarantees we have in so-called strong-typed languages?

If you mean "dynamically typed" languages, then it differs in that they do not have types.

>The fact that compiler is refusing to compile type-mismatching expression for a simple built-in types doesn't imply that it is "safer"

No, it does not imply that. It means that.

>Other languages, notably Lisp and Erlang will catch and signal the same error later, at runtime.

Precisely. So if that piece of code was not executed, you do not know that it is incorrect. If that branch is only followed rarely, your incorrect code is out there in production waiting to blow up when it finally does run that branch.

>I am not a Haskell guru, but what I see, especially in the case of Monads, is an implicit type-tagging with additional tag

The article in question does a good job of explaining monads.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Haskell's rhetoric has always seemed a bit Pharisaical to me: "Though the runtime is impure, Our Code is uncontaminated by the taint of side effects".

<comment><USER15> I don't know what that word means, to me it has always seemed a bit silly. The whole point of software is its side effects, you will always have some. So instead of admitting that, you do a little dance to pretend side effects don't really happen in your program. It's very strange to me.

<comment><USER4> On the contrary, the whole point of software is its _effects_. They are only _side_ effects if you're not able to encode the effects in the type of the function. Haskell doesn't treat effects as _less_ important, it treats them as _more_ important by allowing (and, as a consequence, forcing) you to reason about them explicitly in compiler-checked ways. This lets you do great things like have STM transactions with a guarantee that retrying them won't screw anything up. It also lets you define your own kinds of effects that you want to track and plumb them through your system in a coherent way. And it lets you write code that doesn't care what kind of effects it's working with, and yet which can still be used in contexts like STM that need to apply restrictions.

<comment><USER16> What I'm not liking about this line of reasoning is that in practice Haskell seems to not go far enough[1].

Yes, you have to declare your effects. In practice that means that most of your code returns IO, and isn't constrained anymore. I don't know if this is a library feature, or an essential feature of the language[2], but it would be very interesting for example to put a GUI together by computing events in functions that returned an "Event" monad, widgets in functions that returned a "GUI" monad, database access in functions in a "DB" monad, etc. Instead, all of those operate on IO.

[1] A completely subjective assessment. [2] I've though for a short while on how to code that, but didn't got any idea I liked.

<comment><USER8> It's not clear that that's the distinction that makes the most sense. I think typing based on capability makes more sense than typing based on purpose. So you would have a type like FSRead and FSWrite which could only read and write from the filesystem, for example. (Ideally with a nice way to combine the two!)

Of course, you can do this as a library. In fact, this is an example use case[1] for Safe Haskell which also prevents people from circumventing your types with unsafePerformIO and friends.

Moreover, some existing libraries already take similar approaches. FRP libraries extract reactive systems (like events but also continuously changing signals) into their own types. A button gives you a _stream_ of type Event () rather than an explicit callback system using the IO type. Check out reactive- banana[2] (my favorite FRP library from the current crop) for a nice example.

Similarly, people use custom monads to ensure things get initialized correctly, which has a similar effect to what you're talking about. The Haskell DevIL bindings for Repa[3] come to mind because they have an IL type which lets you load images and ensures the image loader is initialized correctly exactly once.

Sure, in the end, everything will need to be threaded through IO and main to actually run, but you can—and people do—make your intermediate APIs safer by creating additional distinctions between effects.

[1]: [http://www.haskell.org/ghc/docs/7.8.3/html/users_guide/safe-...](http://www.haskell.org/ghc/docs/7.8.3/html/users_guide/safe- haskell.html#idp28666848)

[2]: [http://hackage.haskell.org/package/reactive- banana](http://hackage.haskell.org/package/reactive-banana)

[3]: [http://hackage.haskell.org/package/repa- devil](http://hackage.haskell.org/package/repa-devil)

<comment><USER16> That's great to know. Looks like I have a ton of stuff to read now.

</comment></comment></comment></comment></comment></comment><comment><USER17> I sighed at the title, but was glad that I read the first paragraph. Very well put!

I guess that I've got to read the rest of the article now too...

<comment><USER8> Yeah, this was more of a draft than a finished article. I didn't realize anyone was following my blog :P. It's a working title at best—it doesn't really reflect what I wanted to talk about... but then, I'm not sure the second half or so does either.

<comment><USER18> is all of the code meant to be invisible? :)

<comment><USER8> Oh, that's a weird bug with the fonts... which I thought I had fixed. Unfortunately, I can't reproduce it locally, so I'm not sure I can do much about it right now.

<comment><USER18> looks fine now</comment></comment></comment></comment></comment>


Write Less Code, Use More Tools - <AUTHOR> https://circleci.com/blog/write-less-code-use-more-tools/ <comment><USER2> I wholeheartedly disagree; write more tools, more code; own your skills.</comment>


Top Concerns When Choosing a Tech Stack for Your Personal Website - <AUTHOR> https://formcake.com/blog/top-concerns-when-choosing-a-tech-stack-for-your-personal-website <comment><USER2> Why not just host on a VPS? Like DigitalOcean, Linode, AWS, Azure? Also there are a TON more considerations for various "stacks" one could choose, you only focus on Java stacks, what about Python, Ruby, .NET, etc.</comment>


Fun vs. Computer Science - <AUTHOR> http://prog21.dadgum.com/221.html <comment><USER2> I don't disagree with the article, but I also don't know that pushing the boundaries of interactivity and "fun" are relegated to academia. Iterating on what makes things fun is (probably) highly unscientific and might be better left to people more focused on it directly, such as game programmers.

As far as interactive development of games goes, I still marvel at Bruce Hauman's demo[1] of "Interactive programming Flappy Bird in ClojureScript". I think the best hope of achieving what the author is suggesting is in the development of something similar, either direct REPL access to the game environment or DSLs embedded in the game engines (which already exist I'm sure). Outside of the big name engines, I'm curious about what existing options are (leaving out anything browser based because JavaScript is an obvious example), I know of LÖVE[2] but I'm not familiar with how "fun" games made in it are.

[1]: [https://www.youtube.com/watch?v=KZjFVdU8VLI](https://www.youtube.com/watch?v=KZjFVdU8VLI) [2]: [https://love2d.org/](https://love2d.org/)

</comment><comment><USER3> I can only speak for myself.

But using the most simple and correct abstraction to solve a problem makes programming much more fun.

For example, components are easier to work with than MVC.

Or reactive programming made taming realtime data streams much easier for me, than imperative programming.</comment>


Count the effective number of lines of code of a project - <AUTHOR> http://cloc.sourceforge.net/ <comment><AUTHOR>
      % cloc linux-3.2.1
        37595 text files.
        37127 unique files.
         3995 files ignored.

      http://cloc.sourceforge.net v 1.53  T=355.0 s (93.8 files/s, 39819.0 lines/s)
      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--
      Language                      files          blank        comment           code
      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--
      C                             16577        1555942        1573561        8036765
      C/C++ Header                  13614         316003         537441        1648074
      Assembly                       1252          41013          52412         252626
      XML                             142           2881            739          40365
      make                           1509           6296           6821          23851
      Perl                             41           3268           2592          15131
      Bourne Shell                     67            685           1552           3885
      yacc                              5            455            323           2979
      Python                           19            561            269           2605
      C++                               1            208             57           1524
      lex                               5            204            237           1328
      awk                               8             90             79            714
      Bourne Again Shell               30             75             56            450
      HTML                              2             58              0            378
      NAnt scripts                      1             93              0            372
      Lisp                              1             63              0            218
      ASP                               1             33              0            137
      m4                                1             15              1             84
      XSLT                              6             13             27             70
      sed                               1              0              3             30
      vim script                        1              3             12             27
      Teamcenter def                    1              0              2              5
      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--
      SUM:                          33285        1927959        2176184       10031618
      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--

</comment><comment><USER2> It's one of those things where you get excited that there's something so accurate, but also a little fearful of how management could use it to incent badly written code.

<comment><USER3> That depends on the management. There can be an incentive for comment/code ratio, with tooling to extract and measure metrics on the comments to make sure they're not trivial. Another possible incentive would be based on metrics of diffs, using a ratio of features added or bugs fixed against the number of lines added, where a smaller number of lines is better.

<comment><USER4> Why would you incentivise comments over self documenting code that clearly expresses the intent? Comments get out of date and aren't subject to static analysis.

There are plenty of techniques that let you write code that reads like an English specification rather than details of how it is implemented.

If you find yourself needing to write a comment, it's always good to think how you could re-write the code to say the same thing as the comment.

<comment><USER3> I see self-documenting code as another type of comment, not a replacement. The comments describe what the code is supposed to be doing, what business problem it addresses, etc, while the code documents how the code does what it does. Your comments shouldn't get out of date unless the purpose of the code changes. If it's just the implementation that changes, the comments should still apply.</comment></comment></comment></comment>


Voice Message Translator - <AUTHOR> https://play.google.com/store/apps/details?id=com.abacus.io.voicesms2019&hl=en <comment><AUTHOR> Voice message Translator</comment>


YouTube Wants You to Sit and Stay Awhile - <AUTHOR> http://www.nytimes.com/2010/05/30/business/30digi.html?partner=rss&emc=rss

<comment><USER2> If YouTube wants me to stick around, they can start by ditching those slide-in ads they're continually putting before my eyeballs, obfuscating the movie and forcing me to click the 'X'.

</comment><comment><USER3> I'm about as ADD as you can get, but I can watch Youtube videos for a long time without losing interest.

<comment><USER4> Perhaps that's precisely why you can watch YouTube videos for a long time?

</comment></comment><comment><USER5> Youtube doesn't even stream low res reliably for me on the end of a 4Mbit connection. It's probably different for other people, but Youtube is very much a single small hit site for me. Long-format video (or audio) doesn't work for me while tethered to a device.</comment>


Migrating to Python 3 with pleasure - <AUTHOR> https://github.com/arogozhnikov/python3_with_pleasure?utm_content=buffer88295&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer <comment><USER2> A comment about:

      printing tab-aligned tables without str.join:

      # Python 3
      print(*array, sep='\t')
      print(batch, epoch, loss, accuracy, time, sep='\t')

During performance optimization of some print-heavy data generation code, I have had to switch code which used print(sep="\t") back to using str.join(). Consider:

        import time
        import tempfile
        import random

        data = [[str(random.random()) for i in range(10)] for j in range(10000)]

        def print_join(out):
            for row in data:
                out.write("\t".join(row) + "\n")

        def print_file(out):
            for row in data:
                print(*row, file=out, sep="\t")

        def run(f):
            with open("timing_data.txt", "w") as out:
                t1 = time.time()
                for loop in range(10):
                    f(out)
                t2 = time.time()
            print(f.__name__, t2-t1)

        run(print_join)
        run(print_file)

I get:

      print_join 0.19790196418762207
      print_file 0.7166078090667725

That is, str.join() takes less than 1/3 of the time as sep="\t".</comment>


Mobile Photography Awards 2016: The best mobile pics ever? - <AUTHOR> http://blog.vodafone.co.uk/2016/02/04/mobile-photography-awards-the-best-smartphone-photos-ever/ <comment><USER2> Some great shots!</comment>


Pentadactyl, improved vim bindings for Firefox - <AUTHOR> http://dactyl.sourceforge.net/pentadactyl/

<comment><USER2> I really really want to love pentadactyl, but the interfering with google app shortcuts is a major fall through. I just don't see the huge advantage, when most of my browser tasks already have shortcuts. I do like the /-search, but I already use Firefox's accessibility options to do it. I just don't know.

<comment><USER3> Hit ctrl-z to enter pass through mode, and it will no longer interfere. Hit escape to exit pass through mode.

<comment><USER4> You can even set up an autocommand to auto enable pass through mode for specific websites and disable it when you move away from the page. au LocationChange .* js modes.passAllKeys = /mail.google\\.com/.test(buffer.URL) | /google\\.com\/reader/.test(buffer.URL)

that created an autocommand based on the LocationChange event which is run against all websites and then it sets the modes.passAllKeys property to true if the url of the buffer matches that of the regex.

</comment></comment></comment><comment><USER3> Other than the political stuff, what is the difference between Pentadactyl and Vimperator? I've been using V on one computer and P on another, and haven't really noticed a difference.

<comment><USER4> Maxauthority, the founder of the vimperator project wrote his thoughts comparing the two on vimperator's google code page ([http://code.google.com/p/vimperator- labs/wiki/VimperatorVsPe...](http://code.google.com/p/vimperator- labs/wiki/VimperatorVsPentadactyl)) In general, it isn't much different, however, since vimperator version 3 it will start being much more different as vimperator is now trying to make the user interface as intuitive as possible while keeping the awesome modal controls from vim where as pentadactyl will still try to conform to vim. Check out vimperator 3's design goals: [http://code.google.com/p/vimperator- labs/wiki/Vimperator3Des...](http://code.google.com/p/vimperator- labs/wiki/Vimperator3DesignGoals)

</comment></comment><comment><USER5> Is there anything similar for Chrome?

edit: i often find myself trying to switch modes in Chrome... oops :-P

<comment><USER4> There are a few extensions for chrome available. See vrome and vimium and vim- like smoozie. Vrome (<http://www.chromeextensions.org/other/vrome/>) Vimium ([https://chrome.google.com/extensions/detail/dbepggeogbaibhgn...](https://chrome.google.com/extensions/detail/dbepggeogbaibhgnhhndojpepiihcmeb)) Vim-like smoozie (<http://code.google.com/p/vimlike-smooziee/wiki/English>)

However, because Chrome's extension API isn't as robust as Firefox's these extensions are very limited especially when compared to the feature-set that Vimperator and Pentadactyl provide you in firefox.

Hope that helps.</comment></comment>


Will patent disputes finally kill tape? - <AUTHOR> http://www.deepstorage.net/NEW/will-patent-disputes-finally-kill-tape/ <comment><USER2> Here's a much better article: [https://www.theregister.co.uk/2019/05/31/lto_patent_case_hit...](https://www.theregister.co.uk/2019/05/31/lto_patent_case_hits_lto8_supply/)

TL;DR, including knowledge prior to the latest wins by Sony: Fujifilm and Sony, the last two remaining manufacturers of high end LTO tapes have removed each other from the US market through legal actions. Sony as a result previously ended manufacturing of LTO-7 and never fielded LTO-8, more recently Fujifilm ended LTO-8 production. The theory a few months ago was that they'd get together and hammer out an agreement that would prevent a supply disruption, but that doesn't seem to have happened.

And for a bit of Original Research, maybe Sony wants people to switch to their and Panasonic's proprietary Archival Disc: [https://en.wikipedia.org/wiki/Archival_Disc](https://en.wikipedia.org/wiki/Archival_Disc)</comment>


MSN to beat Google - <AUTHOR> http://screencast.com/t/wzpTFLNVVIm

<comment><USER2> nothing is going to beat google.

if you tried and had a great idea, you'd get bought out in a heartbeat. then google would have your great idea and be even more invincible.

by the way google if you're reading this, i have a great idea. bring your checkbook.</comment>


Big Integer Design - <AUTHOR> https://www.bearssl.org/bigint.html <comment><USER2> This is one of those situations where little-endian order is clearly more consistent and superior --- all the loops count naturally upwards from the least significant to most, the same direction as the address increments, and there are no additional "length -" calculations which would be necessary in big-endian ordering. (I don't know of any widely-used multiprecision implementation that stores limbs in big-endian order, even on a big-endian machine.)

</comment><comment><USER3> For very large number it is faster to use FFT for multiplication, which is missing here. It's present in GMP.

<comment><USER4> The post mentioned that they want low (preferably constant) memory use to support embedded use. Unfortunately, the faster you get, the more memory you use when it comes to multiplication. For this reason, they don't even use Karatsuba or Toom-Cook multiplication.

<comment><USER5> There's been some nice recent work on time and space efficient integer and polynomial multiplication. Of particular note in this case, you can do karatsuba with only O(log(n)) workspace, at the cost of some additional bookkeeping. See, e.g., [https://www.usna.edu/Users/cs/roche/research/papers/lsmul.pd...](https://www.usna.edu/Users/cs/roche/research/papers/lsmul.pdf)

</comment></comment></comment><comment><USER6> Looks like that the reasoning behind i15 and i31 is the same as for carry save addition.

[https://en.wikipedia.org/wiki/Carry- save_adder](https://en.wikipedia.org/wiki/Carry-save_adder)

</comment><comment><USER7> Would be great if that page could reflow content on mobile, otherwise it's not readable on the phone.</comment>


Google sent me a "what to know in on-site interviews" email. Here it is. - <AUTHOR> http://swizec.com/blog/google-sent-me-a-what-to-know-in-on-site-interviews-email-here-it-is/swizec/4251

<comment><USER2> I always feel weird about these Google interviews... The day I got out of college I would have been very strong on most of the stuff mentioned here. Nowadays I'd fail, although the years spent in the industry have improved my experience under so many aspects...

Is Google's interview biased for 'right out of college/phd' applicants?</comment>


Unanswerable multiple choice question - <AUTHOR> If you choose the answer to this question at random, what is the chance it will be correct?<p>A) 25%  B) 50%  C) 0%  D) 25% <comment><USER2> Well, any multple choice question is going to be unanswerable if none of the choices given are a correct answer.

Since I think most would define a multiple choice question as one with a list of answers from which you pick the correct one, I say this question fails to validate.

Thus not only is this multiple choice question unanswerable, it's not even a multiple choice question. Try wrapping that around your head.

</comment><comment><USER3> It is answerable... with a swift kick to the balls of the person asking it.

<comment><USER4> But there's only a 50% chance that the person asking that will have balls.

<comment><USER5> I would speculate that of the people to ask annoying trick questions, the vast majority of them are smug males.

<comment><USER6> There are lot a of females who like to deflate smug males with trick questions.

<comment><USER5> Hahaha, fair enough.

</comment></comment></comment></comment></comment><comment><USER7> A more distilled version:

Which of the following is the answer to this question?

A) B

B) A

<comment><AUTHOR> Except here you could say "both are correct" or "neither are correct", whereas in the original question those also cause a paradox

</comment></comment><comment><USER8> Since A and D give you the same result, the question is a "check all that apply question". Excluding contradictory combinations, there are four answers:

* nothing checked (i.e., none of A,B,C,D)

* A+D

* B

* C

Assume the correct choice is among these four answers (it is, since we also include a "none of these" option); then you have a one-in-four chance to get it right. Hence, A+D is right.

If this is not a "check all that apply" question, then having both A and D is contradictory and the person posing this question deserves a whack on the head.

</comment><comment><USER9> Completely different question:

This question is posed to a large number of people who all attempt to answer is correctly. "What fraction of respondents answered the same as you? a) 25% b) 50% c) 0% d) 25%"

If you choose the answer to this question at random, what is the chance it will be correct?

What if you change it to "What fraction of respondents not including you answered the same as you"?

</comment><comment><USER10> Where is correctness defined?

What is the antecedent for 'it,' the 'answer' or the 'question'?

Does this phrase even make sense? I suspect it is supposed to be some 'recursive cleverness,' or just not make sense?

C) 0% because for something to be correct it follows that it fits a given definition of correctness of which none is given.

now the recursion has started to work based on the above reasoning

So if C)0% is the "correct answer"(that is, there is no correct answer) then choosing an answer at random will be correct 25% of the time, if you shift to viewing 25% as the "correct answer" then you have a 50% chance of randomly selecting a "correct answer"

what is the chance [the question] will be correct? C)0%

q1=what is the chance [the question] will be correct?

what is the chance [an answer to q1] will be correct? 25%

q2=what is the chance [an answer to q1] will be correct?

what is the chance [an answer to q2] will be correct? 50%

</comment><comment><USER11> If I choose to answer this question at random (with the constraints of having to choose one of the choices) then the chance of it being correct is going to be 25%, because I am answering at RANDOM, therefore not using any intellect and not applying any sense to the question.

However, the question merely states IF you choose, not that you have to.

Therefore, I am entirely correct by answering either A or D.

Thus it is not unanswerable and is incorrect in stating so.

</comment><comment><USER12> I choose E) 20%

</comment><comment><USER13> B

<comment><USER14> B is the new C

<http://i.imgur.com/LZBup.jpg>

</comment></comment><comment><USER15> i don't get it... maybe i'm being incredibly dense but it looks like it should be B. this makes the correct answer 25%, so the probability of getting it right at random is 50% because 2 out of 4 answers are 25% - so the answer is B = 50%, and indeed the chance of choosing B is 25%

answering the question at random is not the same as answering the question posed - so the fact that the two answers are not equal shouldn't be a problem. right?

edit: i hate paradoxes, i'm pretty certain i'm wrong, but i can't put my finger on precisely why. :)

</comment><comment><USER16> I refuse to play silly mind games which make me feel incompetent.

<comment><USER6> A good way to discourage learning in fields like mathematics, science, and programming.

<comment><USER16> Most problems in mathematics, science, and programming aren't as silly as this one.

</comment></comment></comment><comment><USER17> A B C D

(as it is not specified that only one must be chosen)

EDIT: the problem is ill defined...

</comment><comment><USER18> Normally it would be 1 out 4 = 25% but if all answer given in the list is wrong then 0%

The answer is not in the list thus unanswerable?

</comment><comment><USER19> If "I" choose the answer, I use a weighted 4-sided die that comes up "B" half the time. So B is correct.

</comment><comment><USER20> Saw this one before and if that was the source of this, then the answer will be E) 0% What a nice one!

</comment><comment><USER21> The answer is. . . A plus D.

(Seriously, if I saw this on a test I'd just circle A and D then write "= 50%".)

</comment><comment><USER22> My random answer is "splorichoo".

</comment><comment><USER23> I say B. Now prove me wrong.

<comment><USER24> "You're wrong because the answer key says so. Were you not paying attention when I gave the answers to use during the 'review' session?"

</comment></comment><comment><USER25> The answer is C because it's B.

</comment><comment><USER26> Appears to be a clever case of the first incompleteness theorum.

<comment><USER27> Gödel's first incompleteness theorem states that any effectively generated theory capable of expressing elementary arithmetic cannot be both consistent and complete. In particular, for any consistent, effectively generated formal theory that proves certain basic arithmetic truths, there is an arithmetical statement that is true, but not provable in the theory (Kleene 1967, p. 250) per <http://en.wikipedia.org/wiki/Gödels_incompleteness_theorems>

Just because you title something an "Unanswerable question" doesn't mean it actually is, and certainly doesn't mean the first incompleteness theorem is relevant.

<comment><USER28> Is "The above question has no solution", which is choice C, not a Godel sentence?

<comment><USER27> No. Godel's incompleteness theorems say nothing about non-arithmetical or non- mathematical statements nor do they apply in contexts where no formal system exists. Some sort of paradox, sure, but Godel doesn't apply.

Truth is not a mathematical concept, and determining the "truth" or "falsehood" of a sentence has nothing to do with Godel's incompleteness theorems.

<comment><USER19> Boolean logic is an "arithmetic system"

</comment></comment></comment></comment></comment><comment><USER18> B) for me

</comment><comment><USER29> B

</comment><comment><USER30> Your rubric doesn't denote whether I can answer more than one item for the question therefore based on "you can only choose one" then 25% is the chance of being right, as the correct answer is still one of A,B,C,D.

</comment><comment><USER31> 0% chance.

Answering randomly may give you a _result_ that coincidentally matches the truth, but you have provided no logical or epistemological support for your choice, nor any chain of reasoning that leads you from the available evidence to a conclusion that there even _is_ a correct answer.

You have a 25% chance of randomly choosing the "right" answer, _(C) 0%_ , but no paradox is created because you answered without establishing knowledge of the answer, and therefore your answer cannot rightly be called _correct._</comment>


The Icewind Dale Problem - happy-go-lucky http://koaning.io/the-icewind-dale-problem.html <comment><AUTHOR> I clocked more than my fair share of hours rerolling stats on Baldur's Gate. But in retrospect, it seems like outrageously shoddy game design. "We're going to have a permanent set of stats that determine how powerful your character is for the whole game, and how good those stats are is going to depend mostly on how much time you spend clicking 'reroll' and a little bit on luck. And we're going to make you do this all in one go, right at the start of the game, before you even get to have any fun."

<comment><USER2> This reminded me of how I spent multiple nights re-rolling my party on my Mac port for Wizardry I. I eventually hit a point total that allowed me to start one character as a ninja, which apparently must have been a bug because that was supposed to be impossible.

My cheesiness knew no bounds however. At some point I acquired a shuriken, which would increase your total HP by 1 every time you equipped it. I did the righteous thing and spent a few more nights unequipping and equipping it, which left me with some outrageously high HP.

Feeling that even this munchkin level insanity wasn't enough I fiddled around with the save game and figured out how to clone my character. Finally my party had a front line of 3 ninjas with unassailably high HP totals. Finally, Werdna was mine.

<comment><USER3> And you got an enormous amount of enjoyment from it, which is what a game is for. :)

I remember doing a similar thing with save files and the old Ragnarok game.

<comment><USER4> Same but with stuff like Diablo 2 and D2Edit / Jamella. Gameshark Pro was also fun stuff. It's honestly sad that you can't gameshark modern consoles since it was so much fun to mod games in ridiculous ways. Mod support for PC games is what keeps me buying PC games.

Edit: excited for the potential mod support for FFXV on PC.

<comment><USER5> I no longer have time to dedicate to games like I did as a kid so cheats are a huge deal to me (single player only). They don't "ruin" the game for me at all. I only play games a few times a month but my steam library contains hundreds. So on that one random Saturday I've got the free time to dedicate to 5+ hours to gaming I want to get as far as possible in a couple of games. I've been playing the Witcher 3 seemingly forever.

I have a Ps4 and a few big games for it, Yakuza, etc and I've played them all once or twice because of the time investment required to get through the story. I WANT to enjoy the story. It's really unfortunate. I'd love to speed up my progress, instead I'm forced to watch Lets Plays of those games.

</comment></comment></comment></comment></comment><comment><USER6> I was hoping this was going to talk about the problem that Beamdog ran into 'enhancing' Icewind Dale 2. They can't find the source code and doing the reverse engineering to make improvements was deemed too costly; [http://www.pcgamer.com/icewind-dale-2-cant-be-enhanced- becau...](http://www.pcgamer.com/icewind-dale-2-cant-be-enhanced-because-the- source-code-is-lost/)

As far as this article; not my cup of tea but the author seems to have put a lot of time into it. If you like data science, dive on in.

<comment><USER7> I was a huge fan of the Baldur's Gate games back in the day, but never got around to playing the IWD series, which were based on Bioware's infinity engine. I played the enhanced version of IWD1 not too long ago and, of course, had to play IWD2 to satisfy my completionist OCD, even though that meant a little bit more fiddling to get it to work properly.

Verdict: Go play a newer RPG like Pillars of Eternity instead. While I'm sure some people have very fond memories of the IWD series, it has not aged well. The story isn't particularly good, and IWD2 rehashes a little too much of IWD1 for comfort. It is undoubtedly possible to give IWD2 the enhanced version treatment. It's "too costly" because IWD2 just isn't very good, and likely wouldn't have strong sales.

<comment><USER8> I also recommend Divinity: Original Sin

</comment></comment></comment><comment><USER9> Alternate Reality, a cult classic game from the 1980s by Philip Price featured a character creation process similar to the one described in this article (it also contained many other game features well ahead of its time). A rotating series of numbers would scroll through each stat box, with the player having to hit the space bar to freeze the numbers and select their stats. However, the stats slowly degraded the longer the player waited and watch them scroll past. Interesting to see this issue examined in depth over 30 years later.

[https://en.wikipedia.org/wiki/Alternate_Reality_(series)](https://en.wikipedia.org/wiki/Alternate_Reality_\(series\))

<comment><USER10> Captive, another cult classic from early 90s used another novel method of calculating the stats for the characters. The game used an algorithm that determined the stats based on the name the player gave to each character. I even remember seeing some recommended names on the cheats & tips sections of some computer games magazines back in the day.

<comment><USER4> My name is 00000000 AKA death to your algorithm :) (or: hope you hash it first)

</comment></comment></comment><comment><USER11> It seems the article talks about anything but the topic it is trying to talk about. What is the conclusion? When to stop? What do the axis in the diagrams mean? I read it like 1.5 times and still don't get any result from it.

<comment><USER12> It's sad that the plots are mostly unlabelled because that aside they're fairly clear:

On the color maps, vertical is the score you got on your last roll (sum of all attributes), horizontal is the index of the current roll, color is the chance of getting a better roll.

There is no "hard line" for when to stop because it depends on how risk-averse you are, and compounding the lack of labelling the labelling of color maps 3 and 4 is the opposite of what it shows: it's how the map changes when you _lower_ risk averseness (increase risk seeking) by increasing probability thresholds compared to map 2.

</comment></comment><comment><USER13> I don't really get why you wouldn't approach it as a dynamic programming question. The size of the table would only be about ~38 rows, according to the description, and ~38 columns. If you were given the probabilities of each sum (of which I'm sure is available) you could do it by hand, likely in an excel sheet.

</comment><comment><USER14> Roleplaying in my eyes suffered from this arbitrary stats rolling. It could have greatly gained, if for every usefull exp on level up - your character would have to take on some psychological malus. +1 on Dexterity? Congratulations, you are now a cleptomanic. +2 on Intelligence? Obsessive compulsive mage. +1 Strength. Great Scotts, youre an alcoholic. +2 Wisdom? Post Traumatic Stress Syndrom.

It would have got the game so much more interesting. People who would have to play actual characters, instead of walking, golden statues.

<comment><USER15> You might find upcoming RPG No Truce With The Furies[1] interesting. From a developer post[2]:

"For the real lowdown — instead of telling you how the Attributes help — let me tell you how they make things worse.

INTELLECT A high Intellect makes you overly confident – a cocksure intellectual. You're vulnerable to flattery, and easily lose yourself in details. (The game becomes longer). While having a low Intellect makes you dim and superficial, prone to superstition and being plain wrong.

PSYCHE A high Psyche comes with emotional turmoil – an unstable psychophant. Great willpower clashing with wild imagination. You may even lose your mind. While a low Psyche makes you uninspiring, inept at influencing people. Unsavoury things come out of your mouth.

PHYSIQUE Okay, you're strong but so is your death drive – a mad man and a psycho killer. A high Physique needs to be tested, needs addiction, sex and physical confrontation. You lose your shit over small things. While being un- physical means vulnerable, un-streetwise. Lacking in animal cool.

MOTORICS A Motoric character is too high strung – a bit of a cokehead. A quicksilver superdetective focusing fast and then reacting (too) sharply. While being low on Motoric means you're locked into yourself. The world has trouble finding you. You're clumsy and slow."

[1] [http://zaumstudio.com/](http://zaumstudio.com/) [2] [http://devblog.fortressoccident.com/2017/01/19/introducing-m...](http://devblog.fortressoccident.com/2017/01/19/introducing- metric-arguably-worlds-simplest-role-playing-system/)

</comment></comment><comment><USER16> Titan Quest - Best Abilities and Stats System. Should have taken over the whole genre system wise. You all start vanilla and when you use an ability it ads xp to that ability. Melee then attack as a melee, or ranged pick up the bow and shoot. If its magic learn to pull off the right skills. It was easiest to go melee at first and magic was more difficult but then it switched mid game.

<comment><USER4> That's how Tales games work too (at least Tales of Berseria, I'm guessing the others follow).

<comment><USER17> IIRC Tales of Symphonia stats (mostly) acted like an old school FF game of just fixed stat increase per level.

</comment></comment></comment><comment><USER10> The article briefly mentioned that different stats are useful for different character classes but didn't really take that into account in the model.

For example if a barbarian get really high rolls for all stats except strength is it actually a really a good roll for that character or should you consider re-rolling?

Edit: Oops, I completely forgot about the ability to reassign points between stats. Thanks to batiudrami & beloch for pointing that out.

As an interesting side note: An older (A)D&D game series, Eye of the Beholder, allowed you to modify the stats any way you wanted after rolling, which meant you could just set all stats to max if you wished. I've read from somewhere that this was done so players could "import" their pen & paper RPG characters with the correct stats points into the game. Dunno if that's true though.

<comment><USER15> It has a "point buy" system where you can add and subtract points, so only the total is really useful.

Different classes also have different minimum stats - so the calculation is actually rolling 4d6, excluding the lowest, and then rounding up to the minimum if necessary. This means multi-class characters (who might have minimum of 13 in two stats instead of the usual 9), or odd classes such as Paladin who have a minimum 17 charisma end up with much higher average totals than other classes.

It's an entirely broken system, designed for pen and paper D&D where you roll your stats and then choose your class based on what you get, adjusted for video game players who prefer to choose their class first.

</comment></comment><comment><USER18> There arbitrary decision that 1 reroll is worth 1 score, is not even explored. That is a big decision, as it places a cap on rerolls at around 35. It's not obvious at all.

</comment><comment><USER19> Or, you know, you could just press Ctrl-8

</comment><comment><USER20> hi guys, i am the guy who wrote that blogpost. glad to see you guys liked it!

</comment><comment><USER21> >Let's turn this system into a game. You are allowed to reroll, but everytime you do the score you get will get subtracted by one. What would be the optimal stopping strategy?

If it wasn't just a thought-exercise, the answer would be: Quit the game and start over until you get a perfect roll the first time.

Seriously. Games are supposed to be fun, not painful. While it might be a fun thought exercise, it's incredibly bad game design.

<comment><USER22> If you're trying to exploit the game, you should be having less fun. I played Baldur's Gate, and there were all sorts of things you could do to be stronger than you ought to be. Even without the rolling, you could level up a character several times and then restart the game with that character. I didn't do that specifically because I wanted to enjoy the game.</comment></comment>


Breaking Weak CAPTCHA in 26 Lines of Python Code - <AUTHOR> http://www.bonsai-sec.com/blog/index.php/breaking-weak-captcha-in-26-lines-of-code/

<comment><USER2> Looked at it... and while it shows how to break one practically, it dosnt go into details. If you want to see how to actually break a CAPTCHA using python have a look at the tutorial I wrote some time ago,

<http://www.wausita.com/captcha/>

*NB May be down due to being on Westhost which is having quite a few issues at the moment.

</comment><comment><USER3> read: breaking an extremely narrow class of weak captcha by gluing an OCR library to special-case image operations.

<comment><USER4> these kinds of small applications are usually written as $50 gigs on Rentacoder-type sites for spammers.</comment></comment>


Wine 3.3 has Vulkan support - <AUTHOR> http://www.wine-reviews.net/2018/03/the-winehq-wine-development-release-33.html <comment><USER2> It seems like Vulkan is being pushed really hard lately. Is it possible it might become THE cross-platform graphics interface and we start seeing truly platform agnostic games?

<comment><USER3> No. Companies that matter are MS (they are still pushing DirectX), Apple (Metal or bust), Sony and Nintendo (each console has its API). Without full platform owner support Vulcan will be a second class citizen with all kinds of performance and compatibility issues.

<comment><USER4> >> Without full platform owner support Vulcan (sic) will be a second class citizen with all kinds of performance and compatibility issues.

Vulkan is owned by Khronos. Every single company you mention is a member of the Khronos group: [https://www.khronos.org/members/list](https://www.khronos.org/members/list)

Aside from the strong contingency Khronos Group carries, Vulkan's cross- platform support is in part due to its very good codebase, which enables easier integration.

<comment><USER5> Sure. Microsoft was also a member of Khronos 15–20 years ago, when (according to an acquaintance who used to work for a GPU vendor) they did every underhanded thing they could to disrupt the OpenGL spec / committee, while simultaneously working on their end to make sure it wouldn't be a competitive way to develop Windows software.

Being a member (by itself) doesn't mean anything. Without talking to anyone involved or knowing additional context, it's impossible to know whether the companies on the committee are productive collaborators, passive onlookers, or active opponents of Vulkan.

<comment><USER6> >Sure. Microsoft was also a member of Khronos 15–20 years ago, when (according to an acquaintance who used to work for a GPU vendor) they did every underhanded thing they could to disrupt the OpenGL spec / committee, while simultaneously working on their end to make sure it wouldn't be a competitive way to develop Windows software.

You're talking about the pre-Khronos OpenGL Fahrenheit deal, which is largely public knowledge. Microsoft announced a joint project with SGI to support OpenGL on Windows, then put all their resources into DirectX while SGI spent two years building their section. The only unprovable part is that this was their goal all along, but the leaked combat plan against free software at the same time leaves little doubt.

<comment><USER5> You're right this was mostly pre-Khronos. Apologies, I'm not an expert in the history of OpenGL. But I believe he was also talking about the period after the Fahrenheit deal, in maybe 2000–2005. He talked about MS sending people to OpenGL committee meetings and intentionally trying to gum up the process and prevent interoperability. I don't really know the details, and this is all second-hand and poorly remembered from a conversation a decade ago. So take it with some salt.

<comment><USER6> They quit the OpenGL board in 2003, and though I don't doubt they continued to be antagonistic between 99 and then I can't see their voice pulling that much weight after Fahrenheit.

Not trying to be rude, I'm sure your friend knew far more at the time than I ever have. Just seems better to base this on provable events so people don't see "my connected friend said..." and write it off as a conspiracy. Microsoft is trying to act as an ally to free software again, and people seem far too trusting of their motives.

<comment><USER5> I'm sure you know much more about it than I do. Cheers!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> It is really amazing what the hackers behind Wine have been doing for the last 20+ years. There's not a foundation or some commercial backing behind the project if I remember right.

<comment><USER8> I thought CrossOver contributed to Wine development significantly?

[https://www.codeweavers.com/crossover-windows-on- mac](https://www.codeweavers.com/crossover-windows-on-mac)

<comment><USER7> oh right, i forgot about them. My bad.

</comment></comment></comment><comment><USER9> This is a reblog of [https://www.winehq.org/news/2018030201](https://www.winehq.org/news/2018030201)

and the detail is at [https://www.winehq.org/announce/3.3](https://www.winehq.org/announce/3.3)

</comment><comment><USER10> Can we have Overwatch on macOS (i.e. DirectX on Vulkan on Metal) with this?

</comment><comment><USER11> Anybody knows if wine can run onenote? Probably my last full time windows software as a heavy note-taker

<comment><USER12> Wait, but there is one note on mac

<comment><USER13> Not sure if you meant this as a joke but, you know, Windows and OSX are not the only operating systems people use.

</comment></comment></comment><comment><USER14> Is Vulcan a locale? Is this so I can use Vulcan text in Windows apps under Wine? Oh, sorry, wrong Vulcan...</comment>


Iterative Development in Gaming - <AUTHOR> http://logiccolony.com/2010/09/30/Iterative-Development-in-Gaming.html

<comment><USER2> I'd be careful about reading too much into Minecraft's success with iterative development.

Here's the simple truth: Many (most?) big-budget games are meant to be played only once or twice. If it's not 100% ready to go when first launched, nobody will stick around to see it finished. Minimum viable product is hard to apply here. (This also partly explains why there aren't very many good FOSS games.)</comment>