James Gosling is probably best known for creating the Java programming language while working at Sun Microsystems. Currently, he is the chief software architect at Liquid Robotics. Among other projects, Liquid Robotics makes the Wave Glider, an autonomous, environmentally powered marine robot. James has agreed to take a little time from the oceangoing robots and answer any questions you have. As usual, ask as many as you'd like, but please, one question per post.
Lemeowski writes "Game studios go to great lengths to protect their IP. But board game designer Daniel Solis doesn't subscribe to that philosophy. He has spent the past ten years blogging his game design process, posting all of his concepts and prototypes on his blog. Daniel shares four things he's learned after designing games in public, saying paranoia about your ideas being stolen "is just an excuse not to do the work." His article provides a solid gut check for game designers and other creatives who may let pride give them weird expectations."
The following is an architectural overview of salesforce.com’s core platform and applications. Other systems such as Heroku's Dyno architecture or the subsystems of other products such as work.com and do.com are specifically not covered by this material, although database.com is. The idea is to share with the technology community some insight about how salesforce.com does what it does. Any mistakes or omissions are mine.
This is by no means comprehensive but if there is interest, the author would be happy to tackle other areas of how salesforce.com works. Salesforce.com is interested in being more open with the technology communities that we have not previously interacted with. Here’s to the start of “Opening the Kimono” about how we work.
Since 1999, salesforce.com has been singularly focused on building technologies for business that are delivered over the Internet, displacing traditional enterprise software. Our customers pay via monthly subscription to access our services anywhere, anytime through a web browser. We hope this exploration of the core salesforce.com architecture will be the first of many contributions to the community.
Consistency vs. best practice: they are two competing interests any time a dev is working on legacy code. If LINQ hasn't been used previously, should it be used today? "To what extent are patterns part of code style," Robert Johnson asks, "and where should we draw the line between staying consistent and making improvements?"
Robert Johnson continues: "With the hypothetical LINQ example, perhaps this class doesn't contain it because my colleagues are unfamiliar with LINQ? If so, wouldn't my code be more maintainable for my fellow developers if I didn't use it?"
On Thursday, the world’s largest Bitcoin exchange, Mt. Gox, announced that it would require all users to “be verified in order to perform any currency deposits and withdrawals. Bitcoin deposits do not need verification, and at this time we are not requiring verification for Bitcoin withdrawals.”
The company did not provide any explanation about why it was imposing this new requirement, but it did say that it would be able to process most verifications within 48 hours.
The move comes two days after federal prosecutors went after Liberty Reserve, another online currency that had notoriously poor verification. (In court documents, a federal investigator in that case included an address of “123 Fake Main Street, Completely Made Up City, New York” to create an account that was accepted.) It also comes two weeks after the Department of Homeland Security started investigating Mt. Gox over the possible crime of money transmitting without a license.
Todd Kuehnl has been a developer for nearly 20 years and says he's tried "pretty much every language under the sun."
But it was only recently that Kuehnl discovered Go, a programming language unveiled by Google almost four years ago. Go is still a new kid on the block, but for Kuehnl, the conversion was quick. Now he says "Go is definitely by far my favorite programming language to work in." Kuehnl admitted he is "kind of a fanboy."
I'm no expert in programming, but I talked to Kuehnl because I was curious what might draw experienced coders to switch from proven languages to a brand new one (albeit one co-invented by the famous Ken Thompson, creator of Unix and the B programming language). Google itself runs some of its back-end systems on Go, no surprise for a company that designs its own servers and much of the software (right down to the operating systems) that its employees use. But why would non-Google engineers go with Go?
Aereo, a service that streams over-the-air channels to its subscribers, has now spent more than a year serving residents of New York City. The service officially expands to Boston tomorrow and is coming to many more cities over the next few months, including Atlanta and Washington, DC. Aereo seems like a net-add for consumers, and the opposition has, so far, failed to mount a defense that sticks.
But the simple idea behind Aereo is so brilliant and precariously positioned that it seems like we need to simultaneously enjoy it as hard as we can and not at all. We have to appreciate it for exactly what it is, when it is, and expect nothing more. It seems so good that it cannot last. And tragically, there are more than a few reasons why it may not.
A little about how Aereo works: as a resident of the United States, you have access to a handful of TV channels broadcast over the air that you can watch for free with an antenna (or, two antennas, but we’ll get to that). A subscription to Aereo gets you, literally, your very own tiny antenna offsite in Aereo’s warehouse. The company streams this to you and attaches it to a DVR service, allowing you both live- and time-shifted viewing experiences.
Where have all the user-defined operators gone? tjameson can't "find any procedural languages that support custom operators in the language," he writes. "There are hacks (such as macros in C++), but that's hardly the same as language support." Is there any good reason we can't write our own operators? See the original question here.
Are you experienced?
Karl Bielefeldt answers (94 votes): There are two diametrically opposed schools of thought in programming language design. One is that programmers write better code with fewer restrictions, and the other is that they write better code with more restrictions. In my opinion, the reality is that good experienced programmers flourish with fewer restrictions, but that restrictions can benefit the code quality of beginners. User-defined operators can make for very elegant code in experienced hands, and utterly awful code by a beginner. So whether your language includes them or not depends on your language designer's school of thought. Related: "How are operators saved in memory?"
Aurich Lawson / Thinkstock