I got the swag pack back in the day. Email is in my profile.
HN user
deliminator
vivid.flame1084@fastmail.com
Clojure's built in PersistentVector does not support O(log(n)) inserts/removes from the middle/front, but there is another implementation that shares a lot of it's implementation with some extensions that does: https://github.com/clojure/core.rrb-vector/
Overflow protection is fail-fast behaviour, similar to array bounds checking. It allows you to more quickly find the source of errors. I believe everybody agrees it's a good thing, at least in the array bounds checking case.
Optimization flags in general should not change visible program behavior, except for performance.
The only behavior you would be able to observe before, that you wouldn't after disabling overflow behaviour, is a crash, and you would have fixed that anyway as soon as you observed it.
Of course, if there is $370 Million on the line, maybe just disable it and hope for the best :-)
Be careful, in the country I live in (Austria) it is illegal to import prescription drugs. Customs made me pay a fine of about 60$ for trying to import Melatonin (and I didn't get the Melatonin either).
"Can I guarantee every function that expects a T to behave exactly the same way when I pass a P instead (where P is a subclass of T)?"
For those who don't know, that's the Liskov Substitution Principle [1]
[1] http://en.wikipedia.org/wiki/Liskov_substitution_principle
My colleagues and I learnt that lesson the hard way. We are working on a WYSIWYG editor (Aloha-Editor) and the first version did depend on jQuery (and jQuery UI for that matter). That caused a lot of trouble for people integrating the editor in their websites, especially if they were already using jQuery. For our particular case we really didn't need it, as it's just as easy to say .getAttribute() instead of .attr(), and we didn't use selectors much, if at all. Effort is underway to get rid of the dependency from the core library in the next major release.
Also interesting is this interview with prison guards who have defected. Camp 14 - Total Control Zone [Abridged]: http://www.youtube.com/watch?v=Rb1iwo4txE4
I have a fundraising page for LiNK (non-profit organization rescuing north koreans) and am matching donations: http://fundraise.libertyinnorthkorea.org/fundraise?fcid=2704...
Actually, most of the people working in those organizations are children of party officers or executives of wealthy foreign currency-earning organizations.
I expect he had connections and/or was able to bribe his way towards becoming a tour guide. Tourism, after all, is a foreign currency earning industry.
Clojure's standard persistent vectors don't allow insertion in the middle without copying the entire vector, they only allow fast insertion at the end. There is an alternative implementation here [1] which does allow insertion (anywhere) without copying the entire vector.
Have a look at this: http://substance.io/
I'm working on something similar: https://wikidocs.com. Although our's closed source at the moment (can't say whether or not it will remain closed), we will provide a downloadable package you can run yourself.
We provide wysiwyg editor integration (Aloha-Editor) with presence and remote cursor. We are working on a hosted/downloadable service with low-level data-sync api and high level wiki features: https://wikidocs.com
Although more on the motivational than in the technical side, I learned a lot from his talks. To me, the feeling after one of his talks is more akin to "it's is so obvious to me now, I should have been thinking like this all along". http://en.wikipedia.org/wiki/Egg_of_Columbus
We are building a real time HTML synchronization engine at wikidocs.com (using a custom OT engine). It's still work in progress, but you can already try it out - if you fire up the inspector and manipulate the DOM, your changes will be synchronized automatically.
One of my favorites is Alan Kay "Programming and Scaling" http://www.tele-task.de/archive/video/flash/14029/
Following quote comes to mind (Dijkstra) "...we have to keep it crisp, disentangled, and simple if we refuse to be crushed by the complexities of our own making..."
I found his use of the word "crisp" very interesting. I believe it means to keep your code short and to the point, without any extra embellishment.
He answers that question from someone in the audience at about 55:25 in this Google Tech Talk. http://www.youtube.com/watch?v=Ms4NIB6xroc
Google Tech Talk about Shin's story http://www.youtube.com/watch?v=Ms4NIB6xroc
One possibility is to inform yourself more.
FYI
The best resource I found so far is http://www.dailynk.com/english/ . At least one more story like the OP's can be found here http://www.dailynk.com/english/sub_list_last.php?page=1&...
There is an organization that tries to do something about this http://libertyinnorthkorea.org/ . They have some videos as well that are worth watching http://www.youtube.com/user/linkglobal
Correct me if I'm wrong, but does this not merely allow an attacker to cause the browser to make requests with custom headers? That is, it does not allow the attacker to gain the CSRF token, and if the CSRF token is not known to the attacker, he would still not be able to make API requests.
Another story about life in prison and subsequent escape http://www.dailynk.com/english/sub_list_last.php?page=1&...
Before the GPLv2 we had the AGPL, which made it explicit that you had to divulge any server side code.
Now, with the GPLv2, it is possible to use Aloha freely in most websites/webapps. You don't distribute your website/webapp and therefore are not bound by the GPLv2 to divulge your website's source code.
The GPLv2 _would_ take effect if you distribute your website in the traditional sense - a package that someone can run himself.
(IANAL and can't speak for Gentics etc.)
The License was changed recently to GPLv2.
The aloha core is 239KB (minified but not gzipped). Plugins can be anywhere from 5KB to 50KB. The version on the CDN includes about 30 plugins.
I expect the size would be around 300KB if only the basic plugins are included.
Still, it's a lot bigger than redactor - point taken.
The latest big development was porting the UI from ExtJs to jQuery UI. This had some benefits concerning licensing and code size.
Drupal is interested in integrating Aloha, and we are currently discussing several improvements that would be necessary for them. Have a look at the issue tracker. I think the UI À la carte and accessibility will be the next big user-visible developments.
I'm curious why you decided not to use Aloha Editor, since it is also able to produce clean markup. Disclosure: I'm one of the Aloha Editor developers.
Also Aloha Editor (GPLv2)
In my experience Clojure is very callable from Java. For example, Lists and Maps can be passed as normal arguments to clojure functions without conversion step. This works because Clojure favors abstractions over concretions. For example, instead of a concrete cons cells datastructure, Clojure has the ISeq interface. As far as I can tell, calling clojure from Java introduces no overhead at all.
Datomic is a commercial database system developed in Clojure. The peer library is what you use in your client application to query the Datomic server. The peer library is written in Clojure. I expect that means calling Clojure from Java, and including the Clojure runtime jar in a client application, is safe/stable/supported enough to build a business on top of it.
I'm still learning though, so take what I said with a grain of salt.
There is a case for doing both, pre-rendering on the server, and rendering updates on the client. This approach is used by Google plus for example.
I wrote a simple implementation that uses google closure templates to pre-render the page with dynamic content on the server, and to me the app felt more stable. This feeling may be entirely subjective, as I didn't make any actualy measurements.
A counterargument may be that this approach does not scale and would overload a server resulting in worse stabilit/render-time in the end.