Disney Pulls a Reverse Santa, Takes Back Christmas Shows From Amazon Customers - <AUTHOR> http://yro.slashdot.org/story/13/12/16/1733257/disney-pulls-a-reverse-santa-takes-back-christmas-shows-from-amazon-customers <comment><USER2> Good lord, a link to slashdot, which links to theguardian, which links to boingboing... Doesn't anyone believe in primary sources anymore? I miss the good old days when a 20 line "story" would be spread across 20 pages not 20 sites.

I looked at the movie on Amazon and its still up for sale, although the "Most Helpful customer reviews" is less than glowing with christmas cheer. Its glowing like a heavily used nuclear test site.

This is weird and disturbing... so I can buy and pay for something today that was removed from sale yesterday, or just what is going on here?

This has never happened to me with books / stuff in general at Amazon but the half life of subscribe and save groceries must be about 6 months because seemingly every month something else gets discontinued. I can't complain too much, often its about half the price of the local grocery stores, but its still annoying. More like "subscribe for a couple months and save" at best.

<comment><USER3> The boingboing article has already been posted on HN: [https://news.ycombinator.com/item?id=6911944](https://news.ycombinator.com/item?id=6911944)

<comment><AUTHOR> I missed that one.

The top comment on that HN discussion, by RexRollman, is right on target: _companies shouldn 't be allowed to use the word "buy" for this kind of thing_

</comment></comment></comment><comment><USER4> Well according to the source article Amazon blamed the removal on "a temporary issue with some of our catalog data" which it says has been fixed, adding that "customers should never lose access to their Amazon Instant Video purchases." It says the database error was unrelated to Disney's request.

Think we should wait a bit before we jump to conclusions here. May all have been a software bug.

<comment><USER5> The exact same problem happened a month ago with iTunes purchases and also Disney. Coincidence? I think they just were caught red-handed, twice.

Amazon's policy allows them to withdraw purchased items [1]. It could be a bug, it could be policy, it could be a bug that exposed an existing policy. There PR has been, unsuprisingly, silent on this front. This is why I have no faith in digital ditribution; the music industry finally got it, the movie and game industry still don't get it.

[1] _Availability of Purchased Digital Content. Purchased Digital Content will generally continue to be available to you for download or streaming from the Service, as applicable, but may become unavailable due to potential content provider licensing restrictions and for other reasons, and Amazon will not be liable to you if Purchased Digital Content becomes unavailable for further download or streaming. You may download and store your own copy of Purchased Digital Content on a Compatible Device authorized for such download so that you can view that Purchased Digital Content if it becomes unavailable for further download or streaming from the Service._

</comment></comment><comment><USER6> DRM clawback. It's all fun and games until your new car won't start some morning because someone typed in the wrong account number and deactivated your software.

We need consumer protection laws but that would require politicians to care about people and not corporations, so never going to happen.

<comment><USER7> Forget consumer protection laws, just don't use DRM. This kind of anti- consumer behavior cannot happen without DRM in your content and on your devices.

</comment></comment><comment><USER8> The fact this _can_ happen is the problem. Technology enabling such widespread censorship must not be so eagerly adopted.

<comment><USER9> If you have ever worked on or run an ecommerce site with digital goods, you might understand more easily how this could happen by accident.

<comment><USER10> The fact that it _can_ happen, at all, ever, means something is very, very wrong.

<comment><USER11> That "something very very wrong" is the only way digital streaming purchases can ever be. If you're streaming content from someone else's servers, you're always just one mistake away from having everything disappear. There are ways around that which aren't as convenient as streaming, so if you're worried about it, use the alternatives. There's literally no way to have content streaming from Amazon and _not_ be at their mercy to not fuck up. The only thing you can hope for is that the fix is quick and everything is restored in the end.

For many people, though, it's a tradeoff they're willing to make. Netflix, for example, is just too damn cheap and convenient for me to get upset about the restrictions (except why I can't play it on Linux when I can play it on Android and Roku...)

</comment></comment></comment></comment><comment><USER12> Good thing this is illegal in Germany, and Amazon would have to reimburse their customers (those who are so bold to ask for reimbursement, of course.. :D). On the other hand, the difficult legislation that prohibits such agreements is probably part of the reason why many such services are still not available in Germany..

<comment><USER13> Disney should be forced to reimburse customers. If they permitted a retailer to sell and item, collected their part of the sale, then invalidating the sale at a later date should be illegal or done with a penalty.

As it stands now, no item you buy from any source is safe.

<comment><USER9> Disney didn't pull the product from existing customers. That was caused by an Amazon issue which has already been fixed.

</comment></comment></comment><comment><USER14> The original article is more clear. They removed the show retroactively by mistake.

[http://www.theguardian.com/technology/2013/dec/16/amazon- dis...](http://www.theguardian.com/technology/2013/dec/16/amazon-disney- christmas-tv-special-prep-and-landing)

<comment><USER15> > They removed the show retroactively by mistake.

That's only slightly less frightening. A simple error can potentially wipe out all of my "purchases."

Just imagine that telephone conversation with customer support: "Yes, I have rebooted my machine. I need tier two suppo-- No, I don't need to update my software. Can I talk to-- No, it's not a connection problem. My ISP won't be able to help me."</comment></comment>


Fraud possible in Brazil's e-voting system - <AUTHOR> http://www.zdnet.com/fraud-possible-in-brazils-e-voting-system-7000034341 <comment><USER2> E voting could be made safe if the machines printed the users choice on a little slip of paper which was then put into a box, to be counted once the election is over.

You could have the machines tally the votes a few seconds after the last poll location closes, but the election result isn't official until the votes has been counted.

Any trust in the machines at all and you might as well have the election take place in NK.

<comment><USER3> An obvious optimization to that process is having voters fill out an optical "scantron" ballot, then run the ballot thru a scanner and lock the paper ballot away for later spot checking.

You can network the scanners in whatever crude or advanced way you'd like.

This is what Wisconsin has done for about a quarter century.

</comment></comment><comment><USER4> "when the TSE granted access to more than 10 million lines of code for five hours."

The software itself is very small. They are counting the OS, etc.

The software could be safer. But this whole story about those machines involves ego and fights for notoriety between government-run universities, departments and the opposition in place, which changes from time to time. Not exactly FUD, but an exaggeration of the facts.

<comment><USER5> The problem is much bigger than the specific process used or the findings in the verification. If you look at what they found in the code in the short inspection, you would shiver. For example, vote secrecy was protected by storing votes in a shuffled order, where the shuffle was determined with the random seed srand(time(null)).

But still, the problem is the principle: the system is the only source of truth, and _if_ there is fraud, or a bug, that changes votes, it is undetectable and impossible to prove. TO have the fate of 200M people depend on such premise is absurd.

The electronic system must change, but this will only happen if there is awareness and sound technical discussion by the population.

</comment></comment><comment><USER6> voting should never be computerized. the risk for exploits to go unnoticed is too high. paper and pen seems to me the only safe implementation.

</comment><comment><USER7> Brazilian here.

Possible? Maybe, because computers.

Did this Aranha guy get it right? Probably not, but drama is money.

<comment><USER8> You mean he got what wrong exactly?

In 2012 the TSE did call professors to test the system, he did demonstrate an attack that recovered the identity of most of the votes registered at the device's memory, and it was widely published. Since then, there was no other test.

It's clearly an unverifiable system, where we don't have even guarantees that the tested software is the one running on it. And the government is not responding to request of improving the overall system.

What part exactly are you saying he got wrong?

</comment></comment><comment><USER9> SOAP BOX = 1

For what it's worth, e-voting isn't verifiable directly, unless it's done in a way linked to voter identities. Even then, it's highly exploitable, but it is verifiable, depending on the implementation.

A trustworthy election embodies these four ideas to the maximum extent possible:

1\. Anonymity. Votes cast are not linked to voters who cast them.

2\. Transparency. The record of the voter intent, election law, means, methods, processes are visible to all involved and human readable.

3\. Oversight. Depends on transparency. The election happens under the public eye, and we've got clear means and methods to resolve issues in a just and true manner.

4\. Freedom. Voters are free to vote or not as they will.

The basic problem with electronic voting is this:

We don't record the voter intent. We do record what some device or enabling technology understood the voter intent to be. This is a vote by proxy.

Physical media, such as pencil and paper, present a chain of trust from the voter intent to the record of the vote, verifiable by the voter.

Electrons and computing systems in general depend on the fact that information states change easily and transparently. This is a good thing in most cases.

With voting, it's not a good thing because we do not actually record voter intent! Secondly, a voter cannot ever understand whether or not their vote record cast reflects their intent. They must trust the proxy.

Touching a screen may set a bit and that bit once set can be displayed back to the user. This display can be anything!

Physical media, directly used as the record of the vote, does present the user with a verifiable record they can compare to their intent before their vote is cast.

Human readable records, fed to machines, work reasonably well. There are exploits, mistakes, and such possible. However, the entire election can be litigated, validated as the election process and the people participating in the election deem necessary. While this is painful, it is necessary, if we are to trust the election.

Voter records presented in a court of law in electronic form contain very little other than the interpretation of the voter intent done by the machine at the time. Worse, it's extremely difficult to understand whether or not the machine interpretation actually reflects voter intent, and or if it complies with election law requirements.

A physical record has another property in that the media is actually changed in a material way by the voter as they record their voter intent. Further modifications to this record are very difficult to perform without leaving evidence of said modification on the media right along with the original, uncorrupted voter intent.

Electrons, if modified, changed, corrupted... just present different data states. For an analogy, say the vote count is in your mind, and suddenly you change that count, or manipulate it in subtle ways. The count is just different now, a mere information state.

Electronic voting isn't verifiable and trustworthy without extensive auditing and votes linked to users. For an example of this working reasonably, see banking and how all the records and accounting can work.

Do we want to link votes to people? If so, then e-voting can make some sense. I personally am opposed to this, and as a result, am opposed to electronic voting, but I do believe electronic counting, plus audits, given it's done from human readable records, can make sense.

Oregon, Washington and Colorado are vote by mail States, where the voter intent is collected in a human readable way, counted electronically, audited with appropriate sample sizes to insure accuracy within reasonable limits, and the entire election can be verified in court, one vote at a time, if needed.

This is the path forward IMHO. E-votes are a PITA and we can't really trust them. Votes by mail have a lot of advantages and they cost less than full on "go to the polls" elections do.

Finally, voting happens over a period of a week or two, distributing the votes nicely in time, preventing attacks, surprises and other things that can corrupt an election when it's all got to happen in one significant day.

I sure hope Brazil figures this out before they suffer too much from it.

SOAP BOX = 0

<comment><USER10> > For what it's worth, e-voting isn't verifiable directly, > unless it's done > in a way linked to voter identities

You're missing out on the last 20 years of crypto research. I'd say we're not there yet, but people have been thinking hard about things such as verifiability (with vote confidentiality of course!), coercion resistance etc, and have come up with really cool ideas. As with his other work, David Chaum has some stuff that makes you go "WTF?!? oooh", check out things like Pret a Voter or Scantegrity.

<comment><USER11> Also check Microsoft research U-Prove ([http://research.microsoft.com/en- us/projects/u-prove/](http://research.microsoft.com/en-us/projects/u-prove/)) or IBM Identity Mixer ([http://www.zurich.ibm.com/security/idemix/](http://www.zurich.ibm.com/security/idemix/)), both are Identity systems that allow casting electronic votes anonymously.

I wonder if we will ever get to a point where that kind of crypto is explained enough that we collectively trust it as much as pen and paper.

<comment><USER9> There still exists a forced trust by the voter in that they must trust the machine to parse their voter intent and must trust it to use that intent to contribute to the overall tally.

A machine presents a user with some interface, and they make a selection and they get told something. They have no identifiable way to see the record of their intent is accurate, or even will be used.

With pen and paper, the intent of the voter is what we record and that record is used to arrive at the tally to determine the election.

With a machine, we do not record the voter intent, only what a machine determined that intent to be.

Actually recording the voter intent means being able to evaluate that intent in a court of law, vote by vote, if needed. Given the impact law and government has on us, it's not too much to ask we actually do record intent.

</comment></comment></comment></comment><comment><USER5> Other comments at [https://news.ycombinator.com/item?id=8410586](https://news.ycombinator.com/item?id=8410586)

</comment><comment><USER12> I doubt Brazil is ever going back to paper voting. With that said, human vote counting is exploitable/error-prone, too, and electronic vote counting instead of electronic voting seems like it'd have the same issues the voting machine has.

The solution is clear to me, make it open-source, give bounties for issue- fixing. If the current software is crap hire RSA and/or some nice software shop to refactor and audit it, then open-source it.

<comment><USER13> All systems are fallible. Assess the relative risks by comparing their attack surface areas.

Paper ballots issued, cast, and counted per precinct, the night of the election is the most robust system existent. Compared to any other system, corruption would require more participants, increasing the cost, difficulty, and risk of detection.

Further, it also enables verifying the physical chain of custody, which is very, very difficult with electronic systems.

RSA? Why would I trust them?

</comment></comment><comment><USER14> fraud? in brazil anything is possible, because my country is a totally mess. NOTHING works properly here. so, why the e-voting will be an exception?

<comment><USER12> are you aware of how infantile you sound?

Behold, readers, the brazilian inferiority complex.

<comment><USER14> no, it's not. it's just reality. infantility is not admit this (e-voting and another things) as REAL issue. love my country, but I have my foots on the ground.

<comment><USER12> Stop being such a wimp. All the places everywhere in the world through all history have had issues(something you're probably ignorant of, I suppose), get over it.

ps downvoter.: Sorry if it's too agressive but the point I'm trying to make here is that ignorant opinions and defeatism aren't going to take us anywhere, people really need to get over this IMO. As the quote of "a little learning is a dangerous thing", shallow knowledge intoxicates the mind, but drinking it largely sobers us again ;)

<comment><USER14> so, let's pretend everything's OK. after all, "ignorance is bliss".</comment></comment></comment></comment></comment>


What they don't tell you about being a game developer - <AUTHOR> http://www.altdevblogaday.com/2012/11/21/what-they-dont-tell-you-about-being-a-game-developer/ <comment><USER2> Being a game developer, as a business, has more in common to being the owner/operator of a taco truck than it has in common with playing videogames. If you like playing video games but would hate running a taco truck, you should probably not get into business as a game developer.

n.b. This is broadly true of all software businesses, not just video games. (Though I think running a software business is in many, many important respects easier than running a software business which makes video games.)

n.b. #2: This is also broadly true of many businesses which have, shall we say, anomalously high status. "I love cooking... I should open a restaurant! Then I'll have total artistic freedom to serve the food the way it _should_ be made! And every day will be _totally awesome_!" <\-- Not predictive of successful restaurateurs.

<comment><USER3> If we're talking indie game development here, I'd recommend getting into it in exactly the way as Patrick got into BCC. It should be approached as a hobby, until you're making enough money reliably enough that it becomes feasible to quit and do it full time.

That way you don't burn through your life savings, and you're very much aware of the day to day. Bonus points if you've had failures in between your successes. Patrick is dead on here - it's not all roses.

If you can't succeed doing it for 10-20 hours a week as a hobby, it's doubtful working even 80 hours will work. Game development is sort of like being a musician. If nobody likes your songs, you can't make up for it in volume.

Game development is an irrational choice in terms of return on investment. Patrick is also dead on here. Even the successful developers would have made an order of magnitude more money if they had applied themselves equally and had the same luck in other industries.

You have to genuinely find the prospect of working on your craft full time more important than financial returns. And having the perseverance to hone your skills and produce successful games in your spare time, even if it takes years, is a good litmus test for that.

(I'm awkwardly referring to patio11 by his name even though I was replying to him to differentiate the you [him] from the you [in general]).

<comment><USER4> I can only think of 1 successful game that was built as a part time hobby (Cave Story).

Development of even a simple game takes so much time I don't know how practical it is on 10 hours a week. Game studios have armies of employed people on 60+ hours a week each.

<comment><USER5> Dwarffortress - started out as an ASCII game and end as an ASCII game. Actually, it's two games in one, and also insanely complex.

Game studios that employ armies of developers usually have tons of artists and spend ridiculous amount of time on graphics and assets. That's why a massively complex game like dwarffortress are never created. So there's tons of niches for complex games with ASCII graphics. (Sorry, pixel arts also takes ton of time)

As everyone else already said, control your scope or otherwise you never finish the game. Dwarffortress got where it is today by simply not aiming for great 3D graphics.

<comment><USER6> There's plenty of permissively-licensed tilesets out there. Dwarf Fortress really had some trouble because it was built on ASCII until a fan was kind enough to write a graphics library : <https://github.com/Baughn/Dwarf-Fortress --libgraphics-> . Writing an ASCII rendering engine was probably more work for a lesser product than going with a library to begin with would have been.

Also, Dwarf Fortress isn't done yet. It quite possibly ends with beautiful procedurally generated graphics (though I can't imagine that would happen with Tarn keeping it a solo operation.)

<comment><USER7> Not quite: Dwarf Fortress has always used OpenGL (<http://www.bay12forums.com/smf/index.php?topic=28841.0>) to render tiles that just happen to be ASCII characters onto the screen. The fan effort was to port it to SDL, making it much more efficient.

</comment></comment></comment></comment></comment></comment><comment><USER3> > You can read 1000 praising comments, but if just one of them is bad, it will > ruin your whole day.

It's important to quickly get desensitized to this, because if you're even moderately successful, the volume of YouTube quality feedback directed at your very own pride and joy can quickly become overwhelming.

The really mean stuff never bothered me, nor the comments that seemed like they were Markov chain generated.

My biggest weakness was always idiocy - and trust me, I picked the wrong profession for that. Comments in the form of:

      Great game! (rating set to 1/5)
      Clone of [shitty clone of my game]
      How do you shoot??? (rating set to 1/5) (game has no weapons)
      [complaint about another game on the front page that day] (rating 1/5)
      Got [incredibly low score]!!! (game has global high score functionality)
      I bought this where do I download (game not for sale)

Unfortunately from memory, since I don't save any of it. But you get the idea.

<comment><USER8> Those are really funny.

There should be a website aggregating stuff like this. It would cheer me up.

And yes, if you're doing any kind of work that you pour your personality into, you need to develop a rock-steady sense of self-esteem, or it will destroy you.

<comment><USER9> You may enjoy this animation of a dramatic reading of a bad review: <http://www.newgrounds.com/portal/view/558516>

<comment><USER8> I laughed, although I might have seen it before.

Reminded me of the Weekend Web series on Something Awful, so I went there and watched a few. They're funny, but almost too crass for my taste (so I won't post a link here). I guess I'm getting old.

Jesus, the stuff I watched as a youngling!

</comment></comment></comment></comment><comment><USER10> "A large, loud portion of the public will openly hate you regardless of what you do. Learn to live with it. No-one will ever take your project as seriously as you, or fully realise what you're going through. Everyone will think they know better than you about your own project. Getting noticed at all is incredibly difficult . The odds of you making money out of it are slim. If you want to succeed, you'll likely have to sell out. Just how MUCH you sell out is up to you. You have to develop a VERY thick skin. Being open with the public isn't neccesarily smiled upon 100% of the time. You will meet many "game developers" but very few people who are actually developing games. You need to have the ability to listen to all advice given to you. Remember that listening to advice doesn't mean you have to take it. But listening can't hurt and you never know what you might learn."

Lots of this is applicable to founding a startup too. Good advice tbh.

</comment><comment><USER11> If you're doing 70+ hours a week, you're working for the wrong company. Move.

<comment><USER12> I just watched a documentary about Pixar and they mentioned John Lasseter used to spend 3 weeks straight in the office working. Just because you're working a lot, it doesn't necessarily mean it's the wrong company.

Here's a funny quote from him:

 _why do you have the best parking spot? John Lasseter "Because my car hasn't moved in 3 days"_

But, I would move on too.

<comment><USER13> If I was getting paid like Lasseter and basically running the show I could tolerate periodic 3wk crunches for creative spurts or whatever.

<comment><USER14> Not disagreeing with your point (in general), but in this case Lasseter was doing it the worst days of Pixar - the days that any day there was the possibility that Jobs might shut the whole place down...

</comment></comment></comment></comment><comment><USER15> > _as a developer friend of mine once said "Those people hating on your game > will always complain loudly. That's just what they do. The fact is, though, > that they'll probably still buy your game." and that's what you need to > focus on. It doesn't matter if other people like your game. What matters is > whether YOU like your game. If you love it, other people are bound to as > well._

Optimism is good but I think this is the wrong kind of optimism. Especially the part about people who rip on the game will buy it any way. Besides the whole piracy thing, what's more likely is that people just won't care. In this world of increasing choices, it's more likely you'll be ignored rather than either hated or loved

</comment><comment><USER16> Off topic: I simply cannot read this post on android thanks to that grey nav bar on the left hand side.

It completely obscures the content when I zoom in to read the text.

Why do so many sites do have annoying behaviour?

<comment><USER17> Me too, and I'm genuinely interestedin reading the post.

<comment><USER18> Use this link:

[http://www.instapaper.com/text?u=http://www.altdevblogaday.c...](http://www.instapaper.com/text?u=http://www.altdevblogaday.com/2012/11/21/what- they-dont-tell-you-about-being-a-game-developer/)

</comment></comment></comment><comment><USER19> Your game sounded interesting. But the site does not have a prominent "Click Here To Be Notified When The Game Is Available To Buy" button.

It should. "Marketing" details like that will make as much or more difference in the game's success as the quality of the game itself. Go add this NOW, before the Hacker News effect tails off.

</comment><comment><USER20> Frankly a title like 'Malevolence: the Sword of Ahkranox' doesn't sound like it's going to appeal to a broad demographic.

Even if one is indie it would seem sensible to treat it like a business, and make the ponies-and-handbags games until there's enough cash to make whatever one wants and damn the commercial viability.

<comment><USER21> Not everyone wants to take that approach (although it is a good one). It's harder to be financially successful making games that don't have mass appeal but it's definitely doable.

</comment></comment><comment><USER22> When I was 6 years old, my goal in life was to move to Japan and work for Nintendo. Possibly the idea of marrying Princess Toadstool was somewhere in there, but that was the idea.

When I was 20, I actually had a chance to work on MechWarrior 3. After the interview process, I decided to run very, very far away and to never consider it.

I'm 30 now, and actually have been working on a game for the better part of 8 months. My mindset is that it's a hobby that has a small chance of making enough money to live on, but I've set things up to ensure I can actually dedicate real amounts of time to it periodically. Rather that quit my day job, I moved into the consulting business (thanks to folks like patio11) to provide a financial runway for what I would prefer doing (making video games). Right now the balance is 7 months full-time consulting, 5 months making video games. However, (again, thanks to patio) I know I'm undercharging and as I'm able to raise my rate that will shift more to 5/7 or 4/8 over the next 18 months. I already have customers waiting in the pipeline that are willing to pay the new rate as soon as I'm available.

Oddly enough, my current customer is a AAA video game studio, and I've a few friends in the industry as well (also mostly at AAA studios). Personally I couldn't deal with the idea of surrendering so much creative input. There's also the fact that they literally can't pay me enough to work there. I will say that by and large the industry is filled with a tremendously nice group of passionate folks, but I "wouldn't want to live there".

It's a fickle market though, which is why I decided to mitigate the financial risk of financially unsuccessful projects by funding it with a consulting day job. The consulting affords the video game making. For me, the financial risk would've been real. I'm developing on a platform that's not taken seriously, with an art style that might put off hardcores, but with hardcore gameplay and a simple monetization strategy (you buy the app. There'll be some expansion packs, but that's it) and no IAP currency nonsense. Things a normal studio would never dare try.

<comment><USER23> Awesome stuff. I'm actually in exactly the same position on you - been making a game part time and funding it with contracting work.

Agreed on the fickle idea, as well as trying gameplay that a normal studio would never touch as it's not been proven. All I can say is keep up the effort - if its enjoyable and interesting then it will succeed. Looking forward to seeing the completed product, and I wish me, you and everyone else pushing out interesting Indi games massive luck!

</comment></comment><comment><USER24> > Start Simple!

Cant stress this enough. Start with the simplest possible game project to test out the waters! You will be to naive and want to tackle big things but you will probably regret that. Theres alot to be learned by starting small and then create something bigger once you have some experience with the market.

<comment><USER25> In my own experience, it is not only about starting simple, but also finishing it simple. I know you're not saying it isn't, but what I want to emphasize is that it is too easy to say that you're done with something simple and then move on to the next/bigger thing. For example, what eru suggested, if you build a Tetris-like game. You probably can have the gameplay finished in a few hours. And then, move on? Or spend another week on polishing, menu's, sound, graphics, copy, etc. I think the most valuable part of the lesson of starting simple is in finishing it. (And they don't tell you that.)

<comment><USER26> This is probably the best hidden advice on this page. Build complete projects. Make it a habit. If you just make gameplay prototypes, that will become your habit and you'll struggle to ship your big idea when the time comes. You'll be missing the final 90%. You won't know how to prep game art for example.

This applies to all creative "package" projects. Learn to ship.

</comment></comment></comment><comment><USER27> 70 hour work weeks; fucking atrocious. Where do people find time for family and friends and hobbies? I can't imagine working long stints like that regularly, I would probably burn out and product shoddy work.

</comment><comment><USER28> Their off-time work is contractually owned by the company? Is this true for most game development companies? I have never heard of that happening before. Is that even legal? In the two positions/companies that I've worked with/for, I've been able to moonlight, as long as it didn't compete directly with the company (in laymens, non-lawyer terms).

Is this a common detail with game devs? With most jobs? It sounds awful.

<comment><USER29> I've seen this mentioned off hand, occasionally, by developers, not necessarily game developers. My contract where I work prohibits moonlighting, because they want your soul (really, they even try to specify how excited I should be every day).

They even got their knickers in a twist when they learned I work on my own projects and help out friends and OSS, in my own time, on my own equipment, but there's not thing one they can do about it.

I've also had a friend be told that he would need to give up his personal, part time, income generating website in order to take a particular job (not here). The website business was not in competition with or even the same general industry as the job.

<comment><USER30> >My contract where I work prohibits moonlighting, because they want your soul (really, they even try to specify how excited I should be every day).

Personally, I would just ignore clauses like this. I know of no examples of stuff like this ever being held up in court. At least not at our level. You might have to worry if you were an executive or something.

<comment><USER29> Because I know the guys who wrote the contracts up, I know the reason this is in there.

They really believe that if you are working on something then you should be working on something for them 24/7 (without overtime, of course)

{long personal crap fest story here}

I think these contracts, for anyone, junior, senior, or exec, are quite unproductive. Outside stimulation makes us, programmers and designers, better at what we do.

If I only ever worked on work related projects, I wouldn't be able to provide the kind of input I'm paid for. The contract writers know this, when they stop to think about it, but they are very scared.

<comment><USER30> I appreciate why places might do it. But it's irrelevant what they believe and slavery clauses aren't going to be enforceable even if I sign it in my own blood. What these guys really need to worry about is invalid clauses invalidating the whole document.

<comment><USER28> Unenforcable statements. If I were offered a job by a given company, could I go take that part of the contract to a lawyer and see if that part of the contract was not-enforceable, and then go off and work in my spare time, holding the lawyer on reserve until the day when they sued me?

Because, if I had requirements like that in my contract, I don't think I could work for that company, even if I were in very real need of money. I have entrepreneal plans of my own, and they'd start out as just moonlighting.

<comment><USER30> They're probably not going to try to sue you until you're making enough to be able to defend yourself.

</comment></comment></comment></comment></comment></comment></comment><comment><USER31> It's kinda sad that, in order to protect himself, he has to put a disclaimer on his blog about four paragraphs down from the start.

</comment><comment><USER32> Anyone else feel this read like a paraphrasing of The Oatmeal's most recent comic?

<comment><USER33> Yes actually, the quote about comments could be lifted straight from here: [http://s3.amazonaws.com/theoatmeal- img/comics/making_things/...](http://s3.amazonaws.com/theoatmeal- img/comics/making_things/14.jpg)

</comment></comment><comment><USER34> People say mean things to other people on the Internet?

Stop the presses!</comment>


Depends – the missing linker for the JVM - <AUTHOR> https://github.com/bgard6977/depends <comment><USER2> This seems less linking and more dependency resolution.

What was wrong with

> ./gradlew dependencies

and then sorting out your duplicate dependencies with improper version issues.

I have spent a lot of time down this road myself and most of it was not fully understanding the framework dependencies, munging of stackoverflow solutions, or apache-commons hell...sometimes a little bit of it all.

Not trying to crap on your hardwork but interested in your motivations if its something bigger which I am not seeing.

Long term I don't think you can properly suggest the appropriate dependency, this is why most build tools provide default selection and let you override with exclude patterns.

Additionally there is a linting tool that will parse through duplicates and offer to clean up your gradle files if that is interesting to you alongside your work.

<comment><USER3> Couple this to the fact that you can search for the class at

[https://search.maven.org/#browse](https://search.maven.org/#browse)

to find the artifact hosting it, and it tends to be a couple minute job

Bonus tracks: gradle dependencyInsight is great for a similar task: finding out which artifact is bringing the dep.

<comment> village-idiot That's all fine and well if you have one or two broken dependencies from big popular libraries. This technique does not scale if you have a few dozen internal libraries and a few hundred internally deployed artifacts, or more. At that scale you need a more automated solution.

<comment><USER3> Anecdote: we have a large codebase with probably 100+ 3rd party dependencies, and dozens of internal modules, and that technique works pretty well.

Besides, where's the automated part on the OP solution? I agree the automation, either with this tool, or vanilla project management ones like gradle, could be beneficial.

<comment> village-idiot I can't speak to gradle, since we don't use it, but none of the other tools I've touched look at ABI compatibility. It's pretty easy to tell who brought in whatever version after it's crashed, but catching that in advance is much much harder.

</comment></comment></comment></comment></comment><comment><USER4> Nice!

I have two suggestions:

I'm probably too lazy to download and run a JAR but I'd probably run a Maven plugin from the command-line. Try packaging it as a plugin.

I often run into ClassNotFoundException when using an API but not providing an implementation, when using an optional feature that is provided in a separate dependency (Jersey HK2), and when using a feature that has been removed or broken into a separate dependency (JAXB). I believe these scenarios are all fairly common. Will your program help developers resolve those kinds of problems?

<comment><AUTHOR> Thanks! This is great advice. I will look into it. I would definitely want it to be available for both Maven and Gradle, but I think this should be achievable.

</comment></comment><comment><USER5> Apache Gump [1] is a similar very old project, but meant to be more realtime.

[1] [https://gump.apache.org/](https://gump.apache.org/)

</comment><comment><USER6> That name makes me think of the adult diapers. Might have a branding issue

<comment><USER7> If I recall correctly 'depends' is the name of a similar tool in Windows for debugging DLLs.

</comment></comment><comment><USER8> I can't imagine what sort of ill managed corp crapshoot frameworks you're importing in order to necessitate this tool :( but you might also try mvn dependency:analyze to help identify problem areas

<comment><USER9> Given a huge codebase: Spring. Blue-coloured j2ee containers. Old non- mavenized applications found as source jars, etc.

<comment><USER10> Spring has for some time solved this by using a bon with set versions of each library. Works great in Maven, and with Gradle via a plugin: [https://docs.spring.io/spring- boot/docs/current/reference/ht...](https://docs.spring.io/spring- boot/docs/current/reference/htmlsingle/#using-boot-dependency-management)

<comment><USER11> Incredibly, there might be non-spring applications that need to be maintained, or even non spring-boot ones /s

<comment><USER10> I've heard some rumours about that, but wrote them off as too implausible.

</comment></comment></comment></comment></comment><comment><USER12> That's not a linker, a linker produces an executable from object files.

</comment><comment><USER13> There will always be a case where you can't solve the diamond dependency problem.

<comment><AUTHOR> Two responses to the diamond problem:

\- I see this often with Guava. A wants 18 and B wants 21, neither works with the other, but they both with with 20. Because this tool looks at the actual methods being invoked, even if 100% of the methods are present, it's fine as long as 100% of the ones being invoked are.

\- Technically, as long as objects aren't exchanged between modules, it would be possible to use ClassLoader isolation to have two libraries each load their own incompatible dependency at run time. It's on my blue-sky TODO list.

<comment><USER14> > Technically, as long as objects aren't exchanged between modules, it would > be possible to use ClassLoader isolation to have two libraries each load > their own incompatible dependency at run time. It's on my blue-sky TODO > list.

Not only technically, this also works practically. We've done this for years in a POS application in order to be able to load different incompatible versions of vendor-provided hardware drivers at the same time, with the decision on which to use (one, the other, or maybe even both at the same time) being done at runtime. It's based on OSGi for modularization, which also provides other benefits besides classloader isolation, like allowing to bundle multiple native libs for different OSes and bit-nesses within a single jar and automatically choosing the right one to dynamically link into your JVM process that is needed for a particular platform that the application finds itself running on.

<comment><AUTHOR> Taken to a logical extent, I think this tool could be used to generate conflict-aware ClassLoaders at application start time, and automatically give each module the version it wants.

I guess it would take generating a new jar with a bootloader main() to wrap the existing main()?

</comment></comment></comment></comment><comment><USER15> Great stuff. Never got to building this myself but this is awesome.</comment>


Exploring the Calendar Metaphor on iOS - <AUTHOR> http://labs.teehanlax.com/project/upcoming

<comment><USER2> It's really neat to see work of this caliber being done, then... simply released on GitHub as an example.</comment>


Let's Create a Simple Load Balancer with Go - <AUTHOR> https://kasvith.github.io/posts/lets-create-a-simple-lb-go/ <comment><USER2> Fun stuff!

If you like this kind of thing, we are developing a very powerful and flexible reverse proxy with load balancing into Caddy 2: [https://github.com/caddyserver/caddy/wiki/v2:-Documentation#...](https://github.com/caddyserver/caddy/wiki/v2:-Documentation#httphandlersreverse_proxy)

It's mostly "done" actually. It's already looking really promising, especially considering that it can do things that other servers keep proprietary, if they do it at all (for example, NTLM proxying, or coordinated automation of TLS certs in a cluster).

If you want to get involved, now's a great time while we're still in beta! It's a fun project that the community is really coming together to help build.

<comment><USER3> Any thought or plans for some kind of back-pressure? Health checks and response times are useful, to a degree, but there are a number of workloads where they don't actually capture the cost of the work involved, and they can also really trip you up something nasty under certain failure conditions :D

edit: by way of example, I used to work for a service that customers would upload files to, that's all that the traffic was. There was wild variability in the size, processing cost, and upload speed of each request. None of the standard load-balancing approaches really balance "load" from a service perspective. While things worked, it was rarely optimal.

<comment><USER4> HAProxy has a built in way to do some of this -- you can setup an agent check that lets you dynamically adjust weights: [https://cbonte.github.io/haproxy- dconv/2.0/configuration.htm...](https://cbonte.github.io/haproxy- dconv/2.0/configuration.html#5.2-agent-check)

I think most proxies are planning to move logic like this to the control plane. Envoy's gRPC stuff has some ways to dynamically throttle traffic to backends.

Load balancers really need to become programming runtimes, imo. Config languages aren't very expressive, and almost everyone needs their own logic at the LB level.

I _just_ put together a demo of latency based load balancing using HAProxy + awk and it's neat, but still very rudimentary compared to what I could express in, say, JavaScript: [https://github.com/superfly/multi-cloud- haproxy](https://github.com/superfly/multi-cloud-haproxy)

<comment><USER2> Caddy 2 has an embedded scripting language that allows this. We have to flush it out some more but it's looking really good.

In some of our early testing on basic workloads, we found that it's up to 2x faster than NGINX+Lua, largely because it does not require a VM. (This is a broad generalization, and we need to specifically optimize for these cases -- but this approach holds promise.)

<comment><USER4> Oh neat! What language did you all settle on?

</comment></comment></comment></comment></comment><comment><USER5> Seems like most of the work is done by the `ReverseProxy` package and this code is more about health checking.

Nice to see how simple it is now though. Go is definitely a great choice for low-level networking, and .NET Core has recently become a great option as well.

<comment><USER6> I get what you mean and I agree, but this is far from low level networking

<comment><USER7> I'm also a bit confused where is .NET Core coming to the picture. It's becoming faster and faster but it's definitely not the best tool for load balancers.

<comment><USER5> Why not? The latest techempower results show ASP.NET Core saturating a 10GbE network card with 7M+ req/sec while being a full-featured framework, compared to custom C++ web servers. [1]

The memory management, type safety, and high-level productivity make it great for building load balancers and other infrastructure components.

1\. [https://www.ageofascent.com/2019/02/04/asp-net-core- saturati...](https://www.ageofascent.com/2019/02/04/asp-net-core- saturating-10gbe-at-7-million-requests-per-second/)

<comment><USER8> You'd have to know how much memory and cpu was being used vs the other solutions. They're all very close in terms of the key metric, but if Rust is using 50% of the memory, then its not much of a competition. Also, what sort of vm tuning, etc.

<comment><USER5> True but you can dive into the benchmarks more if you visit the techempower site. They run it on the same standardized hardware and in this .NET is very competitive on cpu and ram.

</comment></comment></comment></comment></comment></comment><comment><USER9> It's nice to see a walkthrough of what goes into a load balancer and how simple it is to build on in Go.

One nitpick is that the autho reversed the meaning of active and passive health checks. Active generates new traffic to the backends just to determine their healthiness, passive judges this based on the responses to normal traffic.

</comment><comment><USER10> I found it more convenient to keep the field unnamed when using mutex in a struct. So in the example that would be

type Backend struct {

      URL          *url.URL

      Alive        bool

      sync.RWMutex

      ReverseProxy *httputil.ReverseProxy

    }

<comment><USER11> The problem with that is that the methods for `sync.RWMutex` spill into `Backend`.

<comment><USER12> That isn't a problem—in fact, that's the entire point of arberavdullahu's suggestion.

<comment><USER13> Still seems like a problem to me. It breaks encapsulation.

The mutex is only used inside of SetAlive() and isAlive(), they're the only things this need to handle locking and unlocking. You don't want anything external to that calling the methods on RWMutex.

<comment><USER12> Oh of course, if you're not using it then don't expose it.

I haven't read the code so I can't verify if that's the case here, but I read OPs post as being worried about method clobbering (which is really a non- issue, if the popularity of embedding mutexes shows us anything).

</comment></comment></comment></comment></comment><comment><USER14> With talk of proxy and go. I am surprised gobetween hasn't been mentioned yet [https://github.com/yyyar/gobetween](https://github.com/yyyar/gobetween) . Last time I looked at the source it was very approachable.

</comment><comment><USER15> Load balancer seem like one of those problems that engineers should be cutting their teeth on.

And yet we have only a handful and one of the most popular charges money for cool features and does not appear to have an ABI for addons.

<comment><USER9> > And yet we have only a handful

Apache, nginx, haproxy, envoy, traefik, and probably dozens more that aren't on the top of my head.

<comment><USER16> You literally listed a handful ;)

<comment><USER17> Fabio, IIS, Varnish, Kong, Squid, lighttpd, emacs (probably).

<comment><USER18> [https://stackshare.io/stackups/emacs-vs- haproxy](https://stackshare.io/stackups/emacs-vs-haproxy)

</comment></comment></comment></comment></comment><comment><USER19> This is pretty cool. But I think an implementation that avoids the mutexes (mutices?) when allocating the backends and uses channels instead would probably perform better.

2 channels needed, 1 for available backends and 1 for broken ones.

On incoming request, the front end selects an available backend from channel 1. On completion, the backend itself puts itself either back onto channel 1 on success, or channel 2 on error.

Channel 2 is periodically drained to test the previously failed backends to see if they're ready to go back onto channel 1.

<comment><USER20> Channels do not avoid mutexes, they are implemented with them under the hood.

<comment><USER19> Sure, but with the above, there's 1 mutex to read the channel, not 1 per backend. And a single thread reading the channel.

Plus you know that if the backend is on the channel, you know it's ready to accept, and you don't need the alive flag with synchronized access.

<comment><USER20> > there's 1 mutex to read the channel, not 1 per backend

Fewer mutexes isn't necessarily an advantage, there will be far higher contention on that single mutex. Channel writes also require a lock.

<comment><USER19> One to read, and a single reader thread. That's no contention.

One to write, that's used for writing only, not both read/write as in the published design.

Edit: it's a variation on the following, but for ReverseProxies, not worker goroutines [http://marcio.io/2015/07/handling-1-million-requests-per- min...](http://marcio.io/2015/07/handling-1-million-requests-per-minute-with- golang/)

</comment></comment></comment></comment></comment><comment><USER21> > Multiple clients will connect to the load balancer and when each of them > requests a next peer to pass the traffic on race conditions could occur.

I quite don't understand what this means? What race conditions? Can anybody explain? Thanks.

<comment><USER22> I haven't really read it but I'll take a stab (with psuedo code). I think NextIndex() is incrementing s.current and modding it with servers.length.

To do this, there are three operations, SET s.current to +1, and GET s.current so that it can be MODDED with servers.length.

If that SET and GET are not coordinated between threads, then a race could sour the index. For example, if two threads call this method at the same time, they could both SET the +1 before either GETs the value, then they will both get the same value +2 from where it started instead of +1 for each caller.

<comment><USER21> Thanks for the explanation. Forgive my lack of knowledge, but can it not be solved by using parallelism instead of concurrency/threads? I thought Go has first class primitives to be able to do this?

<comment><USER22> > parallelism instead of concurrency/threads.

What do you mean? These seem synonymous to me.

> I thought Go has first class primitives to be able to do this?

TBH I'm only 1 week into learning Go myself (coming from Java/Scala/JS/etc). But it looks like the article used what Go offers. They used the atomic package which says, "provides low-level atomic memory primitives useful for implementing synchronization algorithms."

[https://golang.org/pkg/sync/atomic/](https://golang.org/pkg/sync/atomic/)

<comment><USER21> > What do you mean? These seem synonymous to me.

What I meant was similar to this talk: [https://blog.golang.org/concurrency- is-not-parallelism](https://blog.golang.org/concurrency-is-not-parallelism) where there is also a load balancer example around 20:20 and using go channels (the primitive I'm pertaining to)

<comment><USER20> Channels aren't a way to avoid mutexes/locking, they are just meant to be simpler to write & reason about. Channels are implemented using mutexes under the hood.

</comment></comment></comment></comment></comment></comment><comment> noah-kun Great tool here: [https://github.com/superfly/wormhole](https://github.com/superfly/wormhole)

</comment><comment><USER23> If you don't need http smarts on the load balancer LVS is a great option that will give you fantastic performance.

</comment><comment><USER24> Thanks for sharing the article and thanks all for the feedbacks :)

</comment><comment><USER25> The author states:

> After playing with professional Load Balancers like NGINX I tried creating a > simple Load Balancer for fun.

And while nginx[0] certainly can perform in this role, another production quality load balancer is HAProxy[1]. Both can do more than this, of course.

Reinventing solutions "for fun" certainly can be educational and help others learn key concepts, but the author should clearly state what they are doing is not meant to replace production quality solutions.

0 - [https://www.nginx.com/](https://www.nginx.com/)

1 - [https://www.haproxy.com/solutions/load- balancing/](https://www.haproxy.com/solutions/load-balancing/)

<comment><USER26> Doesn't 'for fun' clearly indicate that this isn't designed to replace a professional-grade solution though?

<comment><USER25> > Doesn't 'for fun' clearly indicate that this isn't designed to replace a > professional-grade solution though?

Depends on the person and their understanding of English colloquialisms I suppose.

What might be less misunderstood is:

      This is an educational project and is not
      meant for use in production systems.

Granted, native English speakers likely will infer this project is research/educational in nature and benefit.

But why leave it to chance?

<comment><USER27> Well the repo description is "World's most dumbest Load Balancer", which might count for something

<comment><USER25> > Well the repo description is "World's most dumbest Load Balancer", which > might count for something

Amongst the synonyms for "dumb"[0] is "simple" and is used commonly as such.

A definition of "simple" is[1]:

      easy to understand, deal with, use, etc.:
      a simple matter; simple tools.

The GitHub repo[2] has as its project URI the leaf segment "simplelb"[2].

The first non-title line of the GitHub repo[2] reads thusly:

      Simple LB is the simplest Load Balancer
      ever created.

Nowhere in the README.md are the words "educational", "production", "research", or "fun."

All of this is to say, what "might count for something" may not be what the author intends.

0 - [https://www.merriam-webster.com/thesaurus/dumb](https://www.merriam- webster.com/thesaurus/dumb)

1 - [https://www.dictionary.com/browse/simple](https://www.dictionary.com/browse/simple)

2 - [https://github.com/kasvith/simplelb/](https://github.com/kasvith/simplelb/)

<comment><USER28> Some bizarre hair-splitting here.

Besides, even if a beginner somehow wanders into the project, mis-IDs the project, and uses on their beginner server, then it sounds like a good learning experience for them even though the README didn't give them permission to learn by neglecting to include the word "educational", god forbid.

Is this the catastrophic scenario you have in mind?

<comment><USER25> > Some bizarre hair-splitting here.

I was trying to be explicit as to my reasoning. If that came across as "hair- splitting" then I suppose I failed to adequately do so.

The whole point I was trying to make is that people find code in all sorts of ways. And my opinion is that if a public repo, such as GitHub, has a project which could easily be both desired (due to need) and misused (due to intent), then it might be a good idea to put a simple declaration in the project's README.

Given all the blow-back this concept has incurred, I would think the concept is either wholly immaterial or now proven as needed.

<comment><USER29> Relevant username?

This seems to be a strange hill to die on. For all intents and purposes there is a declaration in the readme. And anyone who knows enough to want to operate with this will see that it's fairly basic. Others will likely just reach for a more generic or battle tested solution.

In any case, people should be able to do what they want with their repos and code, assuming legality of course.</comment></comment></comment></comment></comment></comment></comment></comment>


Wikipedia's getting a new look - <AUTHOR> http://en.wikipedia.org/wiki/Wikipedia:User_experience_feedback/New_features

<comment><USER2> The problem here is it is absolutely not "more user friendly" to just automatically make things more WYSIWYG. When it is important to preserve content and structure rather than just presentation---as is _nice_ in HTML generally but _crucial_ on Wikipedia---you need to provide a tool that helps you do that, not just make it pretty.

I have a student who has just completed an honors project that demonstrated that if you give web novices a simple markup language and a _non_ -WYSIWYG editor (but do give them a preview button) they confirm presentation but focus on content, which ultimately makes websites more usable and often prettier too. It won the ugrad research competition at SIGCHI this year, so I don't think she was out in left field on this.

So, short version: Wikipedia's making a big mistake here.

<comment><USER3> I don't think Wikipedia is making things more WYSIWYG, they're mostly just collapsing some data heavy sections until you click on them.

</comment></comment><comment><USER4> I've been using the beta now for about 5 months, and in my experience it's cosmetic. Those cosmetics definitely are an improvement in usability and looks.

IMHO, it's a small step, but in the right direction for sure.

<comment><USER5> and the direction of the total step is about 60 degrees off, leaving sqrt(3)/2 step in the right direction.

<comment><USER6> If your direction is 60 degrees off then the right-direction component is 1/2, not sqrt(3)/2. (You move sqrt(3)/2 in the perpendicular direction.)

<comment><USER5> this is what happens trying to remember trig after 30 hours on call.

</comment></comment></comment></comment><comment><USER7> it still blows my mind that they haven't implemented a more user friendly editor.

<comment><USER8> It's the unfriendliness of the editor_s_ which has been the problem in my experience.

When someone goes through the trouble of creating a well-cited article only to have it deleted for being 'not notable', they're unlikely to bother again. If there's a Wikipedia issue to resolve, it's the deletionists and the strange environment which encourages their behaviour.

<comment><USER9> Out of curiosity, what kind of topics are you writing about when you submit well-cited articles that are later deleted?

</comment></comment></comment><comment><USER9> I can read mark-up languages (I have been using them for editing since well before the invention of HTML), so the barely changed editor seems fine by me, but I can well believe it is off-putting to most would-be Wikipedians. The best feature of the editor is preview mode, so I can get a reality check on whether I've edited correctly or not.

I tried out the new look in beta beginning more than a month ago. The most habit-changing change was the relocation of the search input field. But that just gets it closer to the industry standard of being in the upper right of the page, so I'm gradually getting used to that.

</comment><comment><USER10> Will they stop talking about it and do it already? I'm tired of hearing of this new look and not seeing it 100% live yet.

</comment><comment><USER11> I don't know, I'm pretty ok with the way the editor is now. Maybe I've just grown accustomed to it.

<comment><USER12> I still don't know, nor can be bothered working out various different unnecessary markup languages, and I program. God forbid anyone whose talents lie elsewhere tries to contribute.

<comment><USER13> It's okay, most likely some overzealous editor will simply delete whatever that person contributes anyway. Contributing to Wikipedia as a non-editor is a massive waste of time since even minor submissions get killed quickly and quickly turn into massive fights over notoriety and content.

<comment><USER9> _Contributing to Wikipedia as a non-editor_

Do you mean "contributing to Wikipedia as someone without a user account"? I just started doing Wikipedia edits, having first set up a Wikipedia account, when I declared a vacation from Facebook. I like to contribute good content to the Interwebs. On Facebook, I was mostly contributing links to articles about Facebook privacy issues. While I was taking a break from Facebook, another HN participant linked to a Wikipedia article in an HN thread, and I saw an edit I could do there that would change the close-enough-for-government work word into the exactly correct word. So I made the edit. Later I made a more substantive edit and added a recent reference to a more visited and more controversial article--on a subject much discussed here on HN. Over time, I will check how well my edits are accepted. Someday I'll try posting a whole new article, when I have a sense of what is missing and have reference materials at hand. I'll evaluate my experience by how other Wikipedians respond to my edits.

<comment><USER13> No, with an account. I happen to know a bit about a few, completely unrelated areas (the area I live in, foods from a certain country, digital music composition, a couple martial arts, computer sciency stuff, etc.) that I wanted to make substantial contributions to fill those portions of wikipedia out. About 2 and a half years ago, I signed up and made an account and started dutifully filling out information, adding new articles, editing some old ones. Normal stuff.

I probably did a few hundred edits and contributed 30 or so new articles. As far as I know, not one of those things survived the first month.

I haven't even bothered after that experience. Citing the submission guidelines led to nothing.

The cabal of super-user types there that seem to want to fix wikipedia on the current status quo (unless they themselves edit something) made wikipedia at the time unbearable as a new contributer. It wasn't like there were even requests for changes or new edits (things that wouldn't have been a problem since I was new and learning the ropes) -- just deletions. Sometimes within minutes.

It wasn't even that somebody had come along and cleaned up my submissions, or provided some editing work, just....gone.

After that wonderful experience I decided to spend those few hundred hours someplace else.</comment></comment></comment></comment></comment>


Inside The Deal That Made Bill Gates $350,000,000 [1986] - <AUTHOR> http://features.blogs.fortune.cnn.com/2011/03/13/inside-the-deal-that-made-bill-gates-350000000/

<comment><USER2> This is one of the most interesting articles I've read in a while.

A few observations:

\- The similarities between GOOG's IPO strategy and MSFT's IPO strategy surprised me. MSFT did it on their own terms over a decade before GOOG was even founded. I wonder if the GOOG guys referred to how MSFT did it to draft their own strategy. Also, it seems that MSFT and GOOG, (and also FBOOK) all treat going public as a very low priority and not a goal in and of itself but really just something that needs to be done. Almost as a nuisance.

\- I admire the fact that Bill Gates granted this type of access to Fortune during the IPO process. I found it quite interesting and instructive. We're so used to CEOs blogging and tweeting about the startup process nowadays but BG was doing it back in the 80's.

<comment><USER3> So, with private stocks, who decides on the symbol?

<comment><USER2> Uninformed hn users decide, of course.

</comment></comment></comment><comment><USER4> Posted a while back here: <http://news.ycombinator.com/item?id=2319236>

<comment><AUTHOR> I thought that news.ycombinator.com detects duplicates. It's the same URL, character to character.

<comment><USER5> Only if it's in memory, that one was posted two months ago so the server wouldn't have been able to detect it. However I'm not sure why obtino linked to it as there's no comments on that story.

<comment><USER3> Maybe to prove it was previously posted?

<comment><USER5> Well yes, but I don't see how that's relevant in the discussion. The topic hadn't come up and since there was no fission on the other submission mention it doesnt add anything to the potential conversation, not to my mind anyway, perhaps I'm missing a use case.

</comment></comment></comment></comment></comment><comment><USER6> I wonder if he regrets selling those $1.6 million of shares then, considering that they probably at least 100 times more valuable now?

<comment><USER7> you seriously think bill gates has any concern about his personal fortune at all now?

<comment><USER3> Enough so to go from robber baron to philanthropist.

</comment></comment></comment><comment><USER8> "Bill Gates the software prodigy". Ha-ha. A PR-fuckup that unfortunately found its way into the minds of journalists who should know better.

In the 80's many books have been written that point out nicely that Microsoft is just a bunch of criminals. They didn't do anything to make our lifes better.</comment>


Who Gets Venture Capital Funding? - <AUTHOR> http://www.bloomberg.com/graphics/2016-who-gets-vc-funding/ <comment><USER2> Not much more discussion on the makeup of founders. Solid, if shallow, analysis.</comment>


Nexus One. Frustrating Sales Process - <AUTHOR> http://omar.is/2010/01/07/nexus-one-frustrated/ <comment> brown9-2 All of the problems he has experienced sound like they have more to do with Google Checkout than anything specific to Nexus One</comment>


37signals.com - Evolution of a homepage - <AUTHOR> http://37signals.com/svn/posts/3007-37signalscom-homepage-evolution

<comment><USER2> Two things struck me:

1\. Not much overall change.

2\. Negative slogans are quickly phased out in favor of positive ones. "Drop a bomb on your competitors" and "gain an unfair advantage" quickly give way to "a better way to work with people."

<comment><USER3> Not much overall change? Midway through the movie the complete design for the entire thing changes from a colourful, pastel shaded page to black/white with large fonts and a focus on copy. That's a pretty huge change and definitely not inspired by marginal A/B tests. They just changed their minds, tried something different, and stuck with it.

<comment><USER4> Well overall they changed it once. I know a lot of websites that have made huge changes several times.

I expected more from the video. There were no evolution. Just little image/text/size-changes. And then they changed it completely, and did the same as before.

<comment><USER5> I was expecting more, but instead like the minor evolution. You can see the text be tweaked bit by bit. Font, sizing, arrangement within sections, word replacements, etc.

Think it speaks to continually tweaking your site bit by bit. Don't need to completely redo it or do massive revamps.

</comment></comment></comment></comment><comment><USER6> There's a good mix of iterative changes and structural changes. I think the structural ones (that don't deal with aesthetics) are the most interesting.

One trick I like to do is stand a few feet back from the monitor/LCD, and try to, in 3-5 seconds, figure out what I'm looking at. I think its a good trick because you'll realize where your eyes go to first (smaller text/details usually gets blurry), and the time interval will tell you what you're communicating clearly.

When you compare the first version in the video with the last using this trick, there's a huge difference.

The 2009 version has an overwhelming amount of detail, with an ambiguous "Change your Business"/"Change the way you work" title. A lot of information is crammed in the first frame (company history, latest news, etc). The 2011 version is remarkably clearer: The two large texts explain the product offerings and that they are kind of a big deal (social proof) - both keys to selling. The rest of the information is prioritized descendingly. "Style" (what people most typical mean when they say design) has been minimized.

Another company's website that is great with this (standing back/first thing that pops in your head) is, suprise, surpise... apple.com

</comment><comment><USER7> One thing 37S have got (in spades) is _good writers_. That really shows here, and generally throughout their products.

</comment><comment><USER8> I see a lot of arbitrary changes in this video. I'm not saying all of them were, but I don't see the point in making your web team add 5 pixels here or there, or switch out "us" for "it".

I didn't perceive their strategy as "experimental" but as "erratic". Even if A/B testing showed slight gains or falls, I would prescribe those changes to random chance over the value added/lost. Unless there's a possibility of measurable effects, go with your gut.

</comment><comment><USER9> looks like the result of continuous a/b testing results... change one thing, deploy to some people, capture funnel change, rinse, repeat.

<comment><USER10> None of the changes here were due to a/b testing. This is just the initial design process + internal iteration.

</comment></comment><comment><USER11> I loved the little war over whether to use 'us' or 'it' (0:52-0:55) in the phrase:

 _Millions of people depend on our software. Entrepreneurs, small businesses and teams inside big organisations rely on it/us daily._

<comment><USER10> There were dozens of subtle variations on this statement that were never committed. I hope to find some time to do a detailed post on that sometime.

<comment><USER12> I'd love to see a post on the branding lessons learned through variations in copy. What phrases worked and what ones sucked. The biggest branding mishap I see on a regular basis is a company that doesn't know how to talk to its audience.

</comment></comment></comment><comment><USER13> With that title, I was expecting an evolution from the early days, when the homepage was just a manifesto. I really wanted to see _that_ video, and this one left me underwhelmed.

The use of a huapango as the background music made me smile though.

</comment><comment><USER14> I love how subtle the changes in this were. Shows 37signals' great attention to detail, focus, and restraint. Fun idea for kids: organize the different screens into a book and make a "what changed in this picture" game.

Sidenote: One of my favorite features of the site is the "Happy Day" in the upper left hand corner. Best part of the video was seeing it appear out of thin air.

</comment><comment><USER15> Incredibly interesting to watch, especially notable areas of A/B testing. They did a lot of testing with exactly how to display their media mentions.

I'd love to see this for sites that went through multiple pages of transitions.

</comment><comment><USER16> While I was watching, it felt slightly too fast.

I think editing less, leaving it at a steady pace (say 1 second per week, regardless of the amount of changes) would have given it another dimension. A data-dense rhythm.

</comment><comment><USER17> <https://gist.github.com/1219927> Here is a quick shellscript for anyone who wants to do this for themselves using url2png.com

</comment><comment><USER18> What's interesting here is not just how they play with the copy, but how they iterate over small details such as margins, padding, and shades of colors (even on the text and links).

</comment><comment> juliendsv-mbm Very cool! fun to watch, not a big fan of the music though..</comment>


Calculating the area of an annulus from a tangent - <AUTHOR> http://blog.jgc.org/2006/09/bouts-best-of-usethesource.html

<comment><USER2> I wrote down the equations for the two circles and the line then intersected the line with the outer circle to get a relationship between the length of the line and the two radii, calling this equation one. The second equation is the equation for the area of the annuli given their radii. Solving both equations for R^2-r^2 and equating gives the answer.

</comment><comment><USER3> What bit of knowledge do you need to understand the 'logical' solution must be true?</comment>


Warehouses – Load Your Analytics Data into Redshift and Postgres - <AUTHOR> https://segment.com/warehouses <comment><USER2> Hey HN — Segment PM on the project here! Happy to answer questions.

Under the hood we're using NSQ as a queuing layer, S3 for storage and batched uploads, Amazon Aurora (for S3 indexing), DynamoDB for billing and metadata storage, and several distinct Go services that handle batching, transformation, schema updating, deduplication and internal consistency checking.

It's been in beta for several months and we're loading about 10,000 events per second into customers' databases today.

<comment><USER3> How real-time is this stuff? If an order record is inserted can I instantly see on a dashboard the +1 based on a custom report query?

<comment><USER4> Scrolling down the posted page you can see the details on loading latency: it ranges from daily loading on the free plans to 30 minutes on the business tier.

</comment></comment></comment><comment><USER5> I think that this is direction of analytics and we'll see products similar to this one in the next few years. The analytics companies realized that they can't answer all the questions their customers ask so they started to add this kind of features to their products, just look at custom applications of Mixpanel, Redshift integration of Amplitude or S3 integration of Keen.io.

The main reason that these companies implement these features to their infrastructure is to provide an alternative way to analyze data within their product in order to prevent losing their existing customers that need more advanced analytics features. (They are usually the biggest paying customers) The funny thing is that when you have an analytical database combined with a stream processing application, you can ask almost all questions you want to ask and get answers you need quickly enough so the value of their core product becomes less valuable when you have this alternative way.

I think that the BI tools such as Periscope and Mode Analytics realized this and started to promote their products as an analytics product rather than an application that creates charts from your data.

[Shameless plug] I'm also working on an open-source analytics platform ([https://github.com/buremba/rakam](https://github.com/buremba/rakam)) that collects data from clients (web, mobile or a smartwatch, doesn't matter), transforms (ip-to-geolocation, referrer extraction etc.) and stores data in a database that you specified. (currently there are two alternatives: Postgres and an in-house big data solution that uses PrestoDB as query engine)

Then, you to execute SQL queries, pre-aggregate your data for fast reports with continuous queries and cache query results with materialized views. Once you have these features, you can perform all analytical queries such as funnels, retention, segmentation etc. and create your custom analytics service easily.

</comment><comment> sam-mueller This is a smart move by Segment, since the industry has been moving in this direction. Looks like mParticle launched support for redshift a few months ago:

[http://blog.mparticle.com/mparticle-launches-next- generation...](http://blog.mparticle.com/mparticle-launches-next-generation- of-its-customer-data-platform/)

</comment><comment><USER6> This design looks very similar to Stripes. Even the drop down in the header has the same action when clicked.

[https://stripe.com/relay](https://stripe.com/relay) [https://stripe.com/subscriptions](https://stripe.com/subscriptions)

<comment><USER7> I guess colors were picked up based on psychology, and for design, yes, it's similar. Maybe it's actually the same person/people? Who knows! :)

<comment><USER6> It definitely may be the same designer; who knows. It's just pretty strange that so many of the design elements of Stripe are 100% reflected on this companies page.

<comment><USER8> Stripe's design is beautiful and if be happy if more people imitated or copied them :)

<comment><USER6> I definitely agree that Stripe's design is beautiful, but this is just too close for me. I think it would be awesome if they built upon Stripes beautiful interface and built something nicely different!

</comment></comment></comment></comment></comment><comment><USER9> I thought they offered this service for quite some time. What's changed?

<comment><USER2> Hey there! You're right, we launched Redshift to our enterprise customers last November. There are three big changes today…

1) We're lowering the price and opening it up to all our customers to make it more accessible 2) You can bring your own database. This is helpful for customers who already have a data warehouse and want to load Segment data into it. 3) We now support Postgres, in addition to Redshift

<comment><USER9> Thanks for the reply! Any plans on supporting other databases? Namely the Microsoft alternatives (SQL Server/SQL Datawarehouse)?

<comment><USER2> No problem! They're not yet on our near-term roadmap, would you mind submitting a request for your specific database here and we can keep you updated? [https://segment.com/contact/integrations](https://segment.com/contact/integrations)

</comment></comment></comment></comment><comment><USER7> I love how the pricing is clearly value based and not cost based. I can't imagine that this is massively more complex, but the price is significantly higher (and it's fine), basically, more enterprise-y. I love it!

Wondering if/how that will impact their bigger integration plans that includes a feature to replay data for new integrations you add after the fact.

</comment><comment><USER10> Interesting... You compete with Alooma [1].

Your pricing is a bit out of range for most startups IMHO. you go from 0 to 400. I would love a 20$, 99$ and then 400$ tier.

I would go with Alooma if their pricing is right ... And replace most of my other analytics stacks.

Even Amplitude does this in their priced tier..in that you don't need your own redshift cluster (you get query access to your tables in their db).

[1]. [https://news.ycombinator.com/item?id=10651425](https://news.ycombinator.com/item?id=10651425)</comment>


WebKit: An Objective View - <AUTHOR> http://robertnyman.com/2013/02/14/webkit-an-objective-view/

<comment><USER2> Because of the news, I downloaded and tried out Opera again last night. It was the first browser I've switched to from IE6, before Chrome came and swept me over with its minimalisic UI and amazing omnibar.

There is still one thing I miss from Opera to this day.

Pretty much __instant __go-back/go-forward times. Go to any static page, then another, then back and forward is nearly instant in Opera.

In Chrome, pages get reloaded and can sometimes take from 1 to 5+ seconds if some server lagged out. Which is ridiculous if you just want to go back to where you _just_ were a millisecond ago, because something caught your attention after u had already clicked on some link. Why don't they keep these things cached?

So my question is: is that a browser-level feature or rendering engine-level one? Will Opera preserve it? Will it finally come to other browsers?

Note: Safari has recently added the two-finger swipe that reveals the previous/next pages. However, they're using cached images while the actual page gets loaded. Better than nothing, but I still prefer Opera's true blazing speed here.

<comment><USER3> _This_. I've got a mobile device with 32GB of unused space, but Android wants to reload from the network? My laptop has 1TB, but Chrome wants to reload from the network when "restoring all tabs"? Look Chrome, I'll _tell you_ when it's safe to refresh, mkay?

<comment><USER4> If your browser started storing everything on your harddrive your computer would likely come to a crawl. The problem is RAM space, not HD space.

</comment></comment></comment><comment> jarek-foksa WebKit project consits from four components:

      - WebCore - the rendering engine
      - JavaScriptCore (aka SquirrelFish or Nitro) - JavaScript engine
      - WebKit - synchronous API
      - WebKit2 - asynchronous API

All WebKit-based browsers are using the same rendering engine (that is WebCore). Only some of them are using other WebKit components.

Google did not fork WebKit to implement Gamepad API and WebGL, those features are implemented in upstream WebKit project (check <http://goo.gl/5M9gN>). Safari does not support them probably because of its longer release cycle.

It's true that there is no single version of WebKit though. Browser vendors are free to take any SVN snapshot, replace any component, toggle on/off any feature and brand it with any version number they prefer.

<comment><USER5> >Safari does not support them probably because of its longer release cycle.

Safari doesn't support them simply to avoid having Mobile Safari apps compete with the App Store. Same reason there's no in-DOM audio playback, IMHO. iAds are allowed to use WebGL, but not ordinary web pages.

</comment></comment><comment><USER6> Prefixes need to move away from vendor names and towards signature code names. If Gecko and WebKit both support the same signature, it should be one line of code to call that function in both browsers.

-bananaPageStyle: 2up, turn; -pineapplePageStyle: turn, 2;

I don't care which browser you have so long as it understands the syntax for the beta feature I want to use.

This also addresses the fear of a WebKit monoculture on mobile. If Firefox implements the same signature, it will behave correctly on WebKit first pages without doing something silly like changing its prefix to webKit.

</comment><comment><USER7> I'm somewhat confused. I'm not into the whole webdevelopment thing, but what is so terrible about all browsers sharing a common implementation of at least the basic features that pertain to the alignment, orientation and sizing etc. of elements on a page?

Browsers can still differentiate themselves through a faster JS interpreter or new fancy teleconferencing APIs all they want.

<comment><USER8> > I'm somewhat confused. I'm not into the whole webdevelopment thing, but what > is so terrible about all browsers sharing a common implementation of at > least the basic features that pertain to the alignment, orientation and > sizing etc. of elements on a page?

If everyone shares the same underlying implementation, then standards are meaningless: The standards body can say whatever they want, but in practice all that will matter is what actually runs on the single implementation.

If there is a bug in that implementation, everyone will code around that bug. If there is more than one way to implement a feature in the standard, people will code for the way in the single implementation. And if there are extra non-standardized features in the single implementation, people will use those.

So the standard will be meaningless. Does that matter? In the short term perhaps not. But the only reason WebKit could achieve what it achieved was that there _was_ a strong standard. IE's dominance was broken and multiple browsers existed, and WebKit could render the same pages by supporting the same standard.

It was hard to break IE's dominance, and if WebKit becomes the new single implementation, it will be similarly hard to make it possible for a new browser to show up.

Does that matter? Well, when there is a standard, you can write a better codebase that renders the same content. WebKit, like all other current browsers, is written in C++. That language is less secure and parallel processing friendly than other languages. If someone wants a better browser than WebKit by using another language, that will only be possible if there are standards for web content - otherwise, it will be a chase after WebKit specific bugs and features. Bug parity/bug-for-bug compatibility is extremely difficult to achieve, and becomes harder as the web includes more and more content. So it will be harder to break a WebKit dominance than an IE one.

<comment><USER9> > If everyone shares the same underlying implementation, then standards are > meaningless: The standards body can say whatever they want, but in practice > all that will matter is what actually runs on the single implementation.

How is that different from the case today? The web is moving much faster than the Standards and their inaction has lead to their dwindling importance. The W3C hasn't even ratified HTML5 yet (their hoping to do so in 2014!).

Within the time frame of the W3C discussing HTML5 Google started Chrome and has shipped 24 versions. Not only that, but they aren't waiting around for the W3C to vote and have shipped a ton of emerging tech: WebGL, WebRTC, NaCL, Web Speech, Web Intents, etc etc etc.

How is this bad? We're building stuff now instead of waiting around for a decade.

<comment><USER10> > WebGL, WebRTC, NaCL, Web Speech, Web Intents, etc etc etc.

The difference is that all these APIs, with the exception of Native Client (which is unlikely to ever take off beyond Chrome), either are standardized already or have standard drafts being worked on. Mozilla does not have go to hunting around in WebKit code to figure out how to implement them.

</comment></comment></comment></comment><comment><USER11> Can't Opera open source the Presto engine? If they want to contribute some of their ideas for Presto in Webkit, then open sourcing it could mean others will be doing it for them, if they were really good ideas.

<comment><USER12> One of the Opera engineers has commented on this. They did talk about it, and concluded that it'd be about a year of work to usefully open source Presto. It has licensed third-party components that would need to be replaced, so they can't even just do a code dump.

<comment><USER13> They could just release an unusable copy without the third-party components, and leave the replacement to the community.

<comment><USER14> You're assuming those components are cleanly separated from the rest of the codebase. Especially if they were modified, this is not necessarily easy to determine.

</comment></comment></comment></comment><comment><USER15> Found the grammatical error "it's own." Immediately assumed author was uneducated and closed the tab.</comment>


REXPaint: Powerful, User-Friendly ASCII Art Editor - <AUTHOR> https://www.gridsagegames.com/rexpaint/ <comment><USER2> REXPaint is a great tool, and the only reason I know it exists is from playing the game it was used heavily for, Cogmind. It's a great roguelike game, and if you enjoy them I would suggest you give it a try.

The dev is active in the Roguelike Discord server as well. Any interaction I've had with them has always been positive and kind. Cogmind was great to see grow into what it is today.

<comment><USER3> Dunno if its actually good as a roguelike, but thats gotta be by far the neatest UI I've ever seen. Guy has a good blog as well about cogmind's development

<comment><USER4> Can confirm it's great as a roguelike. This page is a nice summary of some of the new features it brings to the genre: [https://www.gridsagegames.com/cogmind/innovation.html](https://www.gridsagegames.com/cogmind/innovation.html)

<comment><USER3> That page is actually what draws my concern -- it's got a lot of cool UI/UX improvements over other roguelikes, and there's a lot other games could/should learn from this guy... but other than the "A living ecosystem" section, there's nothing at all about the gameplay itself

Even his articles don't mention much about how it all plays out; it seems like he's far more interested in building a roguelike than making a good one (he talks a lot about how it impacts development, but not how it impacts play). But tbf, thats pretty much the starting story of any roguelike's development. I'd definitely start with this guy's resources if I was interested in making one

<comment><USER5> Ah, this was mainly because it's easiest to show UI/UX innovation in images :P

The gameplay is unique, and much has been written about it, but it's not all in one centralized location like that page, which was easier to put together as simply images for demonstration.

For the other side of things there are many many articles on the blog detailing systems and mechanics and design considerations. Plus there are Steam reviews, which give a pretty clear picture of what people think. This one, and many others, are telling: [https://steamcommunity.com/profiles/76561198035898628/recomm...](https://steamcommunity.com/profiles/76561198035898628/recommended/722730/)

Also hi :)

(Edit: Oh, and I stopped writing a lot of Cogmind-specific design the articles for the blog in recent years, and some of the writing you might be looking for has gone towards FAQs here: [https://www.reddit.com/r/roguelikedev/wiki/faq_friday](https://www.reddit.com/r/roguelikedev/wiki/faq_friday))

<comment><USER3> Oh damn, thats a lot of material

When I finish reading through, you've probably got a buy-in out of me; that much thinking has gotta produce _something_ interesting, good or bad ;)

<comment><USER5> Hahaha, thanks. It's funny when I sometimes get notices from new players who've said they got into it after having read all my blog and FAQs. I'm like "you just read... ALL of that?!"

(I'm happy to have started the FAQ series beyond the blog, because it's about so many other devs' RL projects as well, and we can share and learn so much more!)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Anything that would preclude one from making a similarly-robust HTML5 (Canvas2D) ASCII editor?

Font rendering wouldn't even be required. Static bitmap sprite data in a predefined grid cell layout would suffice. With fore and background color altered via fast pixel manipulation using pre-allocated array buffers. Memory usage, on large canvas areas, might be the only prohibitive issue ;)

I use the wonderful Piskel 2D sprite drawing tool. And it can handle sizable frame counts at 1024x1024 resolution.

[https://www.piskelapp.com/](https://www.piskelapp.com/)

<comment><USER7> Here's a Canvas2D-based viewer for REXPaint files:

[http://jjclark1982.github.io/rex-viewer/](http://jjclark1982.github.io/rex- viewer/)

Adding an editing interface is left as an exercise for the reader.

</comment></comment><comment><USER8> you can still download ACiDDraw here - [http://www.acid.org/apps/apps.html](http://www.acid.org/apps/apps.html)

<comment><USER9> Ah. That reminds me, I used to use TheDraw on DOS back in the day.

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

<comment><USER10> I have a WIP renderer for the TDF font format for UNIX that I'm working on, which can output the fonts in CP437 or UTF-8 format on the terminal, or with the help of another tool, to a PNG.

Example output:

[https://i.imgur.com/bkwSCEU.png](https://i.imgur.com/bkwSCEU.png)

That looks like a 4 at the end, but it's a 9. A lot of the TDF fonts are a bit crazy.

Better image showing the different colored versions that are stored inside some TDF's:

[https://i.imgur.com/6cyjZGi.png](https://i.imgur.com/6cyjZGi.png)

Another example rendered to terminal rather than PNG using Unicode:

[https://i.imgur.com/L45U347.png](https://i.imgur.com/L45U347.png)

Although for some bizarre reason, gnome screenshot tool completed changed the colors around.

<comment><USER9> That's pretty cool!

</comment></comment></comment></comment><comment><USER11> Like the ever popular and powerful Pablodraw[0], this is a .Net application.

I tried a few CLI ANSI and ASCII editors on Linux recently, and it was not a great experience. Most are fairly inscrutable with limited documentation, and at least on my OS, some were just plain broken.

Ah, bitrot.

[0] [http://picoe.ca/products/pablodraw/](http://picoe.ca/products/pablodraw/)

<comment><USER12> I fixed a networking bug in PabloDraw about 7 years ago and recall encountering only Visual C++. Are you sure PD is a .NET app?

Or is my definition of .NET wrong?

<comment><USER13> It depends on .NET 4 (or Mono [1]) and is built on Eto.Forms [2], so it most definitely is a .NET application, and more than likely is written in C#.

[1] [https://www.mono-project.com/](https://www.mono-project.com/)

[2] [https://github.com/picoe/Eto](https://github.com/picoe/Eto)

</comment></comment></comment><comment><USER14> It's about time we had terminal emulators that took font/size commands the same way they understand colour changes. There's nothing (today) stopping us from making terminals that support outputting a font-code before dumping out some art like this produces, then setting it back afterward.. Suddenly TUIs could make use of tools like this ..

<comment><USER15> Don't they already do for fonts (sort-of)? [http://www.ecma- international.org/publications/files/ECMA-ST...](http://www.ecma- international.org/publications/files/ECMA-ST/Ecma-048.pdf), section 8.3.53:

 _FNT - FONT SELECTION

      Notation: (Ps1;Ps2)
      Representation: CSI Ps1;Ps2 02/00 04/04
      Parameter default values: Ps1 = 0; Ps2 =0

FNT is used to identify the character font to be selected as primary or alternative font by subsequent occurrences of SELECT GRAPHIC RENDITION (SGR) in the data stream. Ps1 specifies the primary or alternative font concerned:

      0 primary font
      1 first alternative font
      2 second alternative font
      3 third alternative font
      4 fourth alternative font
      5 fifth alternative font
      6 sixth alternative font
      7 seventh alternative font
      8 eighth alternative font
      9 ninth alternative font

Ps2 identifies the character font according to a register which is to be established._

Also, section 8.3.55 and 8.3.56:

 _8.3.55 GSM - GRAPHIC SIZE MODIFICATION

      Notation: (Pn1;Pn2)
      Representation: CSI Pn1;Pn2 02/00 04/02
      Parameter default values: Pn1 = 100; Pn2 = 100

GSM is used to modify for subsequent text the height and/or the width of all primary and alternative fonts identified by FONT SELECTION (FNT) and established by GRAPHIC SIZE SELECTION (GSS). The established values remain in effect until the next occurrence of GSM or GSS in the data steam.

Pn1 specifies the height as a percentage of the height established by GSS

Pn2 specifies the width as a percentage of the width established by GSS

8.3.56 GSS - GRAPHIC SIZE SELECTION

      Notation: (Pn)
      Representation: CSI Pn 02/00 04/03
      No parameter default value.

GSS is used to establish for subsequent text the height and the width of all primary and alternative fonts identified by FONT SELECTION (FNT). The established values remain in effect until the next occurrence of GSS in the data stream. Pn specifies the height, the width is implicitly defined by the height.

The unit in which the parameter value is expressed is that established by the parameter value of SELECT SIZE UNIT (SSU)._

</comment></comment><comment><USER16> It looks very impressive, in my moment of ignorance however, I got excited that maybe the REX was referring to REXX. That would have been quite a feat.

</comment><comment><USER12> Looks like a contender for an alternative to PabloDraw [0], my go-to for drawing ASCII art.

Does REXPaint support real-time shared sessions? That's PD's killer feature, watching a skilled artist work from halfway around the world is an amazing experience!

[0] [http://picoe.ca/products/pablodraw/](http://picoe.ca/products/pablodraw/)

</comment><comment><USER17> reminds me of [http://www.jave.de/](http://www.jave.de/)</comment>


Facebook Now Worth $50 Billion In Secondary Trading - <AUTHOR> http://techcrunch.com/2010/11/29/facebook-now-worth-50-billion-in-secondary-trading/ <comment><USER2> Am I one of the few who thinks that this is absurd? This reminds me of that 37 Signals Article: [http://37signals.com/svn/posts/1941-press- release-37signals-...](http://37signals.com/svn/posts/1941-press- release-37signals-valuation-tops-100-billion-after-bold-vc-investment) I realize that this valuation doesn't come from a VC investment but from a private stock exchange. Regardless, is Facebook really worth $50 billion though?

<comment><USER3> This is just a valuation based on the last traded price on a relatively illiquid market. If Facebook was traded on a public exchange (where all market participants would have access to Facebook's vital financials) or was just acquired would we know its true worth.

<comment><USER4> On a public exchange, there is more liquidity, but the valuation would still be based on the last traded price. Nevertheless, I guess this gets you closer to its "true worth"

</comment></comment></comment><comment><USER5> Ya know who are the real winners in all this madness? SecondMarket and SharesPost.

<comment><USER6> This also makes great fodder for tech news outlets.

</comment></comment><comment><USER7> TC's constant appraisal of Facebook is annoying. They most likely have a deal of some sort.

<comment><USER8> They get the same deal as the rest of the media. They keep writing sensationalist stories, we'll keep talking about it, and advertisers pay them for it.</comment></comment>