<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Web programming to the rescue! A blog about Node.JS, JavaScript and Ruby on Rails!</description><title>blog.depold.com</title><generator>Tumblr (3.0; @sdepold)</generator><link>http://blog.depold.com/</link><item><title>In order to may Sequelize scalable, I wondered whether it would be a good idead to (optionally) provide two sets of MySQL connection credentials; one for read-only operations, and the other for write operations. The Sequelize can send its SELECT statements to the read-only connection and write operations to the read-write connection. This would allow applications with lots of read operations to scale out using MySQL slaves. What do you think?</title><description>&lt;p&gt;good idea :) can you open a ticket on github?&lt;/p&gt;</description><link>http://blog.depold.com/post/20055249261</link><guid>http://blog.depold.com/post/20055249261</guid><pubDate>Wed, 28 Mar 2012 09:57:16 +0200</pubDate></item><item><title>Hi, in Sequelize JS is it possible to refer to a model twice from another model? For example, if in Project I would like one User reference for the Manager, and another for the Lead Developer.  How would I do that in Sequelize?</title><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;Yes this is possible. You have to add the ‘as’-option to your definition. &lt;a href="http://sequelizejs.com/?active=has-one#has-one" target="_blank"&gt;Take a look at this part of the documentation.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hope that helps&lt;/p&gt;</description><link>http://blog.depold.com/post/15879490864</link><guid>http://blog.depold.com/post/15879490864</guid><pubDate>Sun, 15 Jan 2012 11:13:00 +0100</pubDate></item><item><title>Hi, I'm using the Dawanda jQuery RSS code to aggregate an RSS feed to a news website I'm building, and it runs great so long as I only run a single instance of the plugin. However, I'd like to run it twice, once for the story headline and once for the body content. This doesn't seem to work, since each new version of the code I link to overwrites the original version. Any suggestions? I'd appreciate it :)</title><description>&lt;p&gt;Hmm that should actually work … Mhh can you please open an issue on github and add a link to page where this problem can be replayed? Thanks a lot :)&lt;/p&gt;</description><link>http://blog.depold.com/post/15767649513</link><guid>http://blog.depold.com/post/15767649513</guid><pubDate>Fri, 13 Jan 2012 08:48:32 +0100</pubDate></item><item><title>Changes in Sequelize 1.3.0</title><description>&lt;p&gt;Sequelize v1.3.0 was just released and comes with some funky new features and some minor refactorings, which you should know about. Most important things are: Migrations, validations, cross-database support and new event-listener notation.&lt;!-- more --&gt;&lt;/p&gt;
&lt;h3&gt;Model#all is now a function and not a getter&lt;/h3&gt;
&lt;p&gt;In earlier versions it was possible to get all entries of a model with the following command:&lt;/p&gt;
&lt;blockquote&gt;User.all.success(function(users){})&lt;/blockquote&gt;
&lt;p&gt;This has changed and the &lt;em&gt;all&lt;/em&gt;-getter was refactored to be a function. This way it is more consistent to the rest of the API (.find(), .findAll(), etc.). So it&amp;#8217;s now:&lt;/p&gt;
&lt;blockquote&gt;User.all().success(function(users){})&lt;/blockquote&gt;
&lt;h3&gt;Use the new util module for node 0.6.x compatibility&lt;/h3&gt;
&lt;p&gt;All references to the &lt;em&gt;sys&lt;/em&gt;-module have been removed and replaced with the &lt;em&gt;util&lt;/em&gt;-module. To be honest, I have no idea when that module has been available, but it actually is in 0.4.12 and above. So sequelize is compatible to all versions of node having the &lt;em&gt;util&lt;/em&gt;-module.&lt;/p&gt;
&lt;h3&gt;QueryChainer can now run serially&lt;/h3&gt;
&lt;p&gt;The QueryChainer has been extended in order to run migrations serially. The basic idea is to pass an object, the to be called function&amp;#8217;s name and some parameters. After adding some items you can run them with chainer.runSerially(). You can find detailed information about this &lt;a href="http://sequelizejs.com/?active=serially#serially" target="_blank"&gt;in the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Association definitions are now chainable&lt;/h3&gt;
&lt;p&gt;Each association declaration now returns the ModelFactory. So it is possible to chain such declarations. Here is an example:&lt;/p&gt;
&lt;blockquote&gt;Person.hasOne(House).hasMany(Address)&lt;/blockquote&gt;
&lt;h3&gt;Validations&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/hiddentao" target="_blank"&gt;hiddentao&lt;/a&gt; has added validations to sequelize. This is pretty awesome and comes with a handy preset of known validations, but can be extended with custom validations as well. You can find detailed information about this &lt;a href="http://sequelizejs.com/?active=validations#validations" target="_blank"&gt;in the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;jQuery-like event listeners&lt;/h3&gt;
&lt;p&gt;Because the &lt;em&gt;.on(&amp;#8216;foo&amp;#8217;, function(){})&lt;/em&gt;-syntax really drove me nuts, I&amp;#8217;ve added some shorter notations. Inspired by jQuery (I know it has already changed in v1.7) you can now do the following:&lt;/p&gt;
&lt;blockquote&gt;Model.findAll().success(function(models) { /* foo */ }) Model.findAll().error(function(err) { /* bar */ })&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://sequelizejs.com/?active=asynchronicity#asynchronicity" target="_blank"&gt;There are also some aliases, which can be found here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please notice:&lt;/strong&gt; I will replace .on(&amp;#8216;failure&amp;#8217;) with .on(&amp;#8216;error&amp;#8217;) in future releases. This will be done, due to being more native in the node environment. Doing so will throw an error each time you don&amp;#8217;t listen for the &amp;#8216;error&amp;#8217;-event, what is actually pretty good!&lt;/p&gt;
&lt;h3&gt;aliasing for select queries&lt;/h3&gt;
&lt;p&gt;You can now rename attributes of a model for only a specific query. The following example gets a specific user and renames the original &lt;em&gt;name&lt;/em&gt;-attribute to &lt;em&gt;username&lt;/em&gt;. On database side this is a simple &lt;em&gt;SELECT name as username FROM table;&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;Model   .find({ where: &amp;#8216;id = 1&amp;#8217;, attributes: [&amp;#8216;id&amp;#8217;, [&amp;#8216;name&amp;#8217;, &amp;#8216;username&amp;#8217;]] })   .success(function(user) {     console.log(user.name) // undefined     console.log(user.username) // something   })&lt;/blockquote&gt;
&lt;h3&gt;cross-database support&lt;/h3&gt;
&lt;p&gt;Sequelize has been refactored to be open for other SQL dialects. Doing so I&amp;#8217;ve added examplary sqlite support. If you want to use it, make sure to install the sqlite3 package manually. &lt;a href="http://sequelizejs.com/?active=dialects#dialects" target="_blank"&gt;You can find more information about that here.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;migrations&lt;/h3&gt;
&lt;p&gt;Another new awesome feature is migration support. With this mechanism it is now possible to modify the database manually. This should of course &lt;strong&gt;not&lt;/strong&gt; be mixed with the &lt;em&gt;sync&lt;/em&gt;-function of sequelize. In order to execute migrations there is a new sequelize binary which you should look at. just run &lt;em&gt;node_modules/.bin/sequelize -h&lt;/em&gt; to see what&amp;#8217;s possible and make sure &lt;a href="http://localhost:3000/?active=migrations#migrations" target="_blank"&gt;to visit the documentation.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;ex-expresso-ed the project :D&lt;/h3&gt;
&lt;p&gt;I moved all tests to jasmine and removed all expresso-related things.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; I hope you will like it!&lt;/p&gt;</description><link>http://blog.depold.com/post/15283366633</link><guid>http://blog.depold.com/post/15283366633</guid><pubDate>Wed, 04 Jan 2012 06:48:00 +0100</pubDate><category>node.js</category><category>javascript</category><category>mysql</category><category>sqlite</category><category>ORM</category><category>sequelize</category></item><item><title>Greetings! Not sure if this is the best place to ask, but I've got a sequelize question for you:  is there a way to define something like a custom type, or perhaps add a constraint?  For example, say I would like to add a column called "gender".  I could make it a string, but then anything could be entered.  I could make a "genders" table and do "Person.hasOne(Gender)", which is a common DB method, but kind of klunky since you would then have a "genderid" column. Is there a better way? Thanks!</title><description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;For now it is not possible to add a special data type. But you could use the boolean datatype for the ‘sex’-attribute and add a gender method which evaluates the attribute and returns ‘male’ or ‘female’ as value. Take a look at &lt;a href="http://sequelizejs.com/?active=expanding-models#expanding-models" target="_blank"&gt;http://sequelizejs.com/?active=expanding-models#expanding-models&lt;/a&gt;  and &lt;a href="http://sequelizejs.com/?active=data-types#data-types" target="_blank"&gt;http://sequelizejs.com/?active=data-types#data-types&lt;/a&gt; for further information. What do you think? &lt;/p&gt;
&lt;p&gt;With best regards,&lt;/p&gt;
&lt;p&gt;Sascha&lt;/p&gt;</description><link>http://blog.depold.com/post/15171079649</link><guid>http://blog.depold.com/post/15171079649</guid><pubDate>Mon, 02 Jan 2012 07:38:11 +0100</pubDate></item><item><title>First of all a big approval to your project 'Sequelize', it's awesome!!! Of course i would like to use it, but i'm a newbie in js, node and express. :( So, did you know an example where Sequelize is used together with JMVC (JavascriptMVC framework)? I'm searching for a javascript-based client- and server-side application architecture. I hope you can help me. :)</title><description>&lt;p&gt;Hey there, you can use &lt;a href="http://expressjs.com/" target="_blank"&gt;express&lt;/a&gt; with sequelize. Express is actually only seperating the view from the controller. To get the model layer, I recommend to create a folder called “models”. Afterwards you can add model files (e.g. person.js) and &lt;a href="http://sequelizejs.com/?active=import#import" target="_blank"&gt;import&lt;/a&gt; it in the controller. &lt;/p&gt;
&lt;p&gt;Does this help?&lt;/p&gt;</description><link>http://blog.depold.com/post/14467512384</link><guid>http://blog.depold.com/post/14467512384</guid><pubDate>Mon, 19 Dec 2011 20:48:40 +0100</pubDate></item><item><title>Hello! I'm taking a look at your jquery-rss and I was wondering if I could get a little help in altering the {date} so that it just shows Month, day, and year. Thanks for any help you can provide!</title><description>&lt;p&gt;Hey there. The correct way is to take the already available date and transform it the way you need it:&lt;/p&gt;
&lt;blockquote&gt;$(“#rss-feeds”).rss(“http://feeds.feedburner.com/dawanda”, {&lt;br/&gt;  limit: 15,&lt;br/&gt;  template: ‘{date2}: {title}’,&lt;br/&gt;  tokens: {&lt;br/&gt;    date2: function(entry, tokens){&lt;br/&gt;      var date = new Date(Date.parse(tokens.date))&lt;br/&gt;      return [date.getFullYear(), date.getMonth() + 1, date.getDay()].join(“-“)&lt;br/&gt;    }&lt;br/&gt;  }&lt;br/&gt; })&lt;/blockquote&gt;
&lt;p&gt;Let me know if that helps :)&lt;/p&gt;</description><link>http://blog.depold.com/post/14467224414</link><guid>http://blog.depold.com/post/14467224414</guid><pubDate>Mon, 19 Dec 2011 20:41:57 +0100</pubDate></item><item><title>Changes in Sequelize 1.2.1</title><description>&lt;p&gt;This post summarizes changes in &lt;a href="http://sequelizejs.com" target="_blank"&gt;Sequelize&lt;/a&gt; v1.2.1. It is highly recommended to read this post due to some changes in default values and interfaces. There are also some minor, but very cool new features.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Global options for models&lt;/h3&gt;
&lt;p&gt;In Sequelize v1.2.1 I&amp;#8217;ve refactored the not so officially communicated possibility to define Sequelize-wide options, which are passed to the Models in multiple cases. I will explain the usage in the following, for now let&amp;#8217;s see how it was before and how it has changed:&lt;/p&gt;
&lt;blockquote&gt;var sequelize = new Sequelize(database, user, password, {&lt;br/&gt;   queryOptions: {},&lt;br/&gt;   defineOptions: {/*&lt;br/&gt;     here you can pass options, which you want to be defined for all models.&lt;br/&gt;     e.g. underscored: true, which will turn all model usages into underscore usage.&lt;br/&gt;     look into the model definition options for more information&lt;br/&gt;   */},&lt;br/&gt;   syncOptions: {/*&lt;br/&gt;     also not really senseful atm, but you could do this:&lt;br/&gt;     force: true &amp;#8212;&amp;gt; this will&lt;br/&gt;   */}&lt;br/&gt; }&lt;/blockquote&gt;
&lt;p&gt;The new API is this way:&lt;/p&gt;
&lt;blockquote&gt;var sequelize = new Sequelize(database, user, password, {&lt;br/&gt;   query: {},&lt;br/&gt;   define: {},&lt;br/&gt;   sync: {}&lt;br/&gt; }&lt;/blockquote&gt;
&lt;p&gt;And here is what you can do with it:&lt;/p&gt;
&lt;blockquote&gt;var sequelize = new Sequelize(database, user, password, {&lt;br/&gt;   queryOptions: { /* this has no further sense so far */ },&lt;br/&gt;   defineOptions: {/*&lt;br/&gt;     here you can pass options, which you want to be defined for all models.&lt;br/&gt;     e.g. underscored: true, which will turn all model usages into underscore usage.&lt;br/&gt;     look into the model definition options for more information&lt;br/&gt;   */},&lt;br/&gt;   syncOptions: {/*&lt;br/&gt;     also not really senseful atm, but you could do this:&lt;br/&gt;     force: true &amp;#8212;&amp;gt; this will always drop the table before creating it again, when calling sync&lt;br/&gt;   */}&lt;br/&gt; }&lt;/blockquote&gt;
&lt;p&gt;Here is more realistic use case:&lt;/p&gt;
&lt;blockquote&gt;// Instead of doing this&amp;#8230;&lt;br/&gt; var Person = sequelize.define(&amp;#8216;Person&amp;#8217;, {/*attributes*/}, { underscored: true })&lt;br/&gt; var Task = sequelize.define(&amp;#8216;Task&amp;#8217;, {/*attributes*/}, { underscored: true })&lt;br/&gt;&lt;br/&gt; // &amp;#8230;you can do this:&lt;br/&gt; var sequelize = new Sequelize(db, user, pw, { define: {underscored: true} })&lt;br/&gt; var Person = sequelize.define(&amp;#8216;Person&amp;#8217;, {/*attributes*/})&lt;br/&gt; var Task = sequelize.define(&amp;#8216;Task&amp;#8217;, {/*attributes*/})&lt;/blockquote&gt;
&lt;p&gt;Hope you like it :)&lt;/p&gt;
&lt;h3&gt;Definition of the charset&lt;/h3&gt;
&lt;p&gt;When setting up travis I found out that there were no way to define the charset of the tables. Well, you can now do this but I guess this is just the beginning. I basically needed this because travis is has UTF8 as default charset, which is OK but has broken all the tests. Please drop me a line if you are using UTF8 with sequelize, because I had no luck with it. I forced all tests to create latin1 charsets.&lt;/p&gt;
&lt;p&gt;If you to specify a non-default-charset, here is how you can do it:&lt;/p&gt;
&lt;blockquote&gt;// charset = latin1&lt;br/&gt; var sequelize = new Sequelize(db, user, pw, { define: {charset: &amp;#8216;latin1&amp;#8217;} })&lt;br/&gt; // charset = utf8; collate = utf8_general_ci; I guess this will break everything :D&lt;br/&gt; var sequelize = new Sequelize(db, user, pw, { define: {charset: &amp;#8216;latin1&amp;#8217;, collate: &amp;#8216;utf8_general_ci&amp;#8217;} }&lt;/blockquote&gt;
&lt;p&gt;Of course you can also define this for each model.&lt;/p&gt;
&lt;h3&gt;Definition of the MySQL engine&lt;/h3&gt;
&lt;p&gt;Someone requested InnoDB as default engine. Because I don&amp;#8217;t mind, I just did so. If you want to change it, feel free to do so:&lt;/p&gt;
&lt;blockquote&gt;var sequelize = new Sequelize(db, user, pw, { define: {engine: &amp;#8216;MYISAM&amp;#8217;} })&lt;/blockquote&gt;
&lt;p&gt;Feel free to drop me a line with your thoughts about this.&lt;/p&gt;
&lt;h3&gt;find / findAll with array usage&lt;/h3&gt;
&lt;p&gt;I just added the possibility to search in the database for multiple specific values:&lt;/p&gt;
&lt;blockquote&gt;Model.findAll({ where: { id: [1,2,3] } }).on(&amp;#8216;success&amp;#8217;, function(models) {&lt;br/&gt;   // models will contain all entries with id 1, 2 or 3&lt;br/&gt;   // the query will do this: SELECT * FROM Model WHERE id IN (1,2,3)&lt;br/&gt; })&lt;/blockquote&gt;
&lt;p&gt;And that&amp;#8217;s it :)&lt;/p&gt;</description><link>http://blog.depold.com/post/12319530694</link><guid>http://blog.depold.com/post/12319530694</guid><pubDate>Fri, 04 Nov 2011 08:32:00 +0100</pubDate><category>sequelize</category><category>javascript</category><category>js</category><category>node.js</category><category>orm</category><category>mysql</category></item><item><title>Theme Hospital on Mac OS X with Boxer 1.1.1</title><description>&lt;p&gt;Hey Mac gamers, about an year ago I wrote &lt;a href="http://blog.depold.com/post/2072111779/theme-hospital-on-mac-os-x" target="_blank"&gt;an article about&lt;/a&gt;, how to get Theme Hospital work on Mac OS X. Because that post is very old and things have changed, here is an updated how-to.&lt;/p&gt;
&lt;!-- more --&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://boxer.washboardabs.net/download/latest" target="_blank"&gt;Install Boxer.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Move the extracted file to the Applications folder.&lt;/li&gt;
&lt;li&gt;Get a copy of the game. I just used a copy (ISO file) of my old cd.&lt;/li&gt;
&lt;li&gt;Open Boxer.&lt;/li&gt;
&lt;li&gt;Choose &amp;#8220;Import a new game&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Throw the ISO file / disk drive from the Finder into the wizard, saying &amp;#8220;Drop your game here.&amp;#8221;&lt;/li&gt;
&lt;li&gt;Choose setup.exe (was default for me).&lt;/li&gt;
&lt;li&gt;Select a language.&lt;/li&gt;
&lt;li&gt;Set up your soundcard: Sound Effects =&amp;gt; Creative Labs Sound Blaster or 100% Compatible; Music =&amp;gt; Creative Labs Sound Blaster 16. (Choose automatic setup after each step).&lt;/li&gt;
&lt;li&gt;Install. Complete Installation.&lt;/li&gt;
&lt;li&gt;You will get asked, where you want to install the game. Just keep the default of C:\HOSPITAL.&lt;/li&gt;
&lt;li&gt;Wait until installation is done.&lt;/li&gt;
&lt;li&gt;Exit.&lt;/li&gt;
&lt;li&gt;You will now get thrown into a DOS environment. Boxer will ask you, if installation should be re-done or if everything works fine. Select: &amp;#8216;Finish importing&amp;#8217;. Now wait a bit until Boxer says &amp;#8220;Congratulations&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Launch the game.&lt;/li&gt;
&lt;li&gt;You will be in a DOS environment again. Boxer will ask you, which file you want to open. Choose hospital.exe.&lt;/li&gt;
&lt;li&gt;Also choose &amp;#8216;Launch every time&amp;#8217;.&lt;/li&gt;
&lt;li&gt;If you quit the game again and re-run it, Boxer will now automatically run the right file.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;I hope this works for all of you :) Have fun! (I also checked for save issues, but it worked without problems.)&lt;/p&gt;</description><link>http://blog.depold.com/post/11193755052</link><guid>http://blog.depold.com/post/11193755052</guid><pubDate>Sat, 08 Oct 2011 21:57:00 +0200</pubDate><category>Boxer</category><category>DOSBox</category><category>Games</category><category>Mac OS X</category></item><item><title>JSConf.EU 2011 - Summary of the 2nd Day</title><description>&lt;p&gt;And that&amp;#8217;s it. JSConf.EU 2011 is done. Great conf! Here is my summary about the second day&amp;#8217;s talks.&lt;/p&gt;
&lt;h3&gt;High density server side java script&lt;/h3&gt;
&lt;p&gt;The first talk of the day was by &lt;a href="http://twitter.com/tjanczuk" target="_blank"&gt;Tomasz Janczuk&lt;/a&gt; about &lt;a href="http://cloud.github.com/downloads/tjanczuk/denser/High%20density%20server%20side%20JavaScript.pdf" target="_blank"&gt;High density server side java script&lt;/a&gt;. The microsoft speaker was talking about possibilities to lower hosting costs for lightweight applications (actual node apps). He assumed costs of 5€ per month as current normal hosting costs. Way too much, according to him. Tomasz splitted the currently process based hosting approach into threads. Doing so, each application won&amp;#8217;t run in a single process but in process&amp;#8217; threads. Because the resulting price reduction was not enough, he was going on. An explaination followed, which outlined the hierarchy of V8 apps with it&amp;#8217;s V8::Isolates and it&amp;#8217;s V8::Contexts. Basically each application has an isolate and in that one specific context. However, Tomasz was splitting the Isolate into multiple contexts, running each an application. This was finally resulting in a demonstration of 1000 chat servers running all in a single thread&amp;#8217;s V8::Isolate. If I remember correctly the final price was about 0,30€ a month.&lt;/p&gt;
&lt;p&gt;Tomasz was using the tool Denser, which spawned the processes and started a web gui with some information about hardware usage and network traffic. &lt;a href="https://github.com/tjanczuk/denser" target="_blank"&gt;You can find it here.&lt;/a&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Buzz It For Real&amp;#160;! &amp;#8230; the tortuous road to Mobile HTML5 Apps&lt;/h3&gt;
&lt;p&gt;The next talk was about the ability of current browsers to support &amp;#8220;HTML5&amp;#8221;. &lt;a href="http://twitter.com/WebReflection" target="_blank"&gt;Andrea Giammarchi&lt;/a&gt; made clear, that there&amp;#8217;s neither a finished specification of it nor does current browser support it consistantly or completely. In order to get those features work, the Nokia guy pointed to polyfilling the missing stuff. To get those fallback solutions work, it&amp;#8217;s the first step to detect if the feature is already natively supported or not. He described the stoney way to detect the browser&amp;#8217;s compatibility to touch events and that there are browers which seems to support it but actually fail when using it. After that he also told about missing fallback solutions for canvas usage, due to missing flash support in many mobile devices. Limitations in LocalStorage followed: Only 2.5MB of space, no getter for current storage size, no timestamps in values. To get rid of those problems, he throwed Web SQL into the buzzword bingo jungle. 50MB space on iOS, unlimited space on Android, the possibility to increase the storage size dynamically: &amp;#8220;too fast, too easy … and ABANDONED by W3C!&amp;#8221; Conclusion of him: No HTML5 feature is really cross-browser compatible, but it&amp;#8217;s taking the right direction. &amp;#8220;Challenge accepted&amp;#8221;. &lt;a href="http://www.3site.eu/JSConfEU.pdf" target="_blank"&gt;Here are the slides of his talk.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Demand More From Your JavaScript Editor&lt;/h3&gt;
&lt;p&gt;After this awesome talk I headed to the upstairs area to learn about cool JS IDEs&amp;#8230; Well, let&amp;#8217;s just say that the speaker was &lt;a href="https://twitter.com/MaximMossienko" target="_blank"&gt;Maxim Mossienko&lt;/a&gt;, a JetBrains guy, talking about how super awesome the WebStorm application is. I left after some minutes&amp;#8230;&lt;/p&gt;
&lt;h3&gt;140byt.es&lt;/h3&gt;
&lt;p&gt;I just ran into another great talk of &lt;a href="https://twitter.com/jedschmidt" target="_blank"&gt;Jed Schmidt&lt;/a&gt; presenting the idea of golfing JS code to &lt;a href="http://140byt.es" target="_blank"&gt;140 bytes&lt;/a&gt;. I assumed, that the talk would be the very same as at Berlin.JS some weeks ago, but he ended up with some nice tricks to &lt;a href="https://github.com/jed/140bytes/wiki/Byte-saving-techniques" target="_blank"&gt;minimize code size&lt;/a&gt;. He also pointed to some other projects of him: &lt;a href="https://github.com/jed/kibi" target="_blank"&gt;kibi&lt;/a&gt; and &lt;a href="https://github.com/jed/namedrop" target="_blank"&gt;Namedrop&lt;/a&gt;. If you haven&amp;#8217;t heard Jed speaking you definitly should give it a try. Awesome speaker.&lt;/p&gt;
&lt;h3&gt;Magic Wand for surface generation&lt;/h3&gt;
&lt;p&gt;The next talk was by &lt;a href="http://twitter.com/sasklacz" target="_blank"&gt;Jakub Siemiątkowski&lt;/a&gt; about using &lt;a href="http://voxel.onaluf.org/" target="_blank"&gt;Voxels&lt;/a&gt; in JavaScript games. I had not assumed that much of maths details but the talk was ok. After explaining why Octotrees and Voxels are pretty useful, he showed a demo of what he built, crashed his browser and told about some improvents, he want to add in the future. Fun fact: Someone asked, why he is using firefox over Chrome or Safari. Answer: Because Firefox is the only browser which is not crashing initially. :D&lt;/p&gt;
&lt;h3&gt;Polyfilling the gaps&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/LeaVerou" target="_blank"&gt;Lea Verou&lt;/a&gt; followed up with an awesome talk about polyfilling. She defined rules for polyfilling correctly, meaning basically that one should only fix things as specified. So don&amp;#8217;t add additional functionalities, as polyfills are meant to be replaced by a native implementation without any changes on your code. &lt;a href="http://leaverou.me/polyfilling-the-gaps/" target="_blank"&gt;You can find the slides here.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;All Your Browsers Are Belong To Me&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;The next talk was about playing sound on multiple machines dynamically. &lt;a href="http://twitter.com/jcoglan" target="_blank"&gt;James Coglan&lt;/a&gt; asked the audience to open an URL in firefox. Doing so James was able to control the sound output of each client. The challenge was to synchronize the sound of all clients, while sending different data to each of them.&lt;/p&gt;
&lt;h3&gt;Community JS reloaded - how to rock as a movement&lt;/h3&gt;
&lt;p&gt;Afterwards &lt;a href="http://twitter.com/codepo8" target="_blank"&gt;Chris Heilmann&lt;/a&gt; entered the stage. The Mozilla guy complained about the current ongoing in the JS scene, resulting in some &amp;#8220;rock stars&amp;#8221;, which the masses follow. He wants more people &amp;#8220;to join the band&amp;#8221;. Furthermore he told about some things, that should be followed when joining. First thing: stop breaking other people&amp;#8217;s rules. So one should e.g. adapt the syntactical style when commiting to someone&amp;#8217;s project. He went on talking about, how to communicate to another person without criticism and with many other stuff. Finally he spent some time to talk about future Firefox features for debugging and styling. &lt;a href="http://icant.co.uk/talks/jsconfeu2011" target="_blank"&gt;You can find the slides of Chris here.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;dyn.js - 100% invokedynamic js impl&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/qmx" target="_blank"&gt;Douglas Campos&lt;/a&gt; then presented a Rhino-like JavaScript Runtime based on the JVM 7, which just introduced semi dynamic data types. First he told the audience how awesome the Rhino-devs were, when they developed the Runtime for Java 2, which he said is known for it&amp;#8217;s slowness. He went on, explaining how he is connecting the dynamic datatypes of JavaScript to the so called invokedynamics. The project actually handles ECMAScript 3 but gets updated to 6, once it&amp;#8217;s final. You can find &lt;a href="http://dynjs.org" target="_blank"&gt;the project here&lt;/a&gt; and &lt;a href="http://cdn.qmx.me/presentations/2011/jsconf.eu/index.html" target="_blank"&gt;the slides here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Why JavaScript is the only language that matters - the story behind jsmad&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/nddrylliog" target="_blank"&gt;Amos Wenger&lt;/a&gt; continued with the story behind the mp3 decoding service &lt;a href="http://jsmad.org" target="_blank"&gt;jsmad&lt;/a&gt;. He compared Flash to HTML5 and showed things, that Flash can handle for years and &amp;#8230; current browsers can&amp;#8217;t. He always made clear, that the specification is pretty awesome but the browsers are implementing it wrong or only partly. He also pointed to an issue with MP3: The patent holders have to be paid for ever single usage of MP3 on the web. &lt;a href="http://slides.pageforest.com/docs/jsmad/slides" target="_blank"&gt;You can find the slides here.&lt;/a&gt;. Awesome talk BTW.&lt;/p&gt;
&lt;h3&gt;Garbage collection in JavaScript&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/erikcorry" target="_blank"&gt;Erik Corry&lt;/a&gt; from Google was talking about garbage collection in JavaScript afterwards. He showed a demo of how V8 will doing GC.&lt;/p&gt;
&lt;h3&gt;Why Do We Need Two Eyes?&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/michalbe" target="_blank"&gt;Michal Budzyinski&lt;/a&gt; had an awesome talk about anaglyphs. He talked about the history of anaglyphs and how the things are actually working. The basic idea is to take two pictures with the same content but with a minimal change to the camera angle. A live programming session followed, in which he was converting images to canvas and manipulating them to extract red and blue from the one and red from the other image. He then combined both images to get an anaglyph version. Pretty cool :) &lt;a href="http://www.slideshare.net/michalbu/we-do-we-need-two-eyes-jsconfeu-october-2011" target="_blank"&gt;Slides here.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;An End to Negativity&lt;/h3&gt;
&lt;p&gt;The final talk was by &lt;a href="http://twitter.com/voodootikigod" target="_blank"&gt;Chris Williams&lt;/a&gt; himself, making clear, that many people in the programmer scene are hating way too much. He want&amp;#8217;s the see this stopping and also called for support for people, which are getting hated. He asked the audience what programming languages they are using and if they think, that it does matter if they are using PHP, Ruby or whatever else. A rhetorical question of cause. Funfact: Before the talk started, he wanted to call his wife + child to be part of the talk, but that failed. Some listener offers a dial with his mom, which he just facetimed and which was obviously confused :D&lt;/p&gt;</description><link>http://blog.depold.com/post/11132595623</link><guid>http://blog.depold.com/post/11132595623</guid><pubDate>Fri, 07 Oct 2011 07:55:00 +0200</pubDate><category>jsconfeu</category><category>js</category><category>javascript</category></item><item><title>JSConf.EU 2011 - Summary of the 1st Day</title><description>&lt;p&gt;Alright, &amp;#8230;, day 1 of the JSConf.EU is done and while other are trying to minimize the results of the after show party I&amp;#8217;ll try to summerize the (visited) talks:&lt;/p&gt;
&lt;h3&gt;Art&lt;/h3&gt;
&lt;p&gt;Not a talk at all but a very nice detail was the artist &lt;a href="http://www.annalenaschiller.com/" target="_blank"&gt;Anna Lena Schiller&lt;/a&gt;. The Fräulein (see the website) created an artwork for each of the talks in the downstairs area.&lt;/p&gt;
&lt;h3&gt;Plask&lt;/h3&gt;
&lt;p&gt;The first talk was by &lt;a href="http://twitter.com/deanmcnamee" target="_blank"&gt;Dean McNamee&lt;/a&gt; about the multimedia programming environment &lt;a href="http://www.plask.org/" target="_blank"&gt;Plask&lt;/a&gt;. It might be my inability to completely understand native american speaker or the complexity of the topic, but I don&amp;#8217;t exactly got the point :D As far as I&amp;#8217;ve understood, Plask is an environment which can be used in order to easily analyze multimedia and trigger stuff according to the resulting data. Dean presented some showcases including a visualization of music (via a nicely animated wave stream) and an experiment by a car manifacturer, who filled the inner of the car with gas and placed some LEDs into it. The LEDs were then colored according to the bass of the music. Check out the website for the video.&lt;/p&gt;
&lt;p&gt;One thing I&amp;#8217;ve noticed, is, that Anna Lena had a type :D It&amp;#8217;s &amp;#8220;Plask&amp;#8221; not &amp;#8220;Plusk&amp;#8221; ;)&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;jsPerf&lt;/h3&gt;
&lt;p&gt;The second talk in the upstairs area was about &lt;a href="http://jsperf.com/" target="_blank"&gt;jsPerf&lt;/a&gt; by &lt;a href="http://twitter.com/mathias" target="_blank"&gt;Mathias Bynens&lt;/a&gt;. He was showing the testing tool and known pitfalls. According to him, the most failures made are due to wrong testcase setups. For example it seems to be a common problem that testcases are modifying the test setup without resetting the data. He pointed out, that when your tests are resulting in very different values, the tests are most likely faulty. I will have to take a closer look at jsPerf in the near future.&lt;/p&gt;
&lt;h3&gt;Sweet sixteen, but where are the tools?&lt;/h3&gt;
&lt;p&gt;In the third talk &lt;a href="http://twitter.com/kuvos" target="_blank"&gt;Peter van der Zee&lt;/a&gt; complained about having so few tools and asked for more people to build tools. He also presented the proof-of-concept software Zeon.js which he announced to be open-source the same day. You can find the Github repositories (here &lt;a href="https://github.com/qfox/Zeon" target="_blank"&gt;Zeon&lt;/a&gt;) and (here &lt;a href="https://github.com/qfox/ZeParser" target="_blank"&gt;ZeParser&lt;/a&gt;). Zeon is by now possible to reflect the properties of an object, can detect errors thrown by a function and can also find dead code. It has also a profiling mode, in which the code get&amp;#8217;s highlighted according to the currently active functions. He named it a heatmap for code :)&lt;/p&gt;
&lt;h3&gt;JavaScript JITs&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/dmandelin" target="_blank"&gt;David Mandelin&lt;/a&gt; and &lt;a href="https://twitter.com/iamdvander" target="_blank"&gt;David Anderson&lt;/a&gt; dived into the world of JavaScript JITs afterwards. They talked about typed and untyped JITs and how JavaScript is now only 2-3 times slower than C. Awesome! The explaination have been including the way, JavaScript is turned into Assembler and how it is optimized using code rewriting and dynamic mapping. This talk really reminds me of my studies :D&lt;/p&gt;
&lt;h3&gt;DOM implementation techniques&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/marijnjh" target="_blank"&gt;Marijn Haverbeke&lt;/a&gt; talked about the DOM. He described problems one should avoid while developing frontend stuff. According to that you should avoid reading the DOM as much as you can while you are manipulating it. Doing so will mark the DOM nodes as dirty without re-rendering it at all. So you should first manipulate it as much as possible and the read properties of it. Another thing I&amp;#8217;ve learned, was, that DOM implementations are trying to index the nodes. They differ between ID usage, class usage, tag name usage and more semantic usage, which are completely unindexed. So selecting nodes via a class will be much faster than using a semantic selector like &amp;#8220;:hover&amp;#8221;.&lt;/p&gt;
&lt;h3&gt;HTML5 Game Engine development&lt;/h3&gt;
&lt;p&gt;The talk I was looking forward the most, was this one by &lt;a href="http://twitter.com/pbakaus" target="_blank"&gt;Paul Bakaus&lt;/a&gt;. He reviewed the last two years looking back at Dextrose AG and the lessons learned since then. He announced, that Zynga is open-sourcing four of their libraries, two of them just this day. First thing was &lt;a href="https://github.com/zynga/viewporter" target="_blank"&gt;ViewPorter&lt;/a&gt;, which will maximize the Viewport on mobile devices and take care of things like positioning of elements at [Bottom: 0, Left: 0]. Second one was &lt;a href="https://github.com/zynga/scroller" target="_blank"&gt;Scroller&lt;/a&gt;, which unifies swiping guesteres and mouse dragging in order to move the viewport correctly over an clipped content. The library also allows sticking to the viewport to specific element borders.&lt;/p&gt;
&lt;p&gt;Besides that, he says, that he used external CSS Animations and Transitions in order to get performant graphics calculation. This is no longer needed. Inline CSS will perform exactly as fast as external CSS is doing. Furthermore the Canvas is sometimes no more slower than DOM usage. This has totally changed in the last two years.&lt;/p&gt;
&lt;p&gt;Awesome talk!&lt;/p&gt;
&lt;h3&gt;Web Intents&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/paul_kinlan" target="_blank"&gt;Paul Kinlin&lt;/a&gt; and &lt;a href="http://twitter.com/jankleinert" target="_blank"&gt;Jan Kleinert&lt;/a&gt; from Google followed with some pretty nice and interesting talk. They first outlined, that it is a pain in the ass to edit an existing photo in the web and then send it to multiple services. They explained, that there should be better inter-application communication and presented &lt;a href="http://webintents.org/" target="_blank"&gt;Web Intents&lt;/a&gt;. Web Intents is basically based on additional meta data of the websites. On the server side you can define routes for specific verbs. The client then calls those verbs via a javascript library and cann send and receive data from the server. They showed an example in which they first took a picture from a website, then manipulated it with a web editing tool and afterwards saved it on another webservice.&lt;/p&gt;
&lt;p&gt;Pretty interesting!&lt;/p&gt;
&lt;h3&gt;Intro to Kendo UI: The JS Developer Sword&lt;/h3&gt;
&lt;p&gt;Following this very exciting talks, I did the failure to visit the &lt;a href="http://www.kendoui.com/" target="_blank"&gt;Kendo UI&lt;/a&gt; talk by &lt;a href="http://twitter.com/alex_gyoshev" target="_blank"&gt;Alexander Gyoshev&lt;/a&gt;. Neither the speaker was very interesting nor the topic was well presented. After the talk I really had no clue why to use the framework or what is possible with it&amp;#8230; IMHO it is yet another UI Framework based on jQuery. Sorry folks.&lt;/p&gt;
&lt;h3&gt;Messing with JavaScript and the DOM to measure network performance characteristics&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/bluesmoon" target="_blank"&gt;Phillip Tellis&lt;/a&gt; did a great job by telling us how to measure the network performance of a client via JavaScript. He explained parts of the communication between client and server and pointed to some problems you have when measuring the network. He explained basics of the &lt;a href="http://yahoo.github.com/boomerang/doc/" target="_blank"&gt;Boomerang&lt;/a&gt; project and furthermore went into details about port profiling of the clients network. Very very cool!&lt;/p&gt;
&lt;h3&gt;Beyond JavaScript&lt;/h3&gt;
&lt;p&gt;In this mindblowing talk &lt;a href="http://twitter.com/jakobmattsson" target="_blank"&gt;Jakob Mattsson&lt;/a&gt; talked about the not so dynamic programming languages out there and told the listeners that it would be a very fail to design programming languages with the question &amp;#8220;What can it do?&amp;#8221; in mind. You should much more thing about &amp;#8220;What can&amp;#8217;t be done with it?&amp;#8221;. Problem with the so called dynamic languages today is, that you can&amp;#8217;t change keywords or rewrite the syntax the way you want. So you are forced to use the function keyword and to accept the or-operator as is. He also pointed to an upcoming open-source project by him or his Company Burt.&lt;/p&gt;
&lt;h3&gt;Emscripten&lt;/h3&gt;
&lt;p&gt;The last scheduled talk at this day was by &lt;a href="https://twitter.com/#!/aazakai" target="_blank"&gt;Alon Zakai&lt;/a&gt; about &lt;a href="http://emscripten.org/" target="_blank"&gt;Emscripten&lt;/a&gt;. The Mozilla guy presented a project which transforms LLVM Bytecode into JavaScript code. Doing so he was able to create a bunch of demos available &lt;a href="https://github.com/kripken/emscripten/wiki" target="_blank"&gt;here&lt;/a&gt;. One of them (which was also very well presented) is the Python environment, which actually handles datatypes correctly and is behaving most likely as Python would. The guy also talked about common pitfalls, e.g. manually deletion of objects and minor problems with javascript runtimes.&lt;/p&gt;
&lt;h3&gt;JSLOL&lt;/h3&gt;
&lt;p&gt;I was almost on my way to the train when Malte Ubl stopped everyone and announced a further talk. Entering the stage was Mr. JS himself, talking about the current state of ECMAScript 6. Brendan talked about the triangle operator doing inheritance between classes (smth like Class &amp;lt;| Base). Furthermore he said, that this is a somehow strange syntax and that they were thinking about the monocle-mustache operator (smth like Class.{a:1, b:2}). In addition he presented default values for functions and much more. He finally announced the &lt;a href="http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts" target="_blank"&gt;official draft of the specification&lt;/a&gt;. Someone btw. requested the .js-TLD. Brendan will talk about that with ES6 commitee. I finally got this &lt;a href="http://repl.it/" target="_blank"&gt;link&lt;/a&gt;, where it is possible to test ES6 in the web.&lt;/p&gt;
&lt;h3&gt;Talk-Listing&lt;/h3&gt;
&lt;p&gt;&lt;a target="_blank" href="https://gist.github.com/1256066"&gt;This gist is listing all the related resources of the talks.&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.depold.com/post/10931098575</link><guid>http://blog.depold.com/post/10931098575</guid><pubDate>Sun, 02 Oct 2011 14:25:00 +0200</pubDate><category>js</category><category>javascript</category><category>jsconfeu</category></item><item><title>Hey, I just started using Sequelize and was wondering if you support inserting BLOB data? If not, can you recommend some solution? Thanks!</title><description>&lt;p&gt;Hmm you are right, that’s missing :) Can you please open a tickket on github ? For the moment i recommend using a text column and manually converting the data.&lt;/p&gt;

&lt;p&gt;You can also send me a pull request if you want to. if so, don’t forget the tests ;)&lt;/p&gt;</description><link>http://blog.depold.com/post/10922942790</link><guid>http://blog.depold.com/post/10922942790</guid><pubDate>Sun, 02 Oct 2011 11:09:01 +0200</pubDate></item><item><title>JSConf.EU</title><description>&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This weekend I will pause writing my master thesis (about &lt;a target="_blank" href="http://www.sequelizejs.com"&gt;sequelize&lt;/a&gt; btw.) and attending the javascript conference &lt;a target="_blank" href="http://jsconf.eu"&gt;JSConf.EU&lt;/a&gt; for the first time. Doing so, I will hopefully get a lot of inspiration for future work and projects. I will every once and while post about some topics, not sure if in the blog or via &lt;a target="_blank" href="http://twitter.com/sdepold"&gt;twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is my schedule for the next two days:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Day 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Breakfast 2011-10-01&amp;#160;08:30&lt;/p&gt;
&lt;p&gt;Opening 2011-10-01&amp;#160;09:15&lt;/p&gt;
&lt;p&gt;Plask 2011-10-01&amp;#160;09:30&lt;/p&gt;
&lt;p&gt;jsPerf (upstairs) 2011-10-01&amp;#160;10:30&lt;/p&gt;
&lt;p&gt;Kaffeepause 2011-10-01&amp;#160;11:00&lt;/p&gt;
&lt;p&gt;jsTools 2011-10-01&amp;#160;11:15&lt;/p&gt;
&lt;p&gt;Mittag 2011-10-01&amp;#160;12:45&lt;/p&gt;
&lt;p&gt;JITs 2011-10-01&amp;#160;11:45&lt;/p&gt;
&lt;p&gt;DOM implementation techniques 2011-10-01&amp;#160;12:15&lt;/p&gt;
&lt;p&gt;HTML5 Game Engine development 2011-10-01&amp;#160;13:45&lt;/p&gt;
&lt;p&gt;Web Intents 2011-10-01&amp;#160;14:30&lt;/p&gt;
&lt;p&gt;Kaffee 2011-10-01&amp;#160;15:15&lt;/p&gt;
&lt;p&gt;Kendo UI (upstairs) 2011-10-01&amp;#160;15:30&lt;/p&gt;
&lt;p&gt;Network performance (upstairs) 2011-10-01&amp;#160;16:00&lt;/p&gt;
&lt;p&gt;Beyond JavaScript (upstairs) 2011-10-01&amp;#160;16:30&lt;/p&gt;
&lt;p&gt;Pause 2011-10-01&amp;#160;17:00&lt;/p&gt;
&lt;p&gt;Emscripten 2011-10-01&amp;#160;17:15&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Frühstück 2011-10-02&amp;#160;09:00&lt;/p&gt;
&lt;p&gt;Opening 2011-10-02&amp;#160;09:45&lt;/p&gt;
&lt;p&gt;SSJS 2011-10-02&amp;#160;10:00&lt;/p&gt;
&lt;p&gt;Mobile HTML5 App 2011-10-02&amp;#160;10:45&lt;/p&gt;
&lt;p&gt;Kaffee 2011-10-02&amp;#160;11:30&lt;/p&gt;
&lt;p&gt;JS Editors (upstairs) 2011-10-02&amp;#160;11:45&lt;/p&gt;
&lt;p&gt;surface generation 2011-10-02&amp;#160;12:15&lt;/p&gt;
&lt;p&gt;polyfilling the gaps 2011-10-02&amp;#160;12:45&lt;/p&gt;
&lt;p&gt;Mittag 2011-10-02&amp;#160;13:15&lt;/p&gt;
&lt;p&gt;all your browsers are belong to me 2011-10-02&amp;#160;14:15&lt;/p&gt;
&lt;p&gt;JS Compilers (upstairs) 2011-10-02&amp;#160;14:45&lt;/p&gt;
&lt;p&gt;node modules mit V8 (upstairs) 2011-10-02&amp;#160;15:15&lt;/p&gt;
&lt;p&gt;Kaffee 2011-10-02&amp;#160;15:45&lt;/p&gt;
&lt;p&gt;jsmad 2011-10-02&amp;#160;16:00&lt;/p&gt;
&lt;p&gt;garbage collection 2011-10-02&amp;#160;16:30&lt;/p&gt;
&lt;p&gt;Pause 2011-10-02&amp;#160;17:00&lt;/p&gt;
&lt;p&gt;why do we need two eyes? 2011-10-02&amp;#160;17:15&lt;/p&gt;
&lt;p&gt;end to negativity 2011-10-02&amp;#160;18:00&lt;/p&gt;
&lt;p&gt;closing 2011-10-02&amp;#160;18:45&lt;/p&gt;
&lt;p&gt;gruppen foto 2011-10-02&amp;#160;19:00&lt;/p&gt;</description><link>http://blog.depold.com/post/10883078011</link><guid>http://blog.depold.com/post/10883078011</guid><pubDate>Sat, 01 Oct 2011 11:30:00 +0200</pubDate><category>jsconf</category><category>js</category><category>javascript</category></item><item><title>Changes in Sequelize 1.0.0</title><description>&lt;p&gt;With Sequelize 1.0.0 the project was completly rewritten and had some major api changes, which will break your app, if you don’t fix ‘em. This post summarizes all changes and points out improvements and new features.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h3&gt;Logging&lt;/h3&gt;
&lt;p&gt;Disable logging of Sequelize is not longer realized via the options &lt;em&gt;disableLogging:true&lt;/em&gt;, but with &lt;em&gt;logging:false&lt;/em&gt;. So you now have to do this:&lt;/p&gt;
&lt;blockquote&gt;new Sequelize(config.database, config.username, config.password, { &lt;br/&gt;  logging: false&lt;br/&gt;})&lt;/blockquote&gt;
&lt;h3&gt;Chaining&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Sequelize.chainQueries&lt;/em&gt; was replaced by &lt;em&gt;Sequelize.Utils.QueryChainer&lt;/em&gt;. The API for that is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;new Sequelize.Utils.QueryChainer&lt;br/&gt; .add(person.save())&lt;br/&gt; .add(pet.save())&lt;br/&gt; .run()&lt;br/&gt;.on(‘success’, function() {         // done :)       })&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Instantiation&lt;/h3&gt;
&lt;p&gt;The instantiation of models has changed:&lt;/p&gt;
&lt;blockquote&gt;// Before&lt;br/&gt; new Model({attr1: 1, attr2: 2}).save()&lt;br/&gt;&lt;br/&gt; //Now&lt;br/&gt; Model.build({&amp;#8230;}).save()&lt;br/&gt; // to first create the instance and save it afterwards or&amp;#8230;&lt;br/&gt;&lt;br/&gt;Model.create({&amp;#8230;})&lt;br/&gt; // to create it and directly write it to the database&lt;/blockquote&gt;
&lt;h3&gt;Listeners&lt;/h3&gt;
&lt;p&gt;Sequelize changed from callback-driven to listener-driven architecture. So you now have to do&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Model.create({a:1})&lt;br/&gt;.on(‘success’, function(model){})&lt;br/&gt;.on(‘failure’, function(err){})&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;instead of&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;new Model({a:1}).save(function(err, model) {})&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Syncing&lt;/h3&gt;
&lt;p&gt;Syncing sequelize is the same way then before, but got some convenience:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;//Before&lt;br/&gt; Sequelize.drop(function(){&lt;br/&gt;  Sequelize.sync(function(){       })&lt;br/&gt; })&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;//Now&lt;br/&gt; Sequelize.sync({force: true}).on(&amp;#8216;success&amp;#8217;, function(){ }) &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;&lt;span&gt;New stuff / Other changes&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Added a count method to Model:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Model.count().on(‘success’, function(num) {})&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Added option passing everywhere:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Model.count({where: {attr1: 1}})&lt;br/&gt;Model.find({where: {attr1: 1}})&lt;br/&gt;Model.findAll({where: {attr1: 1}})&lt;br/&gt;//&amp;#8230;.&lt;br/&gt;//&lt;a href="http://www.sequelizejs.com/?active=find-objects#find-objects" target="_blank"&gt;Take a look at this for further information.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Added more options for Model definition: unique, primaryKey, autoIncrement. &lt;a href="http://www.sequelizejs.com/?active=usage#usage" target="_blank"&gt;Take a look at this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some sequelize options have changed: &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Don&amp;#8217;t add timestamp attributes: timestamps: false&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t delete things from the database: paranoid: true&lt;/li&gt;
&lt;li&gt;Use underscore names instead of camelcase: underscore: true&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t pluralize table names: freezeTableName: true&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;File import changed. The imported file should only return a single function. Take a look at the usage section on the Sequelize page.&lt;/p&gt;
&lt;p&gt;The association API has changed. Please take a deeper look at &lt;a href="http://www.sequelizejs.com/?active=associations#associations" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There might be more stuff, but I dunno them at the moment :D Have fun!&lt;/p&gt;
&lt;p&gt;And btw. &amp;#8230; expect more stuff in the future. I will write about sequelize in my master thesis :)&lt;/p&gt;</description><link>http://blog.depold.com/post/5936116582</link><guid>http://blog.depold.com/post/5936116582</guid><pubDate>Sat, 28 May 2011 19:55:00 +0200</pubDate></item><item><title>[sdepold] Sharing Rubymine preferences via Dropbox</title><description>&lt;p&gt;&lt;a href="http://devblog.dawanda.com/post/5827128711" target="_blank"&gt;devanda&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3&gt;Motivation&lt;/h3&gt;
&lt;p&gt;If you are using Rubymine (like ~50% of the DaWanda devs is), you might have got the idea of sharing your preferences with multiple computers. Because most of us are coding on Apple hardware, this description is for MacOSX, but will work similarly on linux as well.&lt;/p&gt;
&lt;h3&gt;The naive way&lt;/h3&gt;
&lt;p&gt;When thinking about sharing stuff on multiple devices, you will stumble across Dropbox. The first and obvious way is moving your preferences folder into it and symlinking it into the origin place:&lt;/p&gt;
&lt;blockquote&gt;mv ~/Library/Preferences/RubyMine31 ~/Dropbox/System/Preferences/&lt;br/&gt;ln -s ~/Dropbox/System/Preferences/RubyMine31 ~/Library/Preferences/RubyMine31&lt;/blockquote&gt;
&lt;p&gt;When starting RubyMine for the next time, it will complain about a missing preferences folder and bootup some strange environment in which you can work almost normally but have no shortcuts etc. The very next thing I tried was symlink without the “-s” flag. This will fail due to MacOSX’ missing support of hardlinks for directories.&lt;/p&gt;
&lt;h3&gt;Solution&lt;/h3&gt;
&lt;p&gt;After googling for a while, I found &lt;a href="http://stackoverflow.com/questions/1432540/creating-directory-hard-links-in-macos-x/1547720#1547720" target="_blank"&gt;this discussion on StackOverflow&lt;/a&gt;. It explains how to compile a binary for creating directory symlinks. So copy the following snippet and paste it into  your favorite place for binaries and shell scripts (because I like sharing custom binaries via Dropbox it is ~/Dropbox/System/Bin/hlink.c for me).&lt;/p&gt;
&lt;blockquote&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br/&gt; #include &amp;lt;stdio.h&amp;gt;&lt;br/&gt;&lt;br/&gt; int main(int argc, char* argv[]) {&lt;br/&gt;   if (argc&amp;#160;!= 3) {&lt;br/&gt;     fprintf(stderr,”Use: hlink &amp;lt;src_dir&amp;gt; &amp;lt;target_dir&amp;gt;\n”);&lt;br/&gt;     return 1;&lt;br/&gt;   }&lt;br/&gt;   int ret = link(argv[1],argv[2]);&lt;br/&gt;   if (ret&amp;#160;!= 0)&lt;br/&gt;     perror(“link”);&lt;br/&gt;  return ret;&lt;br/&gt;}&lt;/blockquote&gt;
&lt;p&gt;Afterwards “cd” into that specific folder and do this:&lt;/p&gt;
&lt;blockquote&gt;cd ~/Dropbox/System/Bin&lt;br/&gt; gcc hlink.c -o hlink&lt;/blockquote&gt;
&lt;p&gt;And finally:&lt;/p&gt;
&lt;blockquote&gt;mv ~/Library/Preferences/RubyMine31 ~/Dropbox/System/Preferences/&lt;br/&gt; ./hlink ~/Dropbox/System/Preferences/RubyMine31 ~/Library/Preferences/RubyMine31&lt;/blockquote&gt;
&lt;p&gt;When running RubyMine for the next time, everything should be just as before!&lt;/p&gt;
&lt;p&gt;Have fun,&lt;br/&gt;sdepold&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://blog.depold.com/post/5861685235</link><guid>http://blog.depold.com/post/5861685235</guid><pubDate>Thu, 26 May 2011 11:55:35 +0200</pubDate></item><item><title>svalts:

Spiderpig - by Thong Le
(Via: herochan)

</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_llfnozllmT1qd9jlto1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://svalts.tumblr.com/post/5632923551/spiderpig" target="_blank"&gt;svalts&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Spiderpig&lt;/strong&gt;&lt;/em&gt; - by &lt;a href="http://darklord381.deviantart.com/gallery/" target="_blank"&gt;Thong Le&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Via:&lt;span class="tumblr_blog"&gt; &lt;/span&gt;&lt;a href="http://herochan.com/post/5632784807/spiderpig" target="_blank"&gt;herochan&lt;/a&gt;)&lt;/p&gt;

&lt;/blockquote&gt;</description><link>http://blog.depold.com/post/5861674926</link><guid>http://blog.depold.com/post/5861674926</guid><pubDate>Thu, 26 May 2011 11:54:42 +0200</pubDate></item><item><title>I'm looking at "Connecting Up MongoDB" at this page http://dailyjs.com/2010/11/08/node-tutorial-2/&lt;br /&gt;&#13;
&lt;br /&gt;&#13;
I've looked thru the examples at sequelizejs.com but couldn't find a similar example.&lt;br /&gt;&#13;
&lt;br /&gt;&#13;
Would it be possible for you to add an example of how to define the data model and relations in models.js for use in Express?&lt;br /&gt;&#13;
&lt;br /&gt;&#13;
Thank you!</title><description>&lt;p&gt;hey there, thanks tumblr i just got your message now :D I also have no clue when you asked me. If I understand right, you want to define your models in an extra file?&lt;/p&gt;</description><link>http://blog.depold.com/post/5184440434</link><guid>http://blog.depold.com/post/5184440434</guid><pubDate>Wed, 04 May 2011 08:53:00 +0200</pubDate></item><item><title>Working with ssh keys</title><description>&lt;p&gt;This is mostly a reminder for myself. But maybe you are also interested in this :)&lt;/p&gt;
&lt;p&gt;So this is the way you can access a server via ssh without getting asked about passwords:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. Create a SSH key. You might want to take a look at &lt;a target="_blank" href="http://help.github.com/mac-set-up-git/"&gt;this&lt;/a&gt; to get one.&lt;/p&gt;
&lt;p&gt;2. Copy the result of the following command: cat .ssh/id_rsa.pub&lt;/p&gt;
&lt;p&gt;3. Connect to the server: ssh user@server.tld + Enter password&lt;/p&gt;
&lt;p&gt;4. Create the .ssh folder if not yet done: mkdir ~/.ssh&lt;/p&gt;
&lt;p&gt;5. pico ~/.ssh/authorized_keys =&amp;gt; Paste the clipboard.&lt;/p&gt;
&lt;p&gt;6. exit&lt;/p&gt;
&lt;p&gt;7. ssh user@server.tld =&amp;gt; You should now be connected without entering a password!&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;HF&lt;/p&gt;</description><link>http://blog.depold.com/post/5136411036</link><guid>http://blog.depold.com/post/5136411036</guid><pubDate>Mon, 02 May 2011 20:02:54 +0200</pubDate></item><item><title>Is there anyone out who has ever got senseful things via the app...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lgr2ccTZvL1qbce7po1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Is there anyone out who has ever got senseful things via the app stores genius function? I’ve just fucking installed nova2 so … wtf? because of trenches???&lt;/p&gt;</description><link>http://blog.depold.com/post/3341458376</link><guid>http://blog.depold.com/post/3341458376</guid><pubDate>Thu, 17 Feb 2011 08:04:50 +0100</pubDate></item><item><title>That’s the way the internet works! via...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lf9nq1XgNR1qbce7po1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;That’s the way the internet works! via &lt;a href="http://www.lowbird.com/data/images/2011/01/hayungs-website.jpg" target="_blank"&gt;http://www.lowbird.com/data/images/2011/01/hayungs-website.jpg&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.depold.com/post/2825141642</link><guid>http://blog.depold.com/post/2825141642</guid><pubDate>Wed, 19 Jan 2011 11:56:00 +0100</pubDate></item></channel></rss>

