Who is talking?


Jam - The JavaScript package manager

about 7 years ago | Ben Gilles: Ben Gillies

For front-end developers who crave maintainable assets,Jam is a package manager for JavaScript.Unlike other repositories, we put the browser first by using AMD modules.Jam - The JavaScript package managerI was talking to fnd just the other day about this and what a good idea it was. I haven’t looked at the implementation too closely yet, but it seems (to me at least) that it’s something that has been sorely missing in the past. via TiddlySpace [source]

Winners! Innovation Nation award!

over 7 years ago | Ben Gilles: Ben Gillies

The AMBIT Collaboration are thrilled that we have won the Guardian and Virgin Innovation Nation Award under the category of innovation in collaboration.Thanks to all our supporters who voted for the collaboration.Winners! Innovation Nation award!Tiddlers in action! Congratulations to al involved.via dickon via TiddlySpace [source]

CodeGrunt - The Brittleness of Type Hierarchies

over 7 years ago | Ben Gilles: Ben Gillies

When you write a program using a C#-like language you typically start by modelling your problem as a hierarchical set of classes which represent your domain. You then procede to ‘flesh out’ and expand upon these types with code which actually implements your program.After a while you inevitably find an exception to the rules of the system you have created - your types turn out not to match the problem in some way. Typically this occurs later after a lot of work has already been done which is now strongly tied to the structure of your type hierarchy, so you are left with a problem - do you hack around the incongruity, usually the quickest solution, or restructure your types to adapt to the new requirement?If you choose the former your hierarchy not only fails represent the problem anymore, it actively misleads you about it. If you choose the latter, you end up spending a long time yak shaving - working on something which has absolutely nothing to do with the problem itself and is purely a product of the system in which you are writing your program - the very definition of accidental complexity.CodeGrunt - The Brittleness of Type HierarchiesThis is my experience almost exactly, and why I tend to prefer more dynamic languages like Python and JavaScript that make refactoring easier.My approach tends to be to first start building, and then when refactoring/encapsulation opportunities arise, refactor and encapsulate. I find this results in something that better reflects the problem domain than defining a class hierarchy up front. Of course, I now use Python and JavaScript, which makes this all a lot easier. via TiddlySpace [source]

Confessions of an introvert

over 7 years ago | Ben Gilles: Ben Gillies

I remember you though. I was really impressed by your story and your vision of where you want to take the company. Selling myself is not my strong suit, so I must have seemed pretty funny handing you my card and mumbling something about getting coffee. The thing is, once you get to know me, I’m a pretty funny and personable guy. Hell, I love to have a good laugh and hang out to decompress – it’s really important to me too.Confessions of an introvertSeems to me like being an introvert is deeply unfashionable and uncool in the web industry at the moment. That sucks. It would be awesome if it changed. via TiddlySpace [source]


over 7 years ago | Ben Gilles: Ben Gillies

cdent writes:So you got some action over on side A and a sizable set of web browsers that run across all these different operating systems. And then you’ve got this other browser that only runs on side B. If Microsoft wants to show a real commitment to an open web, they need to start releasing versions of IE for other operating systems. It used to be possible to get IE for Mac and Unix. There was even a time when IE was the clear best choice of browser on a Mac. The thought occurs to me that the exact same argument can be made for Microsoft’s mobile app development process. That being:If people want to develop a mobile app, they need a Mac running OS X, unless they don’t want to support iOS (unlikely). On a Mac, they can develop apps for iOS, Android, and responsively on the web itself.If they want to also support Windows Phone, they need to shell out for a copy Windows, which they must then either run inside a VM (which sucks), using BootCamp (which is a lot of hassle), or on a separate Laptop (which is expensive).After they have Windows running, they need a copy of Visual Studio (I’m unsure of the license terms of the Express editions, but they may or may not suffice).So the workflow for someone wanting to support Windows Phone boils down to one of the following 2 options:Develop all your apps for everything but Windows Phone. Then switch to a whole new Operating System and make the Windows Phone version. Develop all your apps for everything but Windows Phone and point people at the web site. The solution seems fairly obvious (hint: it’s (2)).tl;dr: Microsoft needs to release Visual Studio for OS X as well as IE. via TiddlySpace [source]

Michael Bleigh: LocalStorage? IndexedDB? What we need is Redis for the browser.

over 7 years ago | Ben Gilles: Ben Gillies

Michael Bleigh: LocalStorage? IndexedDB? What we need is Redis for the browser.: mbleigh: After Mozilla’s hacks blog posted an article about how localStorage is too slow and someone else said localStorage is just fine it reminded me of how frustrated I’ve been at the various proposed “solutions” for an in-browser persistence engine. It is completely ridiculous to think it… This is really obvious. I can’t see anything else really catching on.

JSON.org License Literally Says it "shall be used for Good, not Evil" | Javalobby

over 7 years ago | Ben Gilles: Ben Gillies

But, the most important thing I take away from this license is that this additional clause adds an unnecessary complicationJSON.org License Literally Says it “shall be used for Good, not Evil” > JavalobbyIt’s only unnecessary if you believe that people should be allowed to do evil things with tools you create. If anything it’s badly worded, not unnecessary. via TiddlySpace [source]

Some thoughts on Vendor Prefixes

over 7 years ago | Ben Gilles: Ben Gillies

Remy Sharp writes]:Browsers need to:Fucking drop experimental prefixes. It’s unacceptable and a disservice to the developers working with your browser. You need to give timelines to dropping these things.Non-production ready browsers should support experimental prefixes, production ready releases should not. If it’s Chrome 16 - the stable version - experimental support should not be baked in. The properties should be full available without the prefix.Work with the working groups (…Apple).I agree with all of these points, but at the same time, I can’t see it actually happening. I just can’t see Google or Apple actually removing features from their browsers and moving them all into beta in perpetuity (because let’s face it, the standards process takes far far too long). Even if this did happen, I can well imagine most developers (and people who want these features) just switching to the beta and using that as their default browser, as most betas are fairly stable these days. That’s not solving the problem. It’s just moving it to another place.I’ve seen two comments on Twitter that really resonated with me about all this. The first, from psd, states:the problem with vendor prefixes is the namespace is used to target a browser vendor rather than disambiguating similar proposed featuresAnd strikes me as the current problem with vendor prefixes. Sure, the best features win out in the end (take the gradient syntax for example), but as it currently stands, the best feature ties rather too closely into the browser that implemented it. The solution would then be to drop the browser specific prefixes, and adopt feature based prefixes that, when they become popular, other browsers can implement and test out as well.The other comment on Twitter, was part of a conversation between Mike Mahemoff and Alex Russel and mentions the CSS Mixin proposal.The thought occurs to me that new features and proposals, when implemented in JavaScript, are never really a problem. This is, to a large extent, due to the presence of shims and polyfills, that abstract all the browser differences away with the inclusion of a single script tag (think the es5shim for example).Such solutions already exist for CSS, but they all involve either a build step (yuck!) or running all of your CSS through JavaScript first (yuck again!). I’m going to name this “The Dart Approach”, as it aims to solve the problems with CSS by forcing you to write something that isn’t CSS. The CSS mixin proposal would solve all of this in one step by allowing you to include a single CSS file (presumably from a CDN somewhere) that includes cross browser definitions for non-standard features. Then you just keep going as normal, and should anyone want to use a webkit only feature, they can go right ahead, safe in the knowledge that if Mozilla, for example, implement a similar feature (with their own prefix), it will just automatically work (as soon as the CDN is updated of course).Developers are lazy. Browser makers don’t want to remove features (or relegate them to beta only). As with Piracy, the solution is not to educate the pirates (or in this case, developers/designers/browser makers); the solution is to make it easier to be cross browser compatible than to not be cross browser compatible (in much the same way jQuery does). CSS mixins seems to be a good way to accomplish this.The only real problem now, is how quickly we can get it through the standards process (a problem in itself). via TiddlySpace [source]

TiddlyBookmarks Chrome Extension

over 7 years ago | Ben Gilles: Ben Gillies

I’ve created a Chrome Extension for tiddlybookmarks. It’s not in the Chrome Web Store yet so you’ll have to install it manually, but you can find it at chrome-extension.crx if you want it. via TiddlySpace [source]

If You Thought SOPA Was Bad, Just Wait Until You Meet ACTA - Forbes

over 7 years ago | Ben Gilles: Ben Gillies

When sites like Wikipedia and Reddit banded together for a major blackout January 18th, the impact was felt all the way to Washington D.C. The blackout had lawmakers running from the controversial anti-piracy legislation, SOPA and PIPA, which critics said threatened freedom of speech online.Unfortunately for free-speech advocates, censorship is still a serious threat.Few people have heard of ACTA, or the Anti-Counterfeiting Trade Agreement, but the provisions in the agreement are just as pernicious as anything we saw in SOPA. Worse, the agreement spans virtually all of the countries in the developed world, including all of the EU, the United States, Switzerland and Japan.If You Thought SOPA Was Bad, Just Wait Until You Meet ACTA - Forbes via TiddlySpace [source]

Playing chicken with cat.jpg

over 7 years ago | Ben Gilles: Ben Gillies

Humans are, well, human. The best way to avoid privacy breaches is not to formulate a detailed privacy policy; it’s to reduce your capabilities so that you’re unable to violate anyone’s privacy. To toss a metaphorical steering wheel out the window, in other words.Playing chicken with cat.jpgThe quote is basically the tl;dr. Makes a lot of sense though via TiddlySpace [source]

JS Security With Untrusted Code - macwright.org

over 7 years ago | Ben Gilles: Ben Gillies

Combining security and flexibility is a difficult task. This is just one tiny corner of the problem that I’ve experienced in depth, in an effort to make TileMill’s interactivity language more secure.At the start of the day we had a problem: maps have an idea of ‘formatters’ similar to CouchDB views, which are Javascript. And while the vast majority of formatters are generated by friendly tools like TileMill to take objects and return formatted strings, the technical definition of a formatter was extremely broad: it was any Javascript.This was a problem: any Javascript means evil Javascript, and, like any other company that provides embeds, like YouTube or Disqus, we don’t want to be a vector.JS Security With Untrusted Code - macwright.orgThis sounds familiar. I came to pretty much the same conclusions with TiddlySpace. The only difference being that TiddlyWiki markup is powerful enough on its own to not really require Mustache. via TiddlySpace [source]

2012 Predictions #1: TV

over 7 years ago | Ben Gilles: Ben Gillies

The recently unveiled series of smart TVs (most notably by Samsung) will turn into the Windows Mobile/Symbian of the TV world. via TiddlySpace [source]

TiddlySpace gains websocket support

over 7 years ago | Ben Gilles: Ben Gillies

Yay! Visit the frontpage to see live updates.It uses socket.io, so you can get started with:<script type="text/javascript" src="http://tiddlyspace.com:8081/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket = io.connect('http://tiddlyspace.com:8081'); socket.emit('subscribe', '*'); socket.on('tiddler', function (data) { // do something here }); </script> via TiddlySpace [source]

parislemon • Why I Hate Android

over 7 years ago | Ben Gilles: Ben Gillies

To complicate matters further, behind the scenes, Verizon and Google were arguing over Net Neutrality rules. Verizon was opposed, Google was in favor. Then a funny thing happened. Google started supporting Verizon’s viewpoint on the matter! If you’re looking for the first post where I’m really, truly, pissed off at Google, look no further. parislemon • Why I Hate AndroidSounds about right. via TiddlySpace [source]

Python-LDAP and Oracle Enterprise Linux

over 7 years ago | Ben Gilles: Ben Gillies

I’ve been working on interfacing with an LDAP server recently with the aim of doing lookups for full names and, since the install/getting started process was overly long/tedious, I thought I’d document what I did.Installing OpenLDAP (or: getting depencies)So the first thing I did was to type:$ sudo pip install -U python-ldap into my terminal. It turns out though that the version of OpenLDAP installed by default is too old for python-ldap (no surprises there then). This obviously means that you need to install OpenLDAP manually. In Oracle Enterprise Linux (at least, the version we’re using), it turns out that this requires the latest BerekelyDB as well.So, head on over to the download page (it’s an Oracle one so you need to sign up for an account before you can download anything and pick the version that most closely matches “Berkeley DB 5.3.15.NC.tar.gz without encryption (34M)” (the version number may have changed by the time you read this).Download it and put it somewhere sensible on your machine. Then run:$ tar -xvzf db-version.NC.tar.gz $ cd db-version/build_unix $ ../dist/configure $ make $ make install Then, download the latest OpenLDAP package and put it somewhere sensible. Then run:$ tar -xvzf openldap-version.tgz $ cd openldap-version We then need to ensure that configure can see our BerkeleyDB install by referencing the appropriate libraries and include directories. For me, I had to type out the following:$ env CPPFLAGS=-I/usr/BerkeleyDB.5.3/include LDFLAGS=-L/usr/local/BerkeleyDB.5.3/lib ./configure Assuming this goes ok, type:$ make depend $ make $ make install Installing Python-LDAPWe then need to download python-ldap and tweak the setup.cfg file to point it at our new OpenLDAP install. So type:$ pip install -U --no-install python-ldap $ cd build/python-ldap $ vim setup.cfg and change the library_dirs and include_dirs lines to point to the correct locations. For me, this was:library_dirs = /usr/local/lib include_dirs = /usr/local/include /usr/include/sasl Then type:$ sudo pip install -U . Finally, check it works by doing:$ python >>> import ldap >>> If you don’t get any errors, it should have worked.Using Python-LDAPThe next step is to connect and use it. Connecting is a 2-stage process. First, initialize the connection, then bind to it. My LDAP service doesn’t bother with SSL/TLS/etc, so for me, I type something like:>>> import ldap >>> con = ldap.initialize('ldap://host:port') >>> con.simple_bind_s('cn=username,o=(this will be provided by your ldap provider)', 'password') You can then perform searches with:>>> con.search_s(search base, ldap.SCOPE_SUBTREE, 'attr=value_to_search_for', [attrs, to, get, back]) That’s it.ReferencesThe following tabs are still open in my browser, and reference at least a part of the process: http://bit.ly/AaW1BW (This is the most useful site) http://bit.ly/xM9o2H http://bit.ly/zvQane http://bit.ly/Ac8DIc http://bit.ly/xzkFDK http://bit.ly/zOLZWv http://bit.ly/xgzXvc http://bit.ly/xyO4zp via TiddlySpace [source]

test ifttt.com to Tumblr

over 7 years ago | Ben Gilles: Ben Gillies

Testing automatic tiddler -> tumblr via http://ifttt.com via TiddlySpace [source]

tiddlybookmarks - a TiddlySpace

over 7 years ago | Ben Gilles: Ben Gillies

Welcome to tiddlybookmarks. A TiddlyWiki for saving and finding all your favourite bookmarks. It can also fill the void left by delicious. It’s free and it comes with a nice little rest api (see api choices)tiddlybookmarks - a TiddlySpaceI’ve just updated the Bookmarklet with some new features (Indeed, I’m writing this directly from it). You can now: Link in the old way Quote something (your tiddler will look something like this) Create a full post (for quick blogging) Save images (well, links to images at least via TiddlySpace [http://bit.ly/yAd6ET]


over 7 years ago | Ben Gilles: Ben Gillies

This space illustrates an autocomplete mode for linking to tiddlers in wikitext.It’s currently somewhat incomplete, though the basic autocomplete mode works well enough to illustrate the concept.It uses CodeMirror to provide a sensible text area that is able to keep track of cursor/line/etc positions and text input more precisely.See autolink for the demo, and main.js for the code.pmario — There was an issue with keyCode vs. charCode, which should now be fixed. Thanks. via TiddlySpace [http://bit.ly/w8qdaL]

Things that annoy me in Chrome #1

almost 8 years ago | Ben Gilles: Ben Gillies

Every time I type out a fraction of a URI into the address bar, Chrome auto-completes it: Chrome URI auto-complete If I then hit enter immediately, Chrome takes me to a different page: Chrome incorrect destination This is really annoying (obviously). Dear Chrome Devs: if you auto-complete with one URI, take me to that URI. Don’t take me to a different one.