javascript

Google Apps Script — Google Developers. Interesting - JavaScript scripting for Google Apps like GMail or GDocs and so. Doesn't look so uncool and now also has an Eclipse plugin to be able to edit the scripts offline.

You are Missing the Point of Promises. A bit old, but an interesting overview of what promises are and what they should be, how they lead out of the hell of callbacks and what the rather theoretical model behind it all has to offer. And where you can find it in JavaScript libraries and in which libraries it is rather neglected.

PyPy.js Update: A Proof-of-Concept JIT. Braintwister. Python using PyPy on JavaScript via asm.js. With active JIT.

How To Create Your Own Chrome Extensions. I should read this more closely. I would already like to add one thing or another to Chrome.

php.js - PHP VM with JavaScript. Simply move PHP execution to the browser. Hey, then the security vulnerabilities in PHP will only have local effects for the user and no longer for the server!

Processing on iOS. Just stumbled upon it. What it says - processing.js in a spartan but usable mini-IDE. Nice for in between. And somehow fits well with the tablet. Ending sketches is a bit awkward, you have to tap or press on a bar at the top or something, which nobody tells you. But otherwise everything is clear. There are two more that I found, one costs 89 cents and delivers an interface analogous to PDE and the other is pr0c0d1n6 - it's quite expensive at forty-five, but it has a really usable IDE.

NovoCard. Wow, I've been waiting for something like this for a long time. Unfortunately, it's not for Android yet, but for the iPad, but it could revive my old iPad for a while - a Hypercard clone for iOS that comes with a scripting language based on JavaScript in this case. Everything onboard on the iPad, making it ideal for tinkering on the go. And in general, I think the Hypercard structure fits tablet computers pretty brilliantly. I'll probably play around with it.

XKCD plots in d3. And this in JavaScript and directly in the browser. Would be something for the math fans out there who always think they have to post plots.

LLJS : Low-Level JavaScript. I don't understand what the point is of compiling a low-level language (a JavaScript dialect with C-like type definitions and constructs) to JavaScript, which is not exactly low-level in its execution model. But in case of doubt, the standard argument applies: because it can be done! However, this is probably more of a project that I only link to because it's weird, but I probably won't use it myself anytime soon.

linq.js - LINQ for JavaScript. What it says on the tin. LINQ for JS objects and arrays. Which can make the code more readable when dealing with structured data from services that are rendered in the browser via JS.

rawson.js - a camera raw previewer in javascript. Jupp. A RAW module for JavaScript. It's crazy what can be built with JavaScript. Although, after the PC emulator running in the browser that boots Linux, nothing should surprise me anymore.

Ymacs -- An Emacs-like editor for the Web. As the title says. Emacs now also boots in the browser. However, there is still no usable editor for Emacs.

OscarGodson/EpicEditor. That sounds interesting - a web editor that doesn't just produce HTML, but Markdown. Could be interesting for some projects.

Repo.js. I found the Source-Highlighter through this - a small jQuery plugin that easily embeds a GitHub repository into a website. Very practical if you want to integrate your projects into your own websites and don't want to hand over the entire website to GitHub.

isagalaev/highlight.js. Just stumbled upon it, a small JavaScript source highlighter that works with a language heuristic and thus does not require explicit specification of the language to be colored - it simply tries all languages and takes the one with the most recognized syntactic elements. There is also a jQuery VanGogh jQuery plugin for this.

LiveScript. Looks interesting, a descendant of CoffeeScript, but with a syntax that is strongly inspired by Haskell and a Prelude that also aligns with Haskell. With it, you can work in a functional language instead of JavaScript, which, however, continues to try to maintain a balance between functional and imperative elements - so not the pure approach as in Haskell.

PEG.js – Parser Generator for JavaScript. I stumbled upon it while looking for some parser implementations, including PEG-based parser generators, as I have a PEG definition for Markdown. But I probably need to study some theory before I can use it meaningfully. Or I'll just handcraft the parser - the Markdown syntax isn't really that complicated after all. And for my game project, I need to extend the parser with various custom features anyway.

Matasano Security - Matasano Web Security Assessments for Enterprises. Analysis of cryptography in JavaScript. Summary: Cryptography in JavaScript is usually a bad idea, as the JavaScript is loaded from an untrusted source or untrusted network (if you trusted it, cryptography would hardly be necessary) and therefore a chicken-and-egg problem exists. Regarding the previous 0bin project: cryptography was not implemented to secure the user, but to secure the 0bin operator - it is therefore relatively irrelevant to the operator whether users are secure or not, it is only about "plausible deniability" for the operator. The situation is different, however, when a JavaScript encryption is implemented instead of using SSL.

sametmax/0bin. Interesting approach to circumvent the problems of pastebin hosting. With pastebin-like sites, the problem is that users post all kinds of content and the server operator can quickly be held liable. 0bin tries to shift this problem so that the operator cannot know what is in the pastebins, as they are stored encrypted and the encryption is done by the client via JavaScript. This works, of course, only if the judges also accept that the server operator cannot know what is going on - and not, for example, argue that he should then just install different pastebin software where he can know and still hold him responsible. Certainly an interesting approach, especially the idea of putting the key for the encryption in the hash of the URL (i.e., the part after the # in the address) and thus having a functioning URL, but still not providing the server with the key (since the hash of a URL is only used by the client and not communicated to the server).

sipML5 - The worlds first open source HTML5 client. Oh - someone wrote a SIP client in JavaScript that runs entirely in the browser. It is based on WebRTC, a standard for real-time communication on the web.

A free book (that will also be available as dead tree or electronic wood from O'Reilly) about backbone.js. Backbone.js provides an MVC-inspired structure for JavaScript programming (where you can argue a lot about what exactly is the View and the Controller and whether it is "pure" MVC - or you just program and ignore the theoretical ballast).

tuupola/jquery_lazyload. This might be interesting for displaying large amounts of images because it allows you to delay the loading of images until the user actually scrolls to them. The page is pre-built with placeholder images, and only the images are later sent over the line. However, I think Infinite Scroll is the better solution, as it allows not only images but also general content to be added - and it also works smoothly with Masonry so that these content blocks can also be visually well distributed.

Hotcanvas: Realtime coding. I'm a fan of Processing-like environments, this one comes quite close, but runs as an interactive environment and looks quite nice. Ok, there are probably quite a few of these things by now, but still, I like this kind of stuff.

Bilderarchiv | rfc1437. My image archive was revised over the weekend and now comes with funny JavaScript gadgets for automatic tiling. Not really groundbreaking, but more interesting than the previous, rather boring format. jQuery Masonry is the main part of the work. Nice little JavaScript library. The most interesting part is probably the heuristic in my little plugin, with which I bring the images into portrait/landscape/square formats, so that the whole thing does not become too boring due to an excess of landscape formats. Unfortunately, there are still gaps in the image stream, where Masonry could actually become a bit smarter (and e.g. pull up small squares). Or I have to sit down again with the heuristic and make sure that the chances of gaps are reduced.

JSIL - .NET to JavaScript compiler. No idea if I already had this, but it's one of those crazy projects you can safely link twice. The actual .NET IL code is translated - so you can run programs in the browser that were not really intended for it. For example, part of XNA is supposed to run, so you can run games in the browser that are actually for the XBox.

jQuery Masonry. Alternative to BlocksIt. Worth checking out. Even pushes blocks more aggressively, rearranges the order if necessary.

BlocksIt.js - Dynamic Grid Layout jQuery Plugin. That's what it says. Sounds quite interesting, I have to check it out.

Cubism.js. So many projects, so little time. But just a quick blog note, if I ever have to deal with time series visualization in the near future, this looks really good for that.

Introducing Pivot.js. Hmm, definitely worth a look, Pivot looks quite nice, simple API and interesting possibilities. I have a project at work that could really use some reporting features. And offloading to the client is sometimes a quite good idea.

flatiron/plates. An interesting JavaScript templating engine that takes a slightly different approach than many others - there is no separate template language, only HTML and JavaScript. Any logic is in the JavaScript and any structure is in the HTML and both are quite strongly separated. Instead of a template language, there are functions for precisely specifying which elements in the HTML should be changed how.

iphone - What happens to JavaScript code after app is compiled using Titanium Mobile - Stack Overflow. I was also interested in the question, so I blogmarked it here. Quite interesting what happens there, it goes much further than what PhoneGap does, for example.

Titanium Desktop – Node.js Prototype « Appcelerator Developer Center. Titanium is already on the list of things to test because, alongside PhoneGap, it is one of the ways to turn JS+HTML code into apps and desktop applications. And here, one of the developers shows how to integrate a node server into the desktop. This would also be quite interesting, although it probably won't work with iOS and Android (since there you are forced to use the JS engine provided by the system in the browser widget if you want to load dynamic code from outside).

Embedding and running Node.js within a Firefox XUL extension. Impressive what you can do with Firefox and its infrastructure. Theoretically, you could also modify this extension so that it runs in a single-site browser, which then directly opens the homepage of the embedded server, allowing you to build completely autonomous desktop applications in JavaScript (and for those wondering why I'm collecting all these JS-on-desktop things: with the help of Phonegap and some glue, you could not only build apps for iOS and Android, but also desktop applications with the same code).

NodObjC. I'm not sure if I really want this, but with this library you can bridge ObjC frameworks with JavaScript. This could be interesting, for example, in the context of PhoneGap, if you need to access iOS native APIs that are not yet provided by PhoneGap (though you need Node.js as a basis, I don't know if that already works on iOS).

topcube. I should take a closer look at this - a desktop app that includes an embedded web server (node.js) and browser (GTKWebKit). With this, you can build desktop applications based on JavaScript and Node.js - for example, also rebuild Amber Smalltalk into a compact desktop application. Unfortunately, the OSX support is still somewhat limited.

HyperCard, Visual Basic and the Importance of the Novice Developer. Interesting article that puts HyperCard in relation to Handheld Developer. And after playing around with Handheld Developer, I would say they are not completely wrong - it is a nice visual environment for creating iOS web applications with integrated hosting with which you can quickly put together a prototype and even get server-side scripting in JavaScript. Ok, it is not quite cheap, but there is a test version to see if you could have fun with it. The applications are actually not so fixed on iOS, because in principle it is just HTML5 and JavaScript - and should therefore also work with Androids (I have not tried that yet).

ResponsiveSlides.js · Responsive jQuery slideshow. I am a fan of Bin and Lightbox, but I also like this small library at first glance - it is simple and easy to use and does not do a thousand things at once, but simply shows images in a slideshow. Specifically for animating header graphics, for example, this could be quite interesting.

Learn Smalltalk with ProfStef. I've already tried Amber, which is Smalltalk 80 based on JavaScript. Now it comes with a node.js-based web server that implements minimal WebDAV and is at least compatible enough with the language that the author could port the ProfStef tutorial - and I've linked it here. Just try playing with a Smalltalk on the website for 5 minutes.

Technical Overview : Dart : Structured web programming. Of all the current "we're reinventing JavaScript" approaches, this one is almost the most interesting - in principle, it is a classic OO language with a C#-like feature set and mapping to JavaScript. But what is interesting about this system: it is designed from the outset to also develop in a browser environment. But not just within a browser, but as its own IDE, which integrates a runtime browser. And the developer of the project is the Newspeak (previous post) developer, who has already shown very interesting ideas for an IDE. Currently, the Dart Editor is much more oriented towards typical IDEs than the more innovative ideas of the database-based IDE in my opinion.

dust is a JavaScript template library used in Kanso. Functionally very similar to Django Templates, though with slightly modified syntax.

Kanso Framework. That sounds very interesting - a framework for programming JavaScript CouchApps. So applications that are written in JavaScript and run entirely from a CouchDB installation. The server only needs to provide a CouchDB instance and that's it in terms of requirements - and since CouchDB comes with replication by default, you can easily scale up or implement fault tolerance - simply form a cluster of several CouchDB instances. Equally interesting are replications of the production database to another pot, such as a private developer machine or various other scenarios that are possible with CouchDB. Since the whole thing is based on CommonJS as the language base, JavaScript is not quite as bad as if it were used raw.

Cross-domain communications with JSONP, Part 1: Combine JSONP and jQuery to quickly build powerful mashups. Since I needed it for a colleague and therefore searched for it, I'll just bookmark it. JSONP is basically just a convention for JSON services that respond to a callback parameter by passing the generated JSON as a parameter to a function call and using the content of the callback parameter as the function name. This makes the data accessible from domains other than the one from which the actual script comes - normal AJAX does not allow this.

CouchDB: The Definitive Guide. Oh, the CouchDB book by O'Reilly is also available as an online book and even in German. Certainly interesting for one or the other who doesn't feel like wading through English books. The translation is not (yet?) complete, so you will still come across English chapters. But it's a start.

Installable Web Apps - Google Code. There you can find some background information on how to convert web applications into installable web applications or hosted apps. This allows you to use Chrome as a runtime for applications that behave very similarly to regular applications - Amazon's online Kindle is a great example. Programming is done in JavaScript, which is much less intimidating than it was a few years ago. As Packaged Apps, you can also do everything that Chrome Extensions can do (and can go beyond the scope of regular web applications).

extpascal - Ext JS wrapper for Object Pascal. Well, I always wanted to program my web applications with Pascal and give them an Ajax-GUI. Because it's possible. And every RIA hipster gets a heart attack when they see the sources.

sausage.js - examples - The Core API. Interesting small JavaScript library that makes navigation in large documents much easier, without overwhelming you with navigation buttons - just hover with the mouse on the right, there are visual markers for the size of the document sections and where you hover, a button appears that you can use for a direct jump. In my opinion, much less aggressive in its presentation than Flexible Nav. However, Flexible Nav of course has the advantage that you don't have to hover to see the navigation.

Okito.net — On SproutCore 2.0. About the current version of the framework that powers icloud.com (it seems some developers violated their NDA when they took a closer look at icloud.com). SproutCore has been around for a while, but version 2.0 has brought many changes and is a rewrite in essential parts. The goal is still to build native-looking applications using only JavaScript and the browser.

Get Started Guide « PhoneGap. Just blogged for future reference, because I will definitely need this again when I play around with Phonegap and Android. Quite bumpy, it would be nice if Phonegap simply included a ready-made project template. But well, it works anyway - my Hello World appears. On the simulator. And I don't have to touch nasty Java for it, just nasty JavaScript.

CodeMirror. If you want editors on websites that color the syntax of programs. Looks quite nice and could perhaps be interesting for a few things, e.g. where I allow restructured text to be entered, or where Python code is stored in the database. It is a JavaScript library that is simply plugged into the browser in the textareas.

flot - Attractive Javascript plotting for jQuery. Again something for the number crunchers, or rather their visualizing colleagues - presenting number deserts in attractive graphs, and all as a jQuery plugin. I definitely need to take a closer look at this, could be interesting for a specific project.