Graal and Truffle could accelerate programming language design - <AUTHOR> https://medium.com/@octskyward/graal-truffle-134d8f28fb69#.qchn61j4c <comment><USER2> There's actually a fairly long history of cross-language VMs, with various degrees of success. What usually happens is that they work fine for languages that look, semantically, basically like the native language on the VM. So LLVM works well as long as your language is _mostly_ like C (C, C++, Objective-C, Rust, Swift). Parrot works if you language is _mostly_ like Perl 6 (Perl, Python, PHP, Ruby). .NET works if your language is mostly like C# (C#, F#, Boo, IronPython). The JVM works if your language is mostly like Java (Java, Clojure, Scala, Kotlin). Even PyPy has frontends for Ruby, PHP, Smalltalk, and Prolog.

"Mostly" in this case means semantically, not syntactically. It's things like concurrency model; floating point behavior; memory layout; FFI; semantics of basic libraries; performance characteristics; and level of dynamism. You can write a Python frontend for both the JVM and CLR, and it will _look_ like Python but _act_ like Java and .NET, respectively, with no guarantee that native CPython libraries will work on it.

The problem is that this is where basically all the interesting language- design research is. I wouldn't use Rust for the syntax; I'd use it because I want properties like complete memory safety, manual control over memory allocation, easy (and fast!) access to C libraries, and short startup time. These are all things that Truffle explicitly does _not_ deliver.

It's a great tool if you work in the JVM ecosystem and want to play around as a language designer. But most of the interesting languages lately have created their own ecosystems, and they succeed by solving problems so fundamental that people will put up with having to learn a new ecosystem to gain the benefits they offer.

<comment><USER3> To add to the examples, Truffle currently has interpreters for unmanaged languages such as C/Fortran (with Sulong), dynamic languages such as Ruby and JS, statistics/math like R and functional like Clojure. The interopability is done in a way that does not need a common representation or object layout.

> I wouldn't use Rust for the syntax; I'd use it because I want properties > like complete memory safety, manual control over memory allocation, easy > (and fast!) access to C libraries, and short startup time. These are all > things that Truffle explicitly does not deliver.

Truffle itself does not do it, but it is possible to have a Truffle interpreter with these requirements. Memory safety can be enforced at the frontend compiler level like Rust does I believe. Memory can be allocated directly with Unsafe or calling libc functions. GNFI [1] allows for fast calls to native libraries. Startup can be improved radically with SubstrateVM, but it is currently closed-source. There are many ways to improve the JVM startup, but not necessarily convenient (but then you don't need to wait to compile your program either to start running it).

[1] [http://dl.acm.org/citation.cfm?id=2500832](http://dl.acm.org/citation.cfm?id=2500832)

<comment><USER2> The big question is "Would you want to use this in a mission-critical project?" Emscripten lets you write webapps in C, for example, but outside of sharing common libraries across server/Android/iOS/web clients, few people use it.

Pretty much every professional job I've had used polyglot programming of some sort - when I was in financial software it was mixed Java/C/Fortran numerics, when I founded my first startup it was polyglot Javascript/ActionScript, and at Google it was a large server that was first Python/C++ and then Java/C++. The boundary between languages is _always_ problematic. And the reason for that is because you choose memory layout to make certain trade-offs around the access patterns for that data. Do you inline data structures in a vector, or chase pointers? Do objects carry their type information with them so you can manipulate them dynamically, or do they throw it away at compile-time for greater efficiency? Do you get O(1) string indexing or native UTF-8? Do you allocate on the stack or the heap? Do you copy, borrow, move, or COW?

And then when you go to switch representations to call into another language, you pay a cost to convert all the data structures you might be touching. In many cases, that cost could be more than you saved by using optimized representations in the first place.

<comment><USER4> The idea of Truffle language interoperability is to avoid switching the representation at the language boundary. Objects carry their type information with them that includes the semantics on how to access their properties. This also allows Truffle to fake up the existence of an object without actually performing allocations (e.g., a table in raw buffer format can be interpreted as an array of objects). This clear separation of logical and physical layout enables efficient data representation in the context of higher level languages that typically suffer from pointer chasing and object header overheads.

<comment><USER2> Right, and my point is that this won't work unless you dictate a common memory layout for all Truffle objects. And if you do _that_ , then you lose the ability to make trade-offs about object representation that depend upon access patterns that only the programmer can know. The whole reason we have different programming languages is because not all domains of computation face the same trade-offs.

<comment><USER4> It works without common memory layout between Truffle languages. It even simplifies the ability to use diverse physical memory layouts within the same language. The programmer specifies the logical layout based on the semantics of a language. The runtime decides how to map this logical layout onto the physical hardware. It can take into account the trade-offs the programmer decided to choose.

<comment><USER2> Right, and my point is that the reason people continue to use C++ or Rust over JVM languages is because there are some use-cases where the JVM's decision about how to map the logical layout onto physical memory causes unacceptably high memory usage and/or cache misses, or prevents them from taking advantage of clever serialization formats (Cap'n Proto, for example, loses much of its performance benefits on the JVM without the use of sun.misc.unsafe). Will Truffle allow the programmer to override Graal's decisions on this and manually specify memory layout? And if so, how are conversions between different language formats specified?

If you already buy the JVM's premise of "just let the compiler do it, we'll figure out the most efficient representation", then this is a non-issue. But there are still programmers out there who believe that Rust or C++ or Go or CPython or whatever presents a better memory layout for the tasks that they wish to accomplish, or language designers who think they can do better than all of the above, and these are the users that Graal+Truffle is trying to win over. What's the story for them?

<comment><USER4> The default when running static languages like C++ or Rust or Go via Sulong is to stick to the memory layout chosen by the programmer. There is no conversion to typical JVM memory layouts. Nor does running on the JVM has major restrictions for the framework (we are working on a version that does not run on the JVM in the SubstrateVM project). What Graal+Truffle allows is for library writers and language designers to invent new representations without any restrictions on the layout and have them interact with the rest of the system. We want programmers to use the best language for the task. And even combine multiple languages within one program. Foreign objects can be passed around freely as parameters and local variables, but there are restrictions when building combined data structures - e.g., if you have a highly optimized native data structure, it is not possible to install a pointer to a JavaScript object in it without performance loss.

<comment><USER2> Interesting. So, if I'm understanding this correctly - Truffle allows a language designer to specify a certain logical layout for data structures, along with hints for how this will get converted to a physical memory layout. Language implementors also get the full power of Graal for lowering their AST to machine code and other compiler tasks. On cross-language boundaries, it generates automatic accessors for _other_ languages to access that data, using the logical layout to identify how particular fields need to be pulled out and manipulated, but _not_ requiring that the full data structure be converted across the foreign-call boundary. One consequence of this is that nesting & embedding of data structures may require an explicit conversion, since if an object is a hashtable in Javascript but a packed series of fields in C, it's obviously not going to fit.

Sorta like SWIG++? If you could do SWIG but never require that an end-user write a typemap or debug a crash themself, there'd probably be a big market for that.

<comment><USER4> Yes, this is an excellent description.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Judging by LuaTruffle, the Lua example, then this framework is useless.

LuaTruffle appears to implement the syntax of Lua but none of the semantics. For example, no metatables and no coroutines. Lua is unparalleled in its support of coroutines, and metatables are what make optimizing Lua _difficult_. Without implementing either of those things you've neither demonstrated the ability of the framework to implement novel control-flow semantics (asymmetric coroutines that can yield across multiple, unadorned function invocation) nor performance capabilities (JIT-optimizing Lua tables is non-trivial).

I'm not even sure LuaTruffle implements Lua's lexical closures or tail call optimization, both critical to Lua's ability to support functional programming patterns.

Of course, it definitely doesn't implement the Lua C API, which is part-and- parcel of what makes Lua preferable as an extension and glue language. But I was willing to overlook that if it could easily implement the former.

The beauty of a good DSL isn't the syntax (I know, hard to believe!), but in novel approaches to code flow execution and other deep semantics. Golang's goroutines are beautiful. Rust's ownership analyzer and prover are what _defines_ the language. Haskell's lazy evaluation open up whole new dimensions for problem solving (and headaches). If your language framework doesn't at least preserve the ability to implement those things cleanly and performantly, it's not adding much value and is basically a toy. It's not like writing a lexer for a DSL is a serious impediment. (Using Lua's LPeg, for example, you can write parsers and build an AST for most major languages in a few hundred lines of code.)

<comment><USER6> LuaTruffle has a few hours work by an casual non-expert external person.

If you want to know about how well we can implement the semantics of an existing language then look at JRuby+Truffle - it passes more Ruby language tests than any other alternative Ruby implementation. The only stumbling block is co-routines as the JVM doesn't have these and they're hard to implement efficiently with other constructs.

<comment><USER7> Does that kinda throw off the whole concept about pushing language design if you can't do coroutines?

That's a pretty critical feature of Lua that somewhat defines it(along with it's low overhead + embeddability, both of with you won't get with the JVM).

It seems like engineers always want to build One Tool to Solve Them All(tm) and yet there are always tradeoffs to be made. The reason 90% of this industry is still employed is because we don't have these one size fits all problems that we'd so love to solve.

<comment><USER8> There was a patch for coroutines on the JVM some time ago. Unfortunatly it did not make it into the platform. No reason why it could not be added to the JVM.

SubstrateVM solves the embeddability part.

<comment><USER7> Info out there on SubstrateVM looks a little sparse.

For context we use to run VM + tuneable data + game logic code in a 400kb block allocated to Lua on the PSP. I'd love to hear how SubstrateVM compares. Lua has a really rich history of being embedding in some pretty small targets.

<comment><USER9> 400 KB is a very aggressive target. I don't think anything in SubstrateVM would absolutely prohibit that, but currently our images are larger.

Some of this is just simply a design trade-off. E.g., in JRuby+Truffle, we've implemented much of the core library in Ruby. This has allowed us to achieve a high level of language compatibility in a fairly short period of time -- implementing 3,000 core library methods in Java would be quite the undertaking. As a consequence, the static binary must include those full Ruby sources (compressed, but they're not in an optimized bytecode format).

Having said that, if we wanted to optimize for size over a restricted subset of the language (think mruby), that would be straightforward to do.

</comment></comment></comment></comment></comment></comment><comment><USER10> > Since the dawn of computing our industry has been engaged on a never ending > quest to build the perfect language.

Except it really hasn't. The industry is going to use whatever language has the bare minimum feature set they value at the moment and no more.

Call me cynical but my point of view is: if the industry were really striving for perfection, there would be no COBOL or BASIC, for instance. Lisp had already been invented. Garbage collection was a thing already. We had macros. A REPL. A little later, OOP and multiple dispatch. The list goes on.

They had to ditch the (almost) perfect wheel for a cheaper square one. Fast forward a few years, and the square wheel is now polished but just as square, the insanely great wheel now just is as cheap as it is, but we won't use it, as the axles expect the square wheel.

And then we invent Java and XML...

<comment><USER11> _if the industry were really striving for perfection, there would be no COBOL or BASIC, for instance._

COBOL was a huge improvement at the time, an innovation in readability. BASIC is a good demonstration of why the platonic ideal language is wrong: it was designed for beginners (that's what the acronym stands for), and it did a reasonably good job at that. Beginners might be overwhelmed by OOP, multiple dispatch and a list of design patterns. Sometimes experts are too.

Garbage collection is a nice feature, but it doesn't fit everywhere. Sometimes you want to manage your own memory. That's why we have more than one language.

<comment><USER10> > COBOL was a huge improvement at the time, an innovation in readability. > BASIC is a good demonstration of why the platonic ideal language is wrong: > it was designed for beginners (that's what the acronym stands for), and it > did a reasonably good job at that.

Sure. But these systems were created from the ground up, every single time. Given a good foundation, which could be Lisp or something even better, you can whip up the "simpler" languages in no time. Even ditch the parentheses if you so desire. While getting all the benefits of the underlying system.

> Garbage collection is a nice feature, but it doesn't fit everywhere. > Sometimes you want to manage your own memory. That's why we have more than > one language.

Sure. But I disagree with that's the reason why we have multiple languages. There's no single reason, it is probably a mixture of preferences, previous knowledge, budget, time to market (JS!) among others.

We can manage our own memory from higher level languages. We can compile them. We can even make them spit out assembly custom-made for a given, niche application (see the Galileo magnetometer patch).

Sorry if I sound like a smug lisp weenie. But even that description is not accurate: had we focused our collective resources towards "perfection", as that sentence implies, we would have something way better than Lisp itself. Or anything else that we currently use.

It is as if we had invented jet engines before planes. But then placed steam engines on them because they were cheaper. Or that more people understood them.

<comment><USER12> Lisp didn't miss the train because it was too good or because people were idiots. For a good foundation to be good it has to meet the pre-requisite to work for most use cases. Lisp didn't when C did, in a time when hardware was small and expensive.

Times have changed now? Sure, but history didn't wait.

<comment><USER13> That's a significant part of it. Check out PreScheme, though, for how that might have worked:

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

It's a Scheme created as a C alternative for low-level programming used in a verified Scheme48, VLISP. It was quite efficient. LISP's doing more of that kind of thing might have fueled more use of the language.

</comment></comment></comment></comment></comment><comment><USER14> Before anyone gets too excited, make sure you look at what a compiler using Truffle actually looks like, and remember that Java is far from an ideal language for writing a compiler. I'll use their SimpleLanguage (their primary tutorial lang) as an example.

Parser [1] shows how lack of sum types makes code messy. Lots of "factory.createStringLiteral" kind of calls. At least Java has a mature parser generator.

Implementing interpreter nodes [2] requires a pretty large amount of boilerplate, each individual node is relegated to its own file, some classes are littered with probably autogenerated getters/setters. While functional languages can be too terse, Java shows its exceptional verbosity here.

[1] [https://github.com/graalvm/truffle/blob/master/truffle/com.o...](https://github.com/graalvm/truffle/blob/master/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/parser/SimpleLanguage.atg)

[2] [https://github.com/graalvm/truffle/tree/master/truffle/com.o...](https://github.com/graalvm/truffle/tree/master/truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes)

<comment><USER15> Urrgh. This just reminds me of why I gave up on android app development, and the JVM ecosystem as a whole: it tests my ability to put up with bullshit.

<comment><USER16> I agree. I wanted to really write native Android apps, not HTML5 or even use the NDK with C/C++. It is just too much stuff. The downloads, the verbosity of Java, the lack of a slick toolchain (Android Studio is getting close, I guess), and a slew of other incoherencies.

I don't cut slack for Obj-C on iOS either.

I've had great fun with two products for Android/iOS and Mac/PC/Linux:

[1] Godot game engine. I followed the introduction and had an app on my Android phone in 10 minutes. A little hack in the background, but hey, for gaming it is great.

[2] 8th - a dialect of Forth - you write Forth-like 8th, and voilà it's running on your Anroid, PC, Mac, iOS device!

[1] [https://godotengine.org/](https://godotengine.org/)

[2] [http://8th-dev.com/about8th.html#cross](http://8th- dev.com/about8th.html#cross)

<comment><USER15> I have not used godot up to now, as I am wary of engines that require me to learn a scripting language used nowhere else. Is it any good?

Oh, and I've heard React Native's not so bad for mobile.

<comment><USER16> I have not tried more than about 8 game engines, so my opinion is limited. Godot is very good:

* Very customizable interface * Lots of tutorials on YouTube and elsewhere * Good examples provided * Script is very similar to Python, so not too hard to pick up, and again, lots of examples. * Easy packaging for Android, Windows, and Linux on my end * MIT license, commercial or non-commercial * 2D/3D and live debug and scripting on the fly

Really worth trying out, since it is easy to install and dive in.

I'll have a look at React Native, but I am not a JS programmer, and all of these 'hot' JS libs, modules, etc... seem more cluttered than plain old JS. I think if I were to branch out, I'd try Purescript instead.

<comment><USER15> If you're thinking along the lines of Angular, React is very different (less clutter, nice design, emphatically not a framework), and has inspired many re- implementations of its ideas.

It's probably more worth checking out that most of what's out there.

</comment></comment></comment></comment></comment></comment><comment><USER17> The Oracle flavors of the JVM/JDK probably scare too many away with regards to redistribution of their product. That coupled with the fact that things like the AOT engine is closed source and the weight of the JVM for anything besides daemons (both mentioned towards the end of the article) probably keep language designers away these days.

I would love a lightweight toolkit that made for easy language development. VMKit[0] is dead, MicroVM[1] is a nice idea but not full fledged. Many like myself looking to implement a toy language would love to be fast out of the gate and would rather not mess with the OS-specific constructs and specifics of LLVM IR. So we end up cross-compiling to existing languages or marrying ourselves to a certain runtime (e.g. the CLR). Any other lightweight VMs or AOT compilers that are cross-platform that language designers can use these days?

0 - [http://vmkit.llvm.org/](http://vmkit.llvm.org/) 1 - [http://microvm.github.io/](http://microvm.github.io/)

<comment><USER18> QBE[1] seems to be what you're looking for. It "aims to be a pure C embeddable backend that provides 70% of the performance of advanced compilers in 10% of the code".

Previous discussion on HN: [https://news.ycombinator.com/item?id=11555527](https://news.ycombinator.com/item?id=11555527)

[1]: [http://c9x.me/compile/](http://c9x.me/compile/)

<comment><USER17> Neat, I missed this when originally posted. Sadly, it falls apart on the "cross-platform" requirement (does not appear to support Windows).

</comment></comment></comment><comment><USER19> Doesn't RPython do all the same things? Also there are language workbenches ([http://www.languageworkbenches.net/](http://www.languageworkbenches.net/)) that allow one to get a bunch of things like IDE support and even basic compilers by properly expressing the language syntax and semantics.

I agree there is a lot of interesting stuff going on here but lets not forget the prior art. Even OMeta I think already did a lot of these things way back when. Going further back there's META II ([https://en.wikipedia.org/wiki/META_II](https://en.wikipedia.org/wiki/META_II)).

I think building self-specializing interpreters is the main trick. If that becomes easy then a whole bunch of other magic is also possible. But I'm just an amateur so all of this is still very impressive.

<comment><USER20> Since you mention OMeta, let me remark here that for some reason, this whole Graal+Truffle thing looks to me like an "enterprisey" version of OMeta+COLA.

</comment></comment><comment><USER15> Okay, very cute, but what if you want your language to have significant semantic differences from C and the like? What if you want to write a Scheme interpreter, for instance? Can I have Continuations? Can I have Tail Call Optimization? I very much doubt it.

If you want to write a language that is semantically like C for the most part, than go ahead and use Truffle, but that's not where interesting language design is happening. Show me that Truffle's Ruby implementation hasn't removed callcc (yes, Ruby has callcc), and maybe I'll reconsider.

<comment><USER21> You can do TCO relatively simply. You throw a special exception class for nonlocal control flow (eg. tail calls, breaks from loops, continues, etc.) and Graal knows how to optimize the cost away to a normal jump.

[http://cesquivias.github.io/blog/2015/01/15/writing-a- langua...](http://cesquivias.github.io/blog/2015/01/15/writing-a-language-in- truffle-part-4-adding-features-the-truffle-way/#a-lisp-birthright-tail-call- optimization)

ZipPy (an incomplete Python implementation) supports Python's coroutines, which are faster than any other implementation. In theory these might be directly generalizable to get continuations.

[http://thezhangwei.com/documents/oopsla113-zhang.pdf](http://thezhangwei.com/documents/oopsla113-zhang.pdf)

<comment><USER15> The TCO sounds like an ugly hack to me, but I'll take it. How would this interact with the magical AST merging? I would assume that languages with different calling conventions can't just merge like that.

<comment><USER8> If you do it in a language specific way, you would probably need to catch those TC exceptions when calling into functions of your language. That is very easy to do, as every Truffle language controls how its functions get called in a foreign languages.

<comment><USER15> Ah.

</comment></comment></comment></comment></comment><comment><USER22> There are a lot of weasel words for the other languages, but the comment about ruby is extremely interesting:

"For example, the TruffleJS engine which implements JavaScript is competitive with V8 in benchmarks. The RubyTruffle engine is faster than all other Ruby implementations by far. The TruffleC engine is roughly competitive with GCC."

<comment><USER23> Chris Seaton gave this talk recently about JRuby+Truffle and some specifics about how it optimises so well compared to other Ruby implementations.

[https://youtu.be/b1NTaVQPt1E](https://youtu.be/b1NTaVQPt1E)

Previous discussion

[https://news.ycombinator.com/item?id=12062454](https://news.ycombinator.com/item?id=12062454)

<comment><USER24> Chris is also reasonably active here.

I've had the pleasure of discussing some of his jRuby work with him in the past (I occasionally plod along with own Ruby compiler in Ruby - it's nowhere near complete) and they've done a lot of impressive work to demonstrate how compiling Ruby into fast code is largely about assuming people will behave sanely (e.g. people _won 't_ usually give Fixnum#+ side-effects, or make it return weird stuff), but add fallbacks for when they do.

This is the big challenge with Ruby: The subset of Ruby that people actually tend to work in is largely very predictable and possible to compile efficiently, but there's a lot of stuff around the fringes that people expect to work on the very rare occasions that we use it.

</comment></comment></comment><comment><USER25> I think another key part of the dream is IDE support. So maybe the dream is complete with: Graal + Truffle + Nitra[1].

[1] Nitra - [https://github.com/JetBrains/Nitra](https://github.com/JetBrains/Nitra)

<comment><USER26> How does Nitra and MPS fit together? They both come from JetBrains and both describe themselves as "language workbenches"

</comment></comment><comment><USER27> So why is Oracle doing this?

Also, anything from Oracle which is partly open and partly closed is scary. They've done that with Java and MySQL, which drives people away from both.

<comment><USER13> That was one of my counterpoints. We've seen Oracle fight to say API's are copywritten and try to take down Android. All that kind of crap makes me think safest route is pushing ETH/Wirth languages and/or Racket if you want DSL's and stuff.

</comment></comment><comment><USER28> Graal + Truffle are very, very cool. The main downside is that it only runs on the JVM, which is a substantial limitation.

However, I assume one goal of the project is to make the JVM more competitive, which it certainly does.

</comment><comment><USER29> Have there been any recent languages/environments that (have reasonably) succeeded but aren't completely open source? I feel a general resistance to building a dependency on something when you don't have complete access to it, but maybe that is just me.

<comment><USER11> _Have there been any recent languages /environments that (have reasonably) succeeded but aren't completely open source?_

Xamarin. iOS too, although that depends on what you mean by 'recent'

<comment><USER29> My comment was because I found it interesting that they are trying the partially open source model, when it seems like that hinders adoption. So 'recent' is the competition for adoption.

Didn't a lot of Xamarin get open sourced after the acquisition? Swift is also open source, although Xcode isn't.

<comment><USER11>
      >Swift is also open source,

True, though practically speaking, it's not very usable without the (closed- source) Cocoa libraries (much like objective-C).

</comment></comment></comment></comment><comment><USER30> Interesting. But I feel like Racket is a better framework for quickly prototyping new languages.

<comment><USER31> Totally, Truffle is not nearly as easy as a simpler interpreter in a terser language, but unlike a Racket interpreter your code can actually run faster than raw Racket, and have incredible tooling and integration support.

</comment></comment><comment><USER32> When I first heard about this it was promoted as a faster ruby implementation. How far away is it from running rails?

Interesting that they've gone as far as running C extensions "internally", making it easier to run existing ruby apps without running up against the barrier of a native gem and having to change the code.

</comment><comment><USER33> Previously: [https://news.ycombinator.com/item?id=6232240](https://news.ycombinator.com/item?id=6232240)

</comment><comment><USER25> > Since the dawn of computing our industry has been engaged on a never ending > quest to build the perfect language.

...unfortunately. I see PLs as mere material - sure, you can improve on them but at far more important is how we architect our systems (the PL-independent ways we create and organize our systems into interfaces and components) is where I see the software practitioners of today flailing - and no PL is going to save us there.

We need to have a better way to analyze systems on these architectural measures and a better way to train people to build better architectures, not more PLs.

<comment><USER34> _unfortunately. I see PLs as mere material_

That's only part of their point. It's as if we were in the building industry, and we needed new tooling for each specific material. When I'm at a hackspace, the same chop saw will let me cut wood, delrin rod stock, steel linear rails, and aluminum extrusion. The same drill press and bits will operate just fine on most of the above as well. What we have in the programming world is a situation where I'd need a different toolset for every material I'd listed above.

</comment></comment><comment><USER35> > A way to create a new language in just a few weeks

As a Lisp programmer, I regularly create new languages in a matter of hours.

<comment><USER6> Do you mean macros? Could you re-implement a language such as C as a macro? And have it be about as fast as GCC? I didn't think they were that sophisticated.

<comment><USER14> You cannot. Because Lisp is homoiconic, you don't code in (what I personally believe to be) reasonable syntax, you code in abstract syntax trees. Lisp is so easy to metaprogram because everything is parentheses and the burden is on the user, not the parser, to determine the program's abstract syntactic structure. So, Lisp can only metaprogram its own syntax, you can't introduce a C-like syntax.

<comment><USER36> > Because Lisp is homoiconic, you don't code in (what I personally believe to > be) reasonable syntax, you code in abstract syntax trees.

There's no reason a regular macro couldn't implement a basically C-like syntax (though it would have Lisp, not C, tokenization rules, to the extent that those are different) on what is passed as its argument. The actual call to the macro would have typical Lisp syntax, but what the macro consumes would be interpreted with whatever syntax was implemented by the macro.

(And, a _reader_ macro could implement more deeply C-like syntax.)

<comment><USER15> Well, for regular macros, only if your C syntax was in a string. Otherwise, lisp would try to tokenize it, and choke. Heck, if your lisp of choice offers an eqivalent of TCL's uplevel, you wouldn't even need a macro, just a function.

<comment><USER36> > Well, for regular macros, only if your C syntax was in a string. Otherwise, > lisp would try to tokenize it, and choke.

Which is why I said normal (rather than reader) macros could do a "basically C-like syntax" but with Lisp tokenization rules.

<comment><USER15> What would that look like?

<comment><USER37>
      ((:include "stdio.h")

      (const char * message = "Like this.\n")

      (int main ((int argc) (char * * argv))
        (printf message)
        (return 0)))

<comment><USER15> Ah.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER38> Here is a video of a Graal/Truffle talk given by a researcher at Oracle (presented at Mozilla in 2013):

[https://air.mozilla.org/one-vm-to-rule-them- all/](https://air.mozilla.org/one-vm-to-rule-them-all/)

<comment><USER8> This is quite outdated. here is an overview of Graal/Truffle papers and tutorials: [https://wiki.openjdk.java.net/display/Graal/Publications+and...](https://wiki.openjdk.java.net/display/Graal/Publications+and+Presentations)

<comment> iso-8859-1 Is this one less outdated? [https://www.youtube.com/watch?v=FJY96_6Y3a4](https://www.youtube.com/watch?v=FJY96_6Y3a4)

<comment><USER8> Yes this brand new. Have fun!

</comment></comment></comment></comment><comment><USER39> > Interpreted dynamic languages like Python, JavaScript, PHP and Ruby look the > way they do because building such a language is the path of least resistance > when you start from a simple parse tree.

This looks... backwards?

<comment><USER40> Especially if you want to talk about ruby as a language with a simple parse tree.

</comment></comment><comment><USER41> So, judging by the slides for that "one vm to rule them all" talk [1], it's Java all the way. One has to generate AST in a form of Java code and deal with Java ecosystem. And it feels all very very complicated for all the wrong reasons.

I guess some people from the Java world could find something useful there, but it's very unlikely to attract anyone else.

[1] [https://lafo.ssw.uni- linz.ac.at/pub/papers/2016_PLDI_Truffle...](https://lafo.ssw.uni- linz.ac.at/pub/papers/2016_PLDI_Truffle.pdf)

</comment><comment><USER42> Well now, I have _got_ to find time to implement Joy (lang by Manfred von Thun) in this and see if it works. (I can't tell just by thinking about it, at least not so far. It will either work and be great, or not-work and be really _really_ interesting why not.)

</comment><comment><USER43> This article, while very interesting, completely ommitted .NET CLR. Does anyone know how does the CLR compare to JVM, especially the new CoreCLR? How maturę is it in terms of using the best of breed JIT optimizations?

</comment><comment><USER11> fwiw IO language is a pretty good prototyping language too.....good for experimenting with different syntaxes, etc

</comment><comment><USER44> One word: Oracle.

<comment><USER45> To be fair, Oracle gives you things such as VirtualBox, MySql, Java, Netbeans etc for free. That's not too bad for an 'evil' company.

<comment><USER46> No it doesn't, they are made by Sun Microsystems, they are free because of Sun, not Oracle.

<comment><USER45> That's just not true.

Consider all the improvements to the above software that came after Oracle's purchase of Sun. There was a boatload of them and they keep coming. Oracle is paying for that.

They are all free, and that is because of Oracle, not because of Sun as Sun does not exist anymore.

<comment><USER46> Improvements? How much? They ruined OpenOffice, triggering the LibreOffice fork. They ruined MySQL, triggering the MariaDB fork. The original Sun would have done 10X better improving those things they made.

</comment></comment></comment></comment></comment><comment><USER47> Funny, I posted this yesterday and got no up votes. Can you post a duplicate of some post and get up voted? I didn't realize that was possible.

<comment><USER6> Take a look at the Medium URLs and you'll see they have a fragment ID and so count as different submissions.

<comment><USER31> I wondered why this didn't get merged with my submission. Makes a neat example of how random getting on the HN front page is though. Although I'm sad that randomness chose to give the second posting karma instead of mine.

<comment><USER8> What was your title? Without a good one, your post might have been just skipped by most.

<comment><USER31> Exactly the same except including the "radically" from the blog post. Wow I missed out on 400+ karma at this point... Oh well, at least they are only internet points.

<comment><USER8> These people and their gamified minds... ;)</comment></comment></comment></comment></comment></comment>


Epic Answer - Avoiding If statements - <AUTHOR> http://stackoverflow.com/questions/1337565/avoiding-if-statements

<comment><USER2> It's easy - use switch/case statements!

But seriously, isn't it true that Smalltalk doesn't have if statements?

<comment><USER3> Yes. Smalltalk has the ifTrue: and ifFalse: methods on the Boolean object.

      x > y ifTrue: [ Transcript show: 'Truthy' ]

So it is using polymorphism as the main mechanism. The True object implements ifTrue: by evaluating the block argument and implements ifFalse: by doing nothing. The False object does the opposite.

</comment></comment><comment><USER4> His idea in the second edit is similar to what is done with a lot of methods in Cocoa and Cocoa Touch and so on: <http://cocoadev.com/wiki/MethodSwizzling>

</comment><comment><USER5> Wouldn't that be considered a state machine? I've done something with an audio player. Each state was a different class.</comment>


US government agency "friending" people applying for citizenship - <AUTHOR> http://www.eff.org/deeplinks/2010/10/applying-citizenship-u-s-citizenship-and

<comment><USER2> When starting the process of getting a green card for my wife, I read on a number of web sites that USCIS agents are allowed to lie to you during the interview-- for example, separating the husband and wife, then coming in to one of them and falsely stating, "Your spouse just admitted this is a fraudulent marriage."

I don't know if it's true, but that, anyway, is conventional wisdom.

Compared to that, "friending" somebody in order to view their social network site seems like small potatoes.

My general sense is that the USCIS mission in these proceedings is to take a skeptical stance from the start. That is, merely applying for a green card (or, by extension, citizenship through marriage) puts you under enough of what EFF calls "suspicion" to warrant an investigation.

<comment><USER3> Oddly I had exactly the opposite experience. My wife and I were interviewed together, the agent asked very straight forward questions about our past with me present. There was nothing tricky in the slightest. I guess it depends upon the situation, but if you've got nothing to hide then the above article is a non-starter.

<comment><USER4> > _"but if you've got nothing to hide"_

You would think after so many cases of abuse - some large, some small, some invoking Godwin's Law... that people would stop touting the bullshit that is "if you have nothing to hide..."

<comment><USER3> lol, ok thanks for ganging up on half my comment and the down votes. My wording choice was poor and I agree that "nothing to hide" does not make it right for the abuse that we are seeing lately. But I still stick to my response to the previous commenter, our interview was very straight forward.

<comment><USER5> Thanks for your reasoned answer. If you hadn't started this one with `lol' you would have even gotten some up-votes, I guess.

</comment></comment></comment></comment></comment><comment><USER6> In a way, when you are applying for citizenship or even just permanent residency you pretty much know they are going to look up everything they can about you. The questionnaires are really personal on many things. You should have already suspected that Facebook/twitter was used too.

</comment><comment><USER7> This article is a crock IMO.

For background, there are almost 2m applications annually for green card/citizenship, and roughly 2000 prosecutions for immigration fraud.

 _[extract quoted from memo] In other words, USCIS is specifically instructing its agents to attempt to "friend" citizenship petitioners and their beneficiaries on social networks in the hope that these users will (perhaps inadvertently) allow agents to monitor their activities for evidence of suspected fraud..._

Well, if your job is to investigate suspected fraud...

 _First, the memo makes no mention of what level of suspicion, if any, an agent must find before conducting such surveillance, leaving every applicant as a potential target._

Right...because determinations about whether an application is suspicious will be made before the case file is sent to FDNS. You can browse (almost) all of the Adjudicator's field manual to find out what criteria are used to make that determination; the current version is accessible via [http://www.uscis.gov/portal/site/uscis/menuitem.eb1d4c2a3e5b...](http://www.uscis.gov/portal/site/uscis/menuitem.eb1d4c2a3e5b9ac89243c6a7543f6d1a/?vgnextoid=a2e29c7755cb9010VgnVCM10000045f3d6a1RCRD&vgnextchannel=a2e29c7755cb9010VgnVCM10000045f3d6a1RCRD)

 _Nor does the memo address whether or not DHS agents must reveal their government affiliation or even their real name during the friend request (...)_

True, but then they're not obliged to wear uniforms or travel in marked cars either.

 _Second, and perhaps more disturbing, the memo assumes a user's online profile always accurately reflects her offline life._

No, it says that this is '[g]enerally' the case. It's an outdated 2 page 'did you know?' bulletin, not the guiding legal authority of immigration investigation.

 _Unfortunately, this memo suggests there's nothing to prevent an exaggerated, harmless or even out-of-date off-hand comment in a status update from quickly becoming the subject of a full citizenship investigation._

Doubtless there will be a few false positives, but that's why appeal procedures exist. Again, this division's job is to investigate applications that look dubious to begin with; it's not as if the rest of the agency rubber stamps everything sent in to them and FDNS just picks out cases at random, any more than the EFF makes FOIA requests for random document numbers and hopes for the occasional interesting find.

</comment><comment><USER8> Should USCIS have an official badge on social sites and be required to use an account bearing the badge when linking up with petitioners/beneficiaries?

<comment><USER9> There you raise an excellent point which enables us to relate Facebook back to the real world where I think our intuitions and laws are better.

Suppose a plain-clothes USCIS agent comes to find you in a place you are likely to be and chats to you - say in a bar, or your place of work. Is anything they discover during that chat admissible, even if they don't admit to being a USCIS agent? Because if that is okay, then why should a social network be any different?

On the other hand, if that would be inadmissible, or require some evidence beforehand for them to mount such an undercover operation, then viewing your private online data under the pretext of friendship should be out too.

<comment><USER7> _Is anything they discover during that chat admissible_

Yes. Once a person has stated or otherwise shown that they are not a US citizen, the burden of proof for eligibility to be present in the US switches to them. A false claim to US citizenship is a felony, though of course exceptions exist.

This is quite different from the legal situation of a US person.</comment></comment></comment>


How SEOMoz sent us a takedown notice. - <AUTHOR> http://rudebaguette.com/2013/05/31/why-trademarks-are-important-for-startups-how-seomoz-sent-us-a-takedown-notice/ <comment><USER3> Wow, Moz does _not_ come out looking good here. Doz and Moz are not the same word, don't mean the same thing (I'm not even sure either word actually means _anything_ ) and are only similar in the most superficial possible way.

Moz should quit fvcking around with lawyers and filings and trademarks and whatever legal bullshit and just focus on innovating and being better at what they do.

<comment><USER4> They actually are quite similar words, for companies which it seems are engaged in the exact same business.

I can easily imagine how someone, not familiar with either company, might hear of Moz and, later, mistakenly believe that the company they heard about was Doz (or vice versa).

Don't forget, trademark law is such that you have to protect your trademark or you lose it. If there's any risk at all of infringement, you have to go after it. So although the case that Moz and Doz are similar isn't particularly strong, it seems close enough that I'm not surprised Moz is taking this action.

<comment><USER5> <http://web.archive.org/web/20121207022623/http://moz.com/>

While SeoMoz was promoting Marketing Analytics on this domain name there was nothing about moving all of their services to it. It seems to me that Doz has a reasonable chance (25% maybe) against the giant Moz. I would fight it! There is no way the DOZ guy could predict a domain name shift for Seomoz.com. I visit Woz.com occasionally to see what Woz is up to. I rarely search DMoz.com anymore. I would fight the Moz trademark if there is one... it is too common.

Is moz a person (Woz), a Browser?, a Metal Laminates and Architectural Products company, do they sell MOZ Luxury Wheels?, a songwriter? <http://www.urbandictionary.com/define.php?term=Moz>, finance.yahoo.com/q?s=MOZ.TO, do they sell sweaters? viva-moz.com, is it a cafe? moz-cafe, another person Middelton-Moz Institute?, does it have to do with orphans? projectmoz.com. That is just 2 pages on Google.

<comment><USER4> According to another comment (<https://news.ycombinator.com/item?id=5800161>), Sarah Bird notified Doz of the issue way back in January. So yes I think Doz could indeed predict that SEOmoz was going to become Moz.

<comment><USER5> In January their website still had "Marketing Analytics" as the featured item that was coming soon. The poor Doz guy still had no idea what was going on and thought it was different enough. Her warning wasn't very specific and he thought he was in good shape. This is really a bait and switch on him.

<http://web.archive.org/web/20130122024159/http://moz.com/>

<comment><USER4> How is this bait and switch? The COO of SEOmoz told them that they were going to have a conflict. Now they have a conflict. It seems like it's exactly what was advertised on the packaging.

</comment></comment></comment></comment></comment></comment><comment><USER6> There's a particular irony that the Moz folks think that the Doz name is too similar to be allowed, when they're using an abbreviation for Mozilla that has been around for years and years.

<comment><USER7> Its intentional too. Rand specifically choose the name SEOMoz to benefit from the brand confusion.

From the horse's mouth (Mixergy interview):

 _"Andrew: What does SEOmoz mean?_

 _Rand: When we started up, we were looking for a name that was short. That had the word SEO in there so that people would know what the blog was about. And, I was a big fan of the Mozilla Foundation, with DMoz and ChefMoz. What was the other ones that they were doing at the time? There was, like, MapMoz, there was a bunch of them at the time that were coming out. That were based around this open source, weird transparent._

[...]

 _So, that was SEOmoz, was taking SEO and combining it with the moz ethos. There you go."_

Source: <http://mixergy.com/seomoz-rand-fishkin-interview/>

<comment><USER8> Not only that but just recently them moved from SEOmoz which is arguably more different from Mozilla to MOZ which is just a shortened form of Mozilla

<comment><USER9> And has been used as such by mozilla for years: it's their official vendor prefix for CSS properties their official vendor prefix for non-standard javascript APIs (either draft standards or proprietary extensions, such as Firefox OS APIs):

* [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/M...](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Mozilla_Extensions?redirectlocale=en-US&redirectslug=Web%2FCSS%2FCSS_Reference%2FMozilla_Extensions)

* <https://developer.mozilla.org/en-US/docs/Web/API/MozActivity>

* [https://developer.mozilla.org/en-US/docs/Web/API/document.mo...](https://developer.mozilla.org/en-US/docs/Web/API/document.mozFullScreen)

* [https://developer.mozilla.org/en-US/docs/Web/API/window.requ...](https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame?redirectlocale=en-US&redirectslug=Web%2FAPI%2Fwindow.mozRequestAnimationFrame)

</comment></comment></comment></comment><comment><USER10> Very interesting. If Moz and (D)oz are close, how about Moz and Moz(illa)? Lets start out as SEOmoz and when we become big enough, we can change our name to Moz so that Mozilla doesn't come after us when we are small. As SEOMoz has changed the name to Moz, may be Doz want to rename to SEODoz. What a racket!

<comment><USER11> What did the "moz" in SEOmoz originally mean? It was a strange choice to begin with.

<comment><USER9> It's Mozilla's "moz". Quite literally: <http://moz.com/blog/what-does-the-moz- in-seomoz-mean>

(the "moz" in DMOZ comes from mozilla through its original domain: Directory.MOZilla.org)

</comment></comment></comment><comment><USER12> A very important snippet from the comments from Sarah Bird (COO of Moz)

> So, I did what I would want someone to do for me. In January, I called him > to give him a personal heads up that we had a problem, that the brand felt > too close for us. I told him we had a registered intent-to-use, and that we > were planning on launching soon, just like him. I asked him to use a > different brand for his future product or that we would have to cancel his > mark. He explained to me that his product is different enough from ours that > there wouldn't be confusion. I urged him to talk to his lawyer and get > independent advice before he launched his product.

<comment><USER13> That actually makes me more disinclined to use Moz-- this isn't a snap-retort by an overeager in-house lawyer looking to earn their fee, this is the COO claiming that "Doz" is a trademark violation because it ends on "oz". It's flat-out depressing, and giving overt hints about "Change your name or we'll sue" ahead of time doesn't make this any better.

<comment><USER12> I just feel that shifts from a "we're going to legally bully you" to "cmon, we let you know".

If someone were to get a notice saying, "Hey, we're going to drop a bomb on you in 3 months. You might want to leave." and continues to live there stubbornly, then complains a bomb got dropped on them, whose fault is it? Clearly it doesn't mean you didn't get a bomb dropped on you, but it kind of nullifies your right to complain about it.

<comment><USER13> There's a difference between "fault" and "blame" that's not easily expressed in the english language, but I'm going to go ahead and call bullshit on your analogy. If someone is going to do something of questionable legality and warns you about it beforehand, does that make it "more legal"? I'll bet you think that people in high-crime areas should "just move out if they don't want to get mugged", too. But here, I have an analogy too:

I decide, say in January, that I want to change my company name from "Foobaz" to "Baz". Over the next 6 months, I go out to a bunch of startups named "Caz", "Faz", and "Jaz", and say "Hey so you might want to change your name because I'm going to change my company's name to Baz and I'm totally going to drop a legal hammer on you if you don't because I can afford it and you can't". After those 6 months are up, I change my name, and then flip around and start suing because they "didn't take my warning".

The logic here is questionable at best.

</comment></comment></comment></comment><comment><USER14> Pulling over my comments on the matter from Inbound.org. Anji mentions a partnership in his post that I wanted to put come context behind.

> When Anji reached out to us initially, they were CapSEO. At the time, I had > no idea Doz existed, or that CapSEO was rebranding. As Anji and I talked, > the discussion was around the functionality of CapSEO, which I saw as > complementary. Later the discussion moved to their plans to rebrand to Doz, > with a fuller focus on inbound marketing services (and software). This too > is complementary, but not with the brand of Doz, as Sarah alluded to. > There's obvious confusion and brand dilution of Moz that can come as a > result, and it's our duty to protect our trademark.

I think it's important to have this context. It feel into our lap with no other option than the action we took, we didn't seek this out. We've taken every step to be transparent into why, and hope, still, that we can resolve this in a civilized manner. I've spent the past 8 years of my life doing startups, the last thing we want to do is derail a startup from their mission.

<comment><USER15> I love the outpouring of empathy in the language of responses from Moz. Too bad at the end the end you still decide to stick to your guns and assert there is "obvious confusion and brand dilution". Really?!?

Are you really supporting the idea that potential customers of Moz, who go out in search of Moz and stumble on Doz, would confuse the two? Sure, they share two out of three letters, but they don't sound the same (no risk of a misspelling leading to Doz) or look the same.

It doesn't appear at all the that Doz is trying to conflate their brand to cause confusion or imply a relationship.

My guess is a company like Doz doesn't have the resources to fight, but they should. I can't imagine a court agreeing that even a "moron in a hurry" would confuse the two.

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

<comment><USER16> >Are you really supporting the idea that potential customers of Moz, who go out in search of Moz and stumble on Doz, would confuse the two?

With a Hamming distance of one between the names, why wouldn't this be plausible?

<comment><USER17> I don't know the statistical term for it, but the letters are on opposite sides of a QWERTY keyboard.

<comment><USER4> Which would matter if we were talking about likelihood of typos, but we're not.

<comment><USER17> Typosquatting has a larger legal footprint in copyright cases than Hamming distance, of which I can find no references. I'm not saying that typosquatting is happening here, but I would guess that typosquatting decisions would come to bear here well before HD did.

</comment></comment></comment></comment></comment></comment><comment><USER18> I find myself playing devil's advocate against all the hate being slung at SEOMoz in these comments. Coming at this dispute from an impartial viewpoint (never heard of either of these companies before this story), it sounds like it could potentially be a valid case of trademark protection. The two companies sound like they're in a similar industry, and the names are undeniably similar.

I'm not that familiar with the specifics of trademark law, so I don't know what the legally appropriate outcome is. But after seeing some of the comments from SEOMoz employees, I would be interested in reading a full response post explaining their side of the story.

<comment><USER19> The reality is that Moz does seem to have a case. Both companies are in the same industry, probably targeting the same clients. At the very least, it is a grey area.

<comment><USER20> If anything, Doz has a case against Moz. Up until a couple of days ago, Moz wasn't Moz, they were SEOMoz, which is really very different from Doz. now they've changed their name and they're sending C&D letters to existing companies who have similar names to what they changed to? If they didn't want to be confused with Doz, they shouldn't have changed their name to Moz.

</comment></comment></comment><comment><USER21> I will cancel our SEOmoz account tomorrow.

<comment><USER22> Will you sign up with doz.com?

<comment><USER23> YUP!

</comment></comment></comment><comment><USER24> Here's my favorite part, moz was originally probably used because SEO's favorite directory was/is the open directory project or just "dmoz" as it is known to SEO's. And, in the early days, a great SEO strategy was to volunteer to manage/moderate a category, so that it would be easier to get your own or clients' sites approved.

I'm not sure if Rand was one of those SEO people playing that game, but it's ironic that "moz" came from an open directory and is now fighting about trademarks.

What's next? Patent trolling? ;)

<comment><USER25> Here's a post that Rand wrote about the origin of Moz in SEOmoz - <http://moz.com/blog/what-does-the-moz-in-seomoz-mean>

_EDIT_ tl;DR based off the [moz] that was so popular years ago that stood for openness and transparency. DMOZ and others are included in this history.

<comment><USER9> > tl;DR not based off DMOZ

Uh?

> We're building off the history of organizations like DMOZ, Mozilla, Chefmoz, > etc

<comment><USER25> Building off the history of, yes. The history of openness and transparency, not becoming an admin on DMOZ for the sake of a link from one of the strongest domains on the Internet.

<comment> jack-r-abbit but... but... your TL;DR said "Not based off DMOZ" when the actual text does, in fact, say "building off the history of organizations like DMOZ". So, at a minimum, your TL;DR misleads people who didn't read it.

<comment><USER25> Fair point. Updated comment.

</comment></comment></comment></comment></comment></comment><comment><USER26> I know that HN has ring detection for up votes, but how about down votes? As of this writing, this post is only 1 hr old and has 98 points (which is higher than many of the posts currently above it) and 105 comments. yet it's dropping fast. It's a bit suspicious.

</comment><comment><USER27> I don't understand why they didn't just offer him $50K to rebrand. That would be both GENEROUS and EMPATHETIC.

<http://moz.com/about/tagfee#generous> <http://moz.com/about/tagfee#empathetic>

Maybe it should be TAGFEEH +Hypocritical.

</comment><comment><USER28> I don't think there's a conflict at all, and I hope the trademark office and/or the courts get it right. If you want to protect against indirect competitors rhyming with you, please pick a name that's longer than one syllable.

<comment><USER29> In trademark law, a mark can be "Confusingly Similar." Doz differs from Moz, but it may still infringe on Moz's trademark. Because Doz has a similar spelling and operates in the same industry as Moz, it may lead a "reasonable person" to believe the trademarks are related. The court will hold that Doz infringed on Moz's trademark if a reasonable person would find the two confusingly similar.

<comment><USER29> Doz and Moz operate in the same industry and the use of Doz would most certainly trip the reasonable person standard for confusing similarity. If "Doz's" attorney had performed a 30 min trademark search with the USPTO "Doz" would have been advised to choose a different name.

<comment><USER28> > If "Doz's" attorney had performed a 30 min trademark search with the USPTO > "Doz" would have been advised to choose a different name.

I don't believe you, and you haven't provided anything to back up your statement.

</comment></comment></comment></comment><comment><USER30> Check out all the variations on <http://?oz.com>. Will you sue all of them for confusion? 3 letter word trademark arguments are pretty lame.

Actually some of the ?oz.com sites are pretty bizarre.

<comment><USER31> It's not _just_ the name. Doz in and of itself has no meaning similar to Moz. The issue is the combination of name + tool focus.

<comment><USER25> Jen you might want to disclose that you work for Moz :-)

Full disclosure: I'm Jen's friend.

<comment><USER31> Hah sorry about that. I've been open in this thread that I work there, should have mentioned it again. :)

</comment></comment></comment></comment><comment><USER32> _"Even if it is a meritless suit like this one"_

This statement lacks arguments supporting it.

DOZ is "Search and Social Media Marketing done by professionals" according to their website, and Moz is "Software and Community for better Marketing". IANAL but I feel like there could indeed be confusion between the two, especially considering DOZ was Cap _SEO_ before, and Moz, _SEO_ Moz.

So now it's a matter of trademarks and specifically timeline on who was first, but the details are not provided in the post.

</comment><comment><USER33> They should compromise and get it over with: If SEOmoz think the Doz brand is truly a problem for them, they should pay Doz a fair sum to abandon their trademark.

</comment><comment><USER34> God damn lawyers with their god damn copyright crap. Eh, you get what I mean.

I'm disgusted by this behavior. What happened to innovate?

<comment><USER15> It's a trademark issue, but I agree petty IP issues are far too often standing in the way of innovation.

</comment></comment><comment><USER35> First use (actual use, not intent to use) in commerce matters. A lot. And it seems like Doz has that. Also, they already own their mark (they did register it, seems there's confusion on that in this thread too). I know a guy that deals in this kind of thing literally every day - and after reviewing the marks and filings at uspto he says it's a pretty long shot that Moz will get the Doz mark removed. (actually he said "no way will Doz lose their mark") So unless those first use facts aren't actual facts....well I reckon we'll all wait and see how this plays out.

Someone somewhere in this thread asked for an example of a similar situation. I can personally speak to that. Long ago and far away I worked at a software company and we developed a web based traffic analytics platform - <USER2> webtrends even! Anyhoo we didn't register the mark for it (young!) and we were contacted by someone who was trying to get their mark (same exact product name, similar functionality - a web traffic analytics program) registered. They told us we had to stop using the name, blah blah blah because they owned the trademark. Well, they actually didn't - yet. And we had first use in commerce. So we opposed their application, it was denied, we filed ours (which they of course opposed), but we ultimately owned the mark. Solely because of first use in commerce.

I don't know every detail of this unfortunate scenario, but from what I've read here and on the blog post, it's not at all a slam dunk for Moz. And it's unfortunate that they, and the Doz folks are having to spend time, energy and money on this.

</comment><comment><USER36> I'm all for the little guy, and I know this must suck for CapSEO/Doz. But SEOmoz seems to me to have acted above board here. I think Doz erred, and suggest they rebrand and move on.

<comment><USER37> I don't think Doz erred. They went out, probably paid 5 digits for the doz.com domain name months ago, but didn't register it as a trademark. And then seomoz goes and rebrands last week and they are caught off guard.

If moz wants the doz.com domain, they should pay for it. Why should doz just give it up over such a weak claim?

</comment></comment><comment><USER38> Its funny to see Moz employee defending their company. This is HN. Most people here is highly opinionated and most has made up their mind. Nothing you say can ever justify what your company did.

Just do what Opera did and take back your lawyer letter. Don't make this mess any bigger and you'd do fine. If you want, you can prove that Moz can do SEO better than Doz.

SEO is irrelevant these days though. Product is what matters

<comment><USER14> I want people to understand the why, that's why I'm here. My goal isn't to convince people to change their mind. The truth of the matter is that we were put into a difficult position, and with the information we had, this was what we viewed as our only course of action.

<comment><USER8> this is a straw-man argument, no one 'forced' you to do anything, a decision was made and it was the wrong one

now you have two choices, double down or retract and learn from the mistake

<comment><USER39> Seems you are the one with the straw man, since he didn't say anyone forced them to do something.

<comment><USER8> "we viewed as our only course of action"

<comment><USER39> That sentence does not mean that anyone forced them to do anything.

</comment></comment></comment></comment></comment></comment><comment><USER40> Disclaimer: I once paid for three months of SEOMoz

How different would this thread be if it were Google, Microsoft, Salesforce or some billion dollar company that decided to launch an Internet marketing brand at Doz.com?

SEOMoz's openness has helped dozens of startups with posts like this: [http://moz.com/blog/mozs-18-million-venture-financing-our- st...](http://moz.com/blog/mozs-18-million-venture-financing-our-story- metrics-and-future) You can't get much nicer than that to your competitors short of giving them money. IIRC the deck included there, from over a year ago, hints at future use of the Moz brand too.

Just because they're bigger than the company behind Doz.com doesn't mean we have to jump to the conclusion that they are the bad guys here. Their lawyer even went to the unnecessary trouble of offering to help doz.com which might have meant financially given a more dignified response.

</comment><comment><USER41> Moz employees, it would be useful if you mentioned that you're associated with Moz when commenting on this thread.

</comment><comment><USER42> Slightly off topic, but does it feel 'fishy' and 'unfair' to anyone else that this was published 2 days after the rebranding was announced?

<comment><USER43> i don't think this is off-topic. this was this first thing that popped into my mind as i read this article. Moz is in the wrong here, legal or not.

<comment><USER42> Huh? I meant wrong by the Doz guys doing this blog post for link bait. I think Moz has every (legal and moral) right to what they did.

</comment></comment></comment><comment><USER25> Note: definitely worth reading the comments, especially from Sarah Bird (COO at Moz), and the Inbound thread and comments - [http://www.inbound.org/articles/view/how-seomoz-sent-us-a- ta...](http://www.inbound.org/articles/view/how-seomoz-sent-us-a-takedown- notice)

<comment><USER28> So apparently you worked for seomoz, and maybe you currently work for moz. Why not disclose that? <http://www.linkedin.com/in/johnfdoherty>

Those comments don't make seomoz look any better. Look at the date when doz.com was purchased.

<comment><USER25> I'm a Global Associate for Moz and I work for Distilled, who took over Moz's consulting business when they went fulltime in SAAS.

 _edited because I was a jerk_

Next, doesn't matter when the domain was purchased. What matters is the date that the trademark, or the intent to use a trademark, was filed.

<comment><USER28> I never said that you denied it. I said that you failed to disclose it in your comment. My earlier comment was just a friendly reminder but since you went uppercase on me I'll add that you should know better because of the industry you work in.

<comment><USER25> You are correct, I did. Thanks for the reminder, though a statement like "Why not disclose that?" is, most of the time, taken as accusatory and not friendly. But this is not the place for such debates. Let's talk about copyright legalities :-)

<comment><USER17> _a statement like "Why not disclose that?" is, most of the time, taken as accusatory and not friendly._

No it isn't, but it belies a defensiveness and paranoia that you interpret it that way. Why not take it at face value?

</comment></comment></comment></comment></comment></comment><comment><USER44> My comments from inbound.org (co-founded by Rand Fishkin) keep getting deleted... and I'm following their guidelines, too.

So I've been taking screengrabs - here's the latest:

<http://oi40.tinypic.com/2uyrluu.jpg>

TAGFEE? What a sad joke.

</comment><comment><USER45> This story gave me some inspiration for a short parody… The Downfall style [http://www.youtube.com/watch?feature=player_embedded&v=c...](http://www.youtube.com/watch?feature=player_embedded&v=cqGKDInUh0w)

</comment><comment><USER46> I wonder if there is precident with Three Letter Trademarks, where almost any variation can sound similar. (perhaps this is an argument for a longer brand name that Three letters.)

</comment><comment><USER22> Remember Facebook having a problem with other *book sites?

<https://news.ycombinator.com/item?id=1635489>

</comment><comment><USER47> when google came, i was constantly confusing it with yahoo... because both of the companies have two 'O's in their names.

us customers are so dumb.

finally, i picked a side and chose to use google. this had nothing to do with the fact that google's product was BETTER. i was simply duped into it. goddammit!

</comment><comment><USER38> I hate it when I download chromium on linux and gets a Raiden clone though.

</comment><comment><USER48> Hey SeoMoz,

Guck Off

</comment><comment><USER49> I have decided to rename my seach engine company from SEARCHMoogel to Moogel (pronounced "moogle") and file a trademark lawsuit against Google for being too similar. I'll let you know how it goes. I think we have a winning argument, here.

</comment><comment><USER50> Perhaps NBC can block ABC under the same grounds?</comment>


Ballmer to announce VS 2010 will compile native Mac/iPhone apps at WWDC - <AUTHOR> http://www.theregister.co.uk/2010/05/27/ballmer_wwdc/

<comment><USER3> Honestly, I'm a bit surprised by the responses in this thread. The rumour might be true or false but that's not what I find surprising.

Are there technical problems regarding the rumour? There are, certainly. However, we developers know that technical problems can be solved and Apple and Microsoft certainly have the resources to do so.

Are there business issues? Is this an unexpected move? Certainly, it is. But Apple has a history of unexpected business moves and business innovation, as does Microsoft even if it is uncool to acknowledge that.

Even if the rumour is false (I don't know) I don't find it unbelievable at all, because (a) it makes sense (b) this move would be both typically "Apple" and typically "Microsoft", if you look at the history of these companies. Hell, Microsoft _started_ as a programming tool company.

<comment><USER4> I dare say Microsoft has the best IDE out there.

<comment><USER5> It does, as it works for a lot of people just fine, but it's not without it's quirks.

Some things that are better in XCode: filtering of options, error bubbles, keyboard mappings.

Some things that are better in MSVC: Debugging! Maybe because I had to use MSVC for the last 10 years, and I'm so used to it. XCode is also not bad, but would need more time adjusting to the keyboard shortcuts

<comment><USER6> Some things that are better in Eclipse: refactorings. Adding method parameters, changing their order, extracting methods, promoting or demoting classes, etc. At least when it comes to Java, Eclipse seems to have more options and a greater success rate than VS2008 with C#.

Debugging Java with Eclipse is about the same as debugging C# with VS in my experience, though it seems that VS's output console is slower than Eclipse's, and both are slower than a pure terminal.

<comment><USER7> I have to use both Eclipse and VS2k3/VS2k8/VS2k10 on a daily basis. Sure, eclipse has better refactorings. I would also argue that it's References/Declarations search features are better than the VS equivelents.

But that is the only two features where VS gets eclipsed. VS is an all-round better tool than Eclipse for everything else I need to do. Sure perhaps I can make Eclipse better by searching out some plugin written by some 3rd party, because the 3rd party support/community is better for Eclipse than VS. But from a daily use POV, atleast IMO, VS is simply leaps and bounds beyond Eclipse. VS also cost me $1000, Eclipse didn't cost me anything. So perhaps my view is skewed simply because I'm deluding myself because of my financial outlay, but I'd like to think not.

</comment></comment></comment></comment></comment><comment><USER8> So... Is this one reporter tossing his speculation on top of another reporter's speculation? And now leading to us speculating about his speculation??

I'm honestly amazed we are falling for this. It's exactly the same thing I see every holiday season at the grocery-store checkout: "Psychic reveals which star will die of a drug overdose this year, who is going to get married, and why a giant earthquake is going to flatten Toronto." It's a simple game that delights the rubes. Make a lot of guesses, take credit for the ones you got right last year, and hand wave the ones that didn't come true.

How is this any different?

p.s. Here's a suggestion: Create a poll asking HNers to vote on which wild- assed-guess is going to come true and keep all the talk of vapourware in one place!

</comment><comment><USER9> At first blush, I dismissed it for violating 3.3.1, but now that I think of it, you're allowed to use Objective-C, C or C++. Visual Studio already has a C/C++ compiler so they don't even need to introduce a new language into the mix.

And since it looks like Apple is betting the company on the iPhone/iPad (as opposed to Mac OS X) there's no real downside to letting developers on non-OSX platforms build iPhone apps.

You would still need the $99 Developer License to load apps onto the device. And Apple gives Xcode away for free so they're not losing money on allowing competing development tools.

I still don't think this announcement is going to happen, but it's not the most outrageous thing that could happen.

If anything its more likely that Microsoft would reject such an idea than Apple.

<comment><USER10> > there's no real downside to letting developers on non-OSX platforms build > iPhone apps.

To fully enjoy network effects you need to control the whole stack. This is the problem with this rumor: Jobs may be anything but he's not suicidal.

Allowing iTunes to run on Windows helped increase sales of iPods and music and preventing those who already had PCs running Windows to considering the competition.

Allowing VS2010 to target iPhone/iPod/iPad would increase the number of developers who could develop for the platform, something that I don't think Apple really needs.

If nothing else, Apple could raise the bar on apps a bit. This would only lower it.

<comment><USER11> _If nothing else, Apple could raise the bar on apps a bit. This would only lower it._

On the contrary, if Apple had more apps to choose from, then it could afford to be more selective. The only thing is that they're _already_ in a position to be more selective, and they're clearly not! (Perhaps too much work.)

<comment><USER10> You haven't seen many WinMo apps lately, have you?

<comment><USER11> To borrow a phrase from the Borg: WinMo is irrelevant.

<comment><USER10> That's the point. Apple doesn't need WinMo developers porting their apps to iPhone because a) they are terrible, b) there are not many of them and c) the important/interesting ones are already ported

<comment><USER11> Who said anything about WinMo apps? Mindshare is the valuable thing!

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> This doesn't even pass the giggle test from a technical perspective - iPad/iPhone is so massively tied to the Mac platform, how could you ever write any sort of meaningful integration with VS2010. You'd have to port all of the UIKit/CoreFoundation libraries over, you'd have to make a Windows version of the iPhone Simulator, you'd have to write a Objective-C compiler from scratch (remember, Microsoft would never ship GCC), that was _compatible_ with GCC, the list goes on and on.

Now, maybe he's announcing a compatible version of Silverlight, or a way to compile SL applications to iPhone/iPad, which makes _far_ more sense, and would be very compelling for developers. From one codebase, you could have a rich website, a desktop app, a WinPhone7 app, and an iPhone/iPad app, and you could write that app in C#, VB, Python or Ruby. _That'd_ be awesome.

<comment><USER13> Honestly that is FUD. Microsoft did ship GCC with SFU 3.5 (See [http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_...](http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX#SFU_3.5)) How do I know ? I worked on it.

<comment><USER12> That was before GCC switched to GPLv3. However, the point is moot as someone else mentioned Clang, which I could see MS shipping. I did forget about SFU though, good point.

</comment></comment></comment><comment><USER14> This makes perfect sense, at least from my anecdotal experience: there are tons of people who want to develop for the App Store but don't want to spend thousands to buy a new computer running OSX to do it. At this point, a developer who doesn't have an Apple laptop isn't likely to get one, so there are few hardware sales to lose, but a lot to win by letting Windows-based developers make apps for iP*s.

<comment><USER15> So the Windows coders who balk at a several hundred dollar 'Apple tax' are going to instead shell out several hundred dollars for a VS2010 license?

Or is the theory that Microsoft would let a feature like this wind up in Express when their own tools to develop for Windows Mobile are only available in vs2010 licenses that cost _more_ than a macbook and app store license combined?

EDIT: Which isn't to say that it won't or couldn't be plausible. But if it _does_ happen, it will be all about enterprises: The sorts of places that wouldn't blink at the _cost_ of a Mac, but would balk at having to train, staff and support a completely different toolchain and environment.

<comment><USER16> Actually, Windows Phone 7 tools come in an express edition, so it wouldn't be too strange for the iPhone version to come in an express SKU.

(Tools available from <http://developer.windowsphone.com/>)

But the tax is more like a thousand dollar tax, as it requires buying a Mac. (Is a Mac mini a reasonable development machine for the iphone?)

<comment><USER17> The mac mini is more than a reasonable machine for development. I use it for gaming, design work in CS4 and development, when I don't feel like using my laptop.

That would mean that the 'tax' is only $500, or cheaper if you get it refurbished.

</comment></comment></comment></comment><comment><USER18> No way.

Why would MS drive more consumers to the iphone only to retain developers? Consumers outnumber developers, what? 10000:1? Also, what signal would MS be sending to its developers about its own future platform.

More likely is some native office apps, bing search integration, and maybe silverlight news for MacOS.

<comment><USER19> I'm not saying you're wrong about this announcement, but honestly I see MS's strongest position right now to be with developers and in the enterprise.

It's not going to happen overnight, but I think we're seeing a pretty strong shift away from traditional computing for most consumer applications. MS really has no traction in that market (I suppose they could try to build off XBox), but they're still dominant in the business sector. As such I don't think it'd be a mistake for them to focus on developers and tools.

</comment></comment><comment><USER18> Microsoft has said Ballmer won't be speaking at WWDC...talk about getting it wrong:

<http://twitter.com/Microsoft/statuses/14850981422>

</comment><comment><USER20> I call BS - if something sounds to good to be true it usually is...

Far more likely that time is reserved for A) Bing over Google announcement in iPhone OS 4 or B) Office related announcements (maybe iPad?)

Given the investments Microsoft has made on the Mac the most agile team they have who could pull off something like this would be the Silverlight team who already has a .NET runtime (SL is a small .net runtime) running on OSX - <USER2> would imagine the jump to iPhone as rather trivial all things considered but there are two reasons this just doesnt make sense. Number 1 is the fact that since SL4 shipped the entire SL team focus has turned to WinPhone7 which uses SL as the app runtime. Second, given all the Apple pronouncements about being against 3rd party runtimes - I cant see them saying 'oh, Silverlight is OK'

<comment><USER11> _I cant see them saying 'oh, Silverlight is OK'_

What if the Silverlight development environment could target an Apple- developed and controlled runtime?

Apple would retain control, but gain access to an additional developer base as well as a Flash competitor _with Apple platform control_.

I'm not speaking for the credibility of the Register here. (I wish they'd die as much as Adobe would.) However, technically speaking, this is quite possible. It's also an interesting idea.

Add in a free SWF to Silverlight cross-compiler, and you have a very strong move against Adobe.

<comment><USER20> There is no such thing as an SL development environment, SL is a runtime and VS and Expression are the primary development environments. Semantics aside though, I just dont see it. Developing an SL runtime is not an easy task, it would take a large team at the very least a year to put one together. I could buy a situation where MSFT hands over the SL runtime source to Apple who then takes it over as part of some long term agreement to guarantee SL apps run on all Apple devices but that is about it.

<comment><USER11> _There is no such thing as an SL development environment, SL is a runtime and VS and Expression are the primary development environments._

Sorry, should've used a plural.

 _Developing an SL runtime is not an easy task, it would take a large team at the very least a year to put one together._

Not true if there's cooperation from the MS development team. There would be compelling reasons for such cooperation. Flash is Silverlight's incumbent competition, after all.

</comment></comment></comment></comment><comment><USER21> I don't see how this is even remotely possible. How would you run/debug apps you compiled with VS? I highly doubt that Apple would port their platform- specific libraries and frameworks (among others, OpenGL.framework, Kernel.framework, IOKit.framework, IOSurface.framework) to Windows. What happens when you try to use mach ports in your code?

Without the ability to run the app you just compiled, this rumored feature is next to useless.

<comment><USER22> "How would you run/debug apps you compiled with VS?" --> Visual Studio could launch or connect to a virtualized iPhone device and let you debug there. That's the approach you use when developing Android apps with Eclipse ... Eclipse connects to a virtual emulated Android device.

I also think if this happens that Visual Studio would support Objective-C (and C/C++) instead of C#/Silverlight on the iPhone. Microsoft would prefer the C# approach but Apple won't allow it.

<comment><USER21> Virtualization could work, but Apple would have to build in support for it (versus the current approach of running x86 versions of the iPhone apps/frameworks).

</comment></comment></comment><comment><USER23> I think this is real for a number of reasons.

First it's a win-win for both sides.

Apple needs some positive publicity to help calm the ruckus over 3.3.1 changes, plus all the noise Adobe caused. They also would like to start calming any rumblings from the DOJ that are starting to tremble. This helps on all fronts.

Microsoft needs a positive win that says to the world, 'hey we are still relavent!', the mobile train might have left the station, but we're onboard!'. Also, this will certainly kick-up the VS2010 adoption rate, which will net MS a pretty penny too.

June 7th is right around the corner, so we'll know soon enough but this rings true to me.

<comment><USER3> I also think it is a win-win but for entirely different reasons.

Microsoft failed to get Visual Studio into the mobile app development world, simply because previously it only allowed developing for Windows Mobile which is, honestly, something nobody really cares about. With iPhone development support, they could get new markets for Visual Studio.

Apple wins because (I hope I won't offend anyone with that) Visual Studio is just simply vastly superior to XCode. It is a truly great IDE (as opposed to Adobe Flash) that could make OS X / iPhone development an awful lot easier.

<comment><USER24> Even if VS is better than Xcode (and I have no problem believing that it is), I don't see how that's a win for Apple. First off, Apple isn't in the game of admitting that their products suck, and they certainly wouldn't encourage people to go out and buy PCs.

Secondly, Apple doesn't make that much money off app store sales, they make by far the most money off of the hardware. This includes (though with decreasing relevance) mac hardware sales. This may not discourage all that many mac purchases, but will it really increase iPhone purchases? It isn't like Apple is having a hard time getting apps on the store as it is, they are already dominating in terms of volume. Not to mention, this would be reaching out to a world of developers that Apple has spent the last decade insulting as being incapable of producing quality products, exactly the kind of "crap" the "review" process and 3.3.1 are designed to "prevent".

The only argument in the back of my mind that strikes me as particularly persuasive is that Apple is gearing up way ahead of anyone's predicted schedule to simply stop making macs altogether, at which point they would need a solid alternative development platform.

<comment><USER25> >> Secondly, Apple doesn't make that much money off app store sales, they make by far the most money off of the hardware.

Do you know this for a fact, or are you speculating? They don't break out app store sales in their 10-K, but consider quarterly hardware sales from Q4 2009:

      - 3 million Macs
      - 9 million iPhones
      - 21 million iPods

In the same period, users downloaded 400 million apps, although it's unclear how many were paid. App sales are almost 100% profit, compared to the 20% net margins on hardware.

<comment><USER24> Of those 400 million apps, the best guesses suggest that fewer than 10% of downloads are paid. Estimates have put the values at about 10-20 cents per dollar app. The costs are fixed though, so they do make much higher profits on more expensive apps. But the app store ecosystem hasn't made that a huge factor.

Even under optimistic assumptions: 100% profit, average sale price of $5, 15% paid downloads, the numbers are not good:

        400,000,000*0.15*5*0.3 = 90,000,000

That's nothing compared to the billions they are posting in profit each quarter.

The hardware margins are also almost certainly much higher than 20%, probably over 30% on a lot of the higher end hardware.

</comment></comment></comment></comment></comment><comment><USER26> In the case that this is true, this would be far and away Apple's biggest-ever sacrificial move against the Mac for the sake of iPhone OS. Ending OS X's exclusivity as the dev kit for iPhone OS would send an extraordinarily profound signal about the company's priorities.

<comment><USER27> Dropping the "computer" part from the name was probably a bit of foreshadowing...

</comment></comment><comment><USER28> Humm I'm not sure what the actual rumor is.. VS 2010 for the Mac or just the ability to dev for the iPhone or the iPad using VS on Windows?

From the technical both would be possible but I guess there would be some effort required to do either of these:

\- VS on a Mac: VS 2010 uses WPF for the gui. Therefore it would have to run on a Mac. I guess the .net platform probably already runs on a Mac (there is Silverlight for a Mac) and since WPF uses Direct-X they would need to hook it up with OpenGL. However since VS is huge this would take a lot of effort I guess, so rather unlikely.

\- The second rumor, that the VS on Windows would be able to produce iPad/Phone apps seems easier to do from a technical perspective, since they could use Clang/LLVM. But I don't really see the point here: There are more then enough people developing for the iPhone/iPad and this would probably hurt Microsofts Windows Mobile plans.. as well as Apples Mac sales..

So it's a rumor - that's all probably complete BS. We will see..

</comment><comment><USER29> I don't believe it, but if we're imagining then officially blessed C# support would be very cool.

<comment><USER30> The Java -> Cocoa Binding was so poor because of the dynamic nature of Objective-C. I wonder if C# would fair better?

<comment><USER3> C# 4 supports dynamic typing.

(The C# 4 compiler is shipped with .NET 4 which is in turn shipped with VS2010.)

</comment></comment></comment><comment><USER31> I was thinking that what if they allowed a toned down version of SL on iphone, something without any of the localized storage libs. That would put it pretty much as a UI for any type of webservices (which is really no different than the web at that point). It would mitigate the ability for SL to perform features similar to apple apps (doesn't cannibalize app sales), but also would "get silverlight" onto the iphone. Something good for both MS (hey look at Silverilght, it went where flash couldnt!) and also for Apple ("hey we told you were not against other frameworks, look here we allow silverlight!").

<comment><USER32> This goes against everything they've been vehemently defending the past months. An extra layer, non-unique apps, etc. AND Microsoft is a much larger competitor than Adobe.

</comment></comment><comment><USER33> Umm... April fools was almost two months ago.

</comment><comment><USER34> Don't get too excited, although I don't personally have authority to dismiss this, I have word that this is a completely FALSE rumor (sorry, I can't back that up-- at least do yourself the favor of being skeptical).

Edit: Confirmed <http://twitter.com/Microsoft/status/14850981422> (Microsoft official Twitter)

Quote: "Steve Ballmer not speaking at Apple Dev Conf. Nor appearing on Dancing with the Stars. Nor riding in the Belmont. Just FYI."

</comment><comment><USER35> Iirc, first generation iPod did not work/sync on Windows, so what is so unbelievable about Apple having the iPhone SDK working on Windows with Visual Studio now?

Although personally I don't think this is going to happen. As a hardware company, i'm sure they make many extra sales from companies and developers purchasing for the sole purpose of targeting the iPhone/iPad/iTouch and Mac OS X users.

</comment><comment><USER36> Because they have the same enemy - Google. (and not to mention Bill and Steve look very much alike now, AAPL will be the next MSFT)

</comment><comment><USER37> Strategically ridiculous and technically preposterous.

How does this nonsense get published? The only story here is how so many people apparently don't understand computers or the computer industry.

</comment><comment><USER38> The App Store has enough crappy apps. I don't think opening the platform up to VS is going to bring in any more @atebits or the like. If you want to be serious about iPhone/iPad you will get a Mac.

</comment><comment><USER39> This is something that could feasibly happen. But still, I'll believe it when the words come out of Ballmer's mouth.

</comment><comment><USER40> It's not that crazy. Remember when an iPod could only sync with a Mac?

</comment><comment><AUTHOR> This story is all over the net at the moment. For example:

[http://blogs.computerworld.com/16201/apple_makes_iphone_dev_...](http://blogs.computerworld.com/16201/apple_makes_iphone_dev_deal_with_microsoft)

I don't know if it's true or not but there's certainly smoke. Perhaps aimed at taking the thorn out of the section 3.3.1 changes relating to third-party tools?

I actually understand Steve's point about cross-platform GUIs being the lowest common denominator (just look at Java Swing apps) but it's disappointing that change also hurt MonoTouch, which was a 1:1 iPhone API mapping and not an intermediate layer like the Flash compiler was/is.

<comment><USER41> >I actually understand Steve's point about cross-platform GUIs being the lowest common denominator

Sure. iTunes on Windows.

>I don't know if it's true or not but there's certainly smoke

All of the smoke emanating from a single nobody making a completely unsupported claim. It's actually a bit extraordinary how little is necessary when it comes to Apple.

<comment><USER10> I always wondered why iTunes for Windows is Carbon based. NeXT had a full OPENSTEP stack capable of running under NT (I did it) and that is what Cocoa is based on.</comment></comment></comment>


Golang – Level 7 Load Balancer and Cache - <AUTHOR> https://github.com/CoderCookE/goaround <comment><AUTHOR> Looking to get some feedback and suggestions for further development.

<comment><USER2> Looks interesting. Can you share some more background: why this is a good thing? When should I use this in place of haproxy/nginx etc.

Thanks!

<comment><AUTHOR> The hope is eventually for this to be something people could use in a production environment, obviously there is some work to do on that front, which is one of the reasons I'm trying to solicit some feedback about what this current implementation is missing.

Without going into specifics about other load balancers the goal here was to create something that is lightweight and easy to standup. I've found the configuration of a lot of other load balancers to be a bit burdensome, especially with regards to dynamically adding and removing backends or cache control. Also I think there is some appeal to having a single binary process that can be easily built to run in a variety of environments. I thought GoLang, because of its concurrency model and channels would be a good way to create a reliable stable process. Also [https://github.com/dgraph- io/ristretto](https://github.com/dgraph-io/ristretto) is a super compelling high performance cache, that I was able to leverage for this.</comment></comment></comment>