<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Steve's Blog</title>
    <description>Vidyano, .NET, HTML5/JavaScript, Japanese, ...</description>
    <link>https://xiu.shoeke.com/
    <atom:link href="https://xiu.shoeke.com/feed/" rel="self" type="application/rss+xml"></atom:link>
    <pubdate>Tue, 10 Jun 2025 21:49:07 +0200</pubdate>
    <lastbuilddate>Tue, 10 Jun 2025 21:49:07 +0200</lastbuilddate>
    <item>
      <title>Logos</title>
      <description>&lt;p&gt;Just in case I ever need it in the future.
Made my Logo’s folder public so that I can easily get some logo’s when I need them in the future.&lt;/p&gt;

&lt;p&gt;The files are available as .png (16x16, 32x32, 48x48, 64x64 and 256x256) and also as an .ico with all the different sizes.&lt;/p&gt;

&lt;p&gt;Currently:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;JavaScript &lt;a href="https://github.com/voodootikigod/logo.js"&gt;https://github.com/voodootikigod/logo.js&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;HTML5 &lt;a href="http://www.w3.org/html/logo/"&gt;http://www.w3.org/html/logo/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Publicly shared: &lt;a href="http://1drv.ms/1qTgl4L"&gt;Logos&lt;/a&gt;&lt;/p&gt;
</description>
      <pubdate>Tue, 18 Nov 2014 22:46:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2014/11/18/dogecoin/
      <guid ispermalink="true">https://xiu.shoeke.com/2014/11/18/dogecoin/</guid>
      <category>Future-me</category><category>Logo</category>
    </item><item>
      <title>Dogecoin</title>
      <description>&lt;p&gt;I’ve been using/buying Bitcoins for a long time, bought my first when they were only € 2/BTC.&lt;/p&gt;

&lt;p&gt;Now with the &lt;a href="https://www.braintreepayments.com/blog/goodbye-passwords-one-touch-hello-bitcoin"&gt;announcement&lt;/a&gt; of Paypal supporting Bitcoins I checked the prices again.
Finding a place to buy them isn’t really hard any more, I can even buy them directly using my debit card, so I bought 1 BTC from &lt;a href="https://litebit.eu/registration/nl/32748M8myk/"&gt;LiteBit.eu&lt;/a&gt;.
The site also offers other digital currencies and one that stood out was Dogecoin, from the official &lt;a href="http://dogecoin.com/"&gt;website&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Dogecoin?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dogecoin is a decentralized, peer-to-peer digital currency that enables you to easily send money online. Think of it as “the internet currency.”&lt;/p&gt;

&lt;p&gt;&lt;a href="http://dogecoin.com/getting-started"&gt;Get Started Now&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s with Dogecoin and the dog?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“Doge” is our fun, friendly mascot! The Shiba Inu is a Japanese breed of dog that was popularized as an online meme and it represents Dogecoin.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://knowyourmeme.com/memes/doge"&gt;Learn more about Doge&lt;/a&gt; - &lt;a href="http://en.wikipedia.org/wiki/Shiba_Inu"&gt;Shiba Inu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://yourdogadvisor.com/shiba-inu/"&gt;11 Things You Should Know About the Shiba Inu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/dogecoin-300.png" alt="Dogecoin" /&gt;&lt;/p&gt;
</description>
      <pubdate>Tue, 09 Sep 2014 22:15:00 +0200</pubdate>
      <link>https://xiu.shoeke.com/2014/09/09/dogecoin/
      <guid ispermalink="true">https://xiu.shoeke.com/2014/09/09/dogecoin/</guid>
      <category>Digital Currencies</category><category>Meme</category>
    </item><item>
      <title>New hosting</title>
      <description>&lt;p&gt;After 9 years of using WordPress, I’ve finally decided to use another hosting. This time not just a new host/server but actually another technology to host my blog.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://pages.github.com/" target="_blank"&gt;Github Pages&lt;/a&gt; allows you to host a static pages based blog. You have complete &lt;a href="https://github.com/stevehansen/stevehansen.github.io"&gt;version control/history&lt;/a&gt;, but no overhead any more from php/mysql.&lt;/p&gt;

&lt;h1 id="tools"&gt;Tools&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://disqus.com/admin/create/" target="_blank"&gt;Disqus&lt;/a&gt;: For still allowing comments, has a plugin for WordPress (Disqus Comment System) to move existing comments.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/benbalter/wordpress-to-jekyll-exporter" target="_blank"&gt;WordPress to Jekyll Exporter&lt;/a&gt;: Exports all posts/pages and converts them to markdown files for Jekyll.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/madhur/PortableJekyll" target="_blank"&gt;PortableJekyll&lt;/a&gt;: the portable version contains everything which is required to run Jekyll v2.3 on Windows.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://windows.github.com/" target="_blank"&gt;Github Windows&lt;/a&gt;: Git GUI client for Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="usage"&gt;Usage&lt;/h1&gt;
&lt;p&gt;Having the Jekyll for Windows allows you to run your blog locally (jekyll serve –watch) so that you can test before pushing. This was very useful as all the used tools were new for me, yaml config files, jekyll templating, markdown posts.&lt;/p&gt;
</description>
      <pubdate>Wed, 03 Sep 2014 00:00:00 +0200</pubdate>
      <link>https://xiu.shoeke.com/2014/09/03/new-hosting/
      <guid ispermalink="true">https://xiu.shoeke.com/2014/09/03/new-hosting/</guid>
      
    </item><item>
      <title>New IDN domain: スティーブ.みんな</title>
      <description><p>Google has started offering the .みんな domain. The extension means “everyone” and so it can be used by everyone. <img class="emoji" title=":smile:" alt=":smile:" src="https://github.githubassets.com/images/icons/emoji/unicode/1f604.png" height="20" width="20"></p>

<p><a href="http://www.youtube.com/watch?v=5FmLnNDw23Y">http://www.youtube.com/watch?v=5FmLnNDw23Y</a></p>

<p>More information can be found at <a href="http://xn--p8j9a0d9c9a.xn--q9jyb4c/index.html">http://はじめよう.みんな/index.html</a></p>

<p>This current blog is now also available as <a href="http://%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%96.%E3%81%BF%E3%82%93%E3%81%AA">http://スティーブ.みんな</a> which would translate to steve.everyone</p>

</description>
      <pubdate>Sat, 15 Mar 2014 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2014/03/15/new-idn-domain/
      <guid ispermalink="true">https://xiu.shoeke.com/2014/03/15/new-idn-domain/</guid>
      <category>Google</category><category>IDN</category><category>Japanese</category>
    </item><item>
      <title>やった！ワンピースのすべてを見ました！</title>
      <description>&lt;p&gt;見ての3月間後、私は、現在のすべてのワンピースエピソードを見ました。&lt;/p&gt;

&lt;p&gt;ワンピースは海賊についてアニメです。ルフィはむぎわら海賊のせんちょうです。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://xiu.shoeke.com/wp-content/uploads/2012/12/Luffy_by_BBXL.png"&gt;&lt;img class="alignnone  wp-image-1141" src="https://xiu.shoeke.com/wp-content/uploads/2012/12/Luffy_by_BBXL.png" alt="Luffy_by_BBXL" width="480" height="574" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ルフィはいつも元気でおもしろいです。そして、かれは一人ではありません。たくさんなかまいます。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://xiu.shoeke.com/wp-content/uploads/2012/12/12956584253521.png"&gt;&lt;img class="alignnone size-large wp-image-1151" src="https://xiu.shoeke.com/wp-content/uploads/2012/12/12956584253521-1024x640.png" alt="12956584253521" width="625" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9人はいます。フランキーさんとチョッパーさんとウソップさんとゾロさんとルフィさんとナミさんとサンジさんとロビンさんとブルックさんはいます。&lt;/p&gt;
</description>
      <pubdate>Tue, 18 Dec 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/12/18/yatta/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/12/18/yatta/</guid>
      <category>Japanese</category>
    </item><item>
      <title>Vidyano 4.0.7103</title>
      <description>&lt;p&gt;We’ve updated our Vidyano extension on the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/93793ad7-6fa2-4a90-992e-cb703f72b644"&gt;Visual Studio Gallery&lt;/a&gt; and on &lt;a href="https://github.com/2sky/Vidyano/"&gt;GitHub&lt;/a&gt; (Commit &lt;a href="https://github.com/2sky/Vidyano/commit/2838609"&gt;2838609&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;On the &lt;strong&gt;client&lt;/strong&gt; side we have some nice improvements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We’ve added multi-select on the query grid allowing you to use Shift to just select the first and last item of your selection.&lt;/li&gt;
  &lt;li&gt;You can now update the parameters that are going to be send in the execute hook of an action, allowing you to easily add extra parameters.&lt;/li&gt;
  &lt;li&gt;Added an easy to use control for editing user rights.&lt;/li&gt;
  &lt;li&gt;Fixed some rounding issue when re-sizing a master detail screen, when using bulk edit on a flags enum, when trying to load a filter if the action wasn’t available, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check the complete commit log for the Client on GitHub: &lt;a href="https://github.com/2sky/Vidyano/commit/2838609"&gt;https://github.com/2sky/Vidyano/commit/2838609&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;On the &lt;strong&gt;service&lt;/strong&gt; side we have also made some changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Added the Default TimeZone setting allowing you to choose the default time zone that will be used when new Date/DateTime/DateTimeOffset attributes are used. This change is really useful when deployed to Windows Azure so that DateTime.Now will return a value in the chosen Time Zone.&lt;/li&gt;
  &lt;li&gt;Force attribute with no edit rights to stay read-only even when a developer accidentally changes them.&lt;/li&gt;
  &lt;li&gt;Added the ability to send a uniqueId to the Vidyano Service so that the tokens will be validated against that value instead of the user’s ip address.&lt;/li&gt;
  &lt;li&gt;Added extra information when getting the Program Unit information (Name, PersistentObject Type, …)&lt;/li&gt;
  &lt;li&gt;You can now use coded expression trees when overriding the GetTextSearchExpressionForColumn method without having to build a complete expression tree in code.&lt;/li&gt;
  &lt;li&gt;Fixed an issue with the cache not being correctly updated when searching for relative dates (now, next week, …)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can get the latest service version of Vidyano by installing the extension from inside Visual Studio (Tools -&amp;gt; Extensions and Updates) or by going to the Gallery: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/93793ad7-6fa2-4a90-992e-cb703f72b644"&gt;http://visualstudiogallery.msdn.microsoft.com/93793ad7-6fa2-4a90-992e-cb703f72b644&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;User Right editor&lt;/strong&gt; will really help new developers when working with rights because it will tell you which actions, schema’s, etc are available.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/AvailableActions.png"&gt;&lt;img class="alignnone size-full wp-image-1071" title="AvailableActions" src="https://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/AvailableActions.png?fit=625%2C320" alt="" data-recalc-dims="1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first dropdown will show all the available actions, including custom actions, and the combinations (e.g.: QueryRead). The second dropdown allows you to choose an optional schema (Vidyano or your target schema). The third dropdown allows you to choose an optional Persistent Object.&lt;/p&gt;

&lt;p&gt;For some actions (Query, Read, Edit, New) you can also choose a fourth option, the attribute.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/AvailableAttributes.png"&gt;&lt;img class="alignnone size-full wp-image-1061" title="AvailableAttributes" src="https://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/AvailableAttributes.png?fit=625%2C303" alt="" data-recalc-dims="1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For easy copy/pasting we also added a toggle option to switch between the editor and a normal text box.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/ResourceText.png"&gt;&lt;img class="alignnone size-full wp-image-1051" title="ResourceText" src="https://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/12/ResourceText.png?fit=625%2C66" alt="" data-recalc-dims="1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;The new way of writing code for the &lt;strong&gt;GetTextSearchExpressionForColumn&lt;/strong&gt; allows you to write normal C# code when adding custom filter logic.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="n"&gt;Expression&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Func&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Product&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;GetTextSearchExpressionForColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;QueryColumn&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ParameterExpression&lt;/span&gt; &lt;span class="n"&gt;entityExpr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MemberExpression&lt;/span&gt; &lt;span class="n"&gt;propertyExpr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;isEfQuery&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Name"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StringComparison&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OrdinalIgnoreCase&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetTextSearchExpressionForColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;entityExpr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;propertyExpr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;isEfQuery&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You can write a normal where statement and Vidyano will automatically fix the generated code to match as needed.&lt;/p&gt;

&lt;p&gt;There are some things you’ll have to consider, when working directly with LINQ to Entities you can’t use the Contains method with the StringComparison and you don’t really need to check for null.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;As always, you can post feedback/questions on our website &lt;a href="http://www.vidyano.com/#!/Questions"&gt;http://www.vidyano.com/#!/Questions&lt;/a&gt; which is also written with Vidyano or subscribe to our twitter &lt;a href="https://twitter.com/Vidyano"&gt;https://twitter.com/Vidyano&lt;/a&gt; to get all the latest information&lt;/p&gt;

</description>
      <pubdate>Tue, 11 Dec 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/12/11/vidyano-4-0-7103/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/12/11/vidyano-4-0-7103/</guid>
      <category>GitHub</category><category>JavaScript</category><category>Vidyano</category>
    </item><item>
      <title>SignalR and Vidyano</title>
      <description>&lt;p&gt;After the announcement of David Fowler about the new release of &lt;a href="http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx"&gt;SignalR&lt;/a&gt;, I had to try it out on my Learning Japanese web app (&lt;a href="https://bitbucket.org/Hansen/learningjapanese/changeset/70fa42ad576b3d94d27b2ae00027495f"&gt;latest commit&lt;/a&gt;). I’ve started with basic chat app and added some Vidyano related calls to it (it will automatically translate between English &amp;lt;-&amp;gt; Japanese).&lt;/p&gt;

&lt;p&gt;So first I had to add the correct NuGet package to the Web site, instead of the App_Start code I’ve changed the Vidyano code to map the WebAPI routes in the &lt;a href="https://bitbucket.org/Hansen/learningjapanese/src/70fa42ad576b3d94d27b2ae00027495f527f06a3/LearningJapanese.Service.Web/Global.asax.cs"&gt;Global.asax.cs&lt;/a&gt; because I already had the file.&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Application_Start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;RouteTable&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Routes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapHubs&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="n"&gt;Vidyano&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WebControllerFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;RegisterRoutes&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;With SignalR they have added a MapHubs extension method, in Vidyano we can use the WebControllerFactory’s RegisterRoutes to do the same. SignalR comes first because it’ll handle the /signalr paths, and Vidyano handles the rest.&lt;/p&gt;

&lt;p&gt;My hub is mostly the basic chat hub which can be found in the &lt;a href="https://bitbucket.org/Hansen/learningjapanese/src/70fa42ad576b3d94d27b2ae00027495f527f06a3/LearningJapanese.Service/Chat.cs"&gt;Chat.cs&lt;/a&gt; file:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Chat&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Hub&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsNullOrEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="n"&gt;userName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;anonymous&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsNullOrEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;empty&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;translations&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;JapaneseKanaClassifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ContainsJapaneseScript&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="n"&gt;translations&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetTranslations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="s"&gt;"ja"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;
            &lt;span class="n"&gt;translations&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetTranslations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"ja"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;clientMessage&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Manager&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetTranslatedMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"UserSays"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;translations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;translations&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;unknown&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Clients&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;All&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientMessage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;My JapaneseKanaClassifier class is used to see if the message contains any Japanese characters (Kanji, Hiragana or Katakana) and if so it will be translated to English, otherwise it will assume that it is in English and it will be translated to Japanese.&lt;/p&gt;

&lt;p&gt;That was all that was needed for the service side part, but I’ve also used the &lt;a href="https://bitbucket.org/Hansen/learningjapanese/src/70fa42ad576b3d94d27b2ae00027495f527f06a3/LearningJapanese.Service/LearningJapaneseWeb.cs"&gt;Vidyano Web class&lt;/a&gt; to add the needed JavaScripts for the Client part by adding the jquery.signalR-1.0.0-alpha1.min.js embedded with my other scripts, and adding the necessary &amp;lt;script src=”/signalr/hubs” to my html.&lt;/p&gt;

&lt;p&gt;As for the client, I’ve used a virtual persistent object Chat to view it in my application and the Chat template is using the following:&lt;/p&gt;

&lt;figure class="highlight"&gt;&lt;pre&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;chat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#messages&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
      &lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;friendlyUserName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#msg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#msg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#broadcast&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#msg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;keypress&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keyCode&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;which&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#msg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;focus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ul&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"messages"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"msg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"broadcast"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;%= app.getTranslatedMessage('Say') %&amp;gt;"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Again nothing special, when clicking on the Say button, or pressing Return it will send the message and the current friendlyUserName to the service.&lt;/p&gt;

&lt;p&gt;You can check it all out on &lt;a href="http://vidyano.apphb.com/#!/Chat"&gt;http://vidyano.apphb.com/#!/Chat&lt;/a&gt;&lt;/p&gt;

</description>
      <pubdate>Thu, 22 Nov 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/11/22/signalr-and-vidyano/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/11/22/signalr-and-vidyano/</guid>
      <category>Learning Japanese</category><category>SignalR</category><category>Vidyano</category>
    </item><item>
      <title>DefinitelyTyped</title>
      <description>&lt;p&gt;Boris Yankov has started collecting TypeScript type defintions for popular JavaScript libraries. These files (ending in .d.ts) describe the public api of an existing library, just like .h files do for C code. This allows you to write TypeScript code against JavaScript libraries without them having to change anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Currently available:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://angularjs.org/"&gt;AngularJS&lt;/a&gt; (by &lt;a href="https://github.com/diegovilar"&gt;Diego Vilar&lt;/a&gt;) (&lt;a href="https://github.com/borisyankov/DefinitelyTyped/wiki/AngularJS-Definitions-Usage-Notes"&gt;wiki&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/caolan/async"&gt;async&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://backbonejs.org/"&gt;Backbone.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://twitter.github.com/bootstrap/"&gt;Bootstrap&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.breezejs.com/"&gt;Breeze&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://codemirror.net/"&gt;CodeMirror&lt;/a&gt; (by &lt;a href="https://github.com/fdecampredon"&gt;François de Campredon&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://harvesthq.github.com/chosen/"&gt;Chosen&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://code.google.com/p/dynatree/"&gt;dynatree&lt;/a&gt; (by &lt;a href="https://github.com/fdecampredon"&gt;François de Campredon&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.createjs.com/#!/EaselJS"&gt;EaselJS&lt;/a&gt; (by &lt;a href="https://bitbucket.org/drk4"&gt;Pedro Ferreira&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://emberjs.com/"&gt;ember.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://expressjs.com/"&gt;Express&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://fancybox.net/"&gt;Fancybox&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developers.google.com/maps/"&gt;GoogleMaps&lt;/a&gt; (by &lt;a href="https://github.com/eNepper"&gt;Esben Nepper&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://handlebarsjs.com/"&gt;Handlebars&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/balupton/History.js/"&gt;History.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://wavded.github.com/humane-js/"&gt;Humane.js&lt;/a&gt; (by &lt;a href="https://github.com/jmvrbanac"&gt;John Vrbanac&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/bartaz/impress.js"&gt;Impress.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://pivotal.github.com/jasmine/"&gt;Jasmine&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/jquery/globalize"&gt;jQuery.Globalize&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; (from TypeScript samples)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://jquerymobile.com/"&gt;jQuery Mobile&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://kmalakoff.github.com/knockback/"&gt;Knockback&lt;/a&gt; (by &lt;a href="https://github.com/docgit"&gt;Marcel Binot&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://knockoutjs.com/"&gt;Knockout.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/SteveSanderson/knockout.mapping"&gt;Knockout.Mapping&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://linqjs.codeplex.com/"&gt;linq.js&lt;/a&gt; (by &lt;a href="https://github.com/marcinnajder"&gt;Marcin Najder&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://modernizr.com/"&gt;Modernizr&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/timrwood/moment"&gt;Moment.js&lt;/a&gt; (by &lt;a href="https://github.com/Lakerfield"&gt;Michael Lakerveld&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/janl/mustache.js"&gt;Mustache.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt; (from TypeScript samples)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/mranney/node_redis"&gt;node_redis&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver"&gt;node-sqlserver&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://phonegap.com/"&gt;PhoneGap&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.createjs.com/#!/PreloadJS"&gt;PreloadJS&lt;/a&gt; (by &lt;a href="https://bitbucket.org/drk4"&gt;Pedro Ferreira&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://qunitjs.com/"&gt;QUnit&lt;/a&gt; (by &lt;a href="https://github.com/Diullei"&gt;Diullei Gomes&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://raphaeljs.com/"&gt;Raphael&lt;/a&gt; (by &lt;a href="https://github.com/CheCoxshall"&gt;CheCoxshall&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://sammyjs.org/"&gt;Sammy.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.asp.net/signalr"&gt;SignalR&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.createjs.com/#!/SoundJS"&gt;SoundJS&lt;/a&gt; (by &lt;a href="https://bitbucket.org/drk4"&gt;Pedro Ferreira&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://fgnass.github.com/spin.js/"&gt;Spin&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://sugarjs.com/"&gt;Sugar&lt;/a&gt; (by &lt;a href="https://github.com/jbaldwin/"&gt;Josh Baldwin&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.steema.com/"&gt;Teechart&lt;/a&gt; (by &lt;a href="http://www.steema.com/"&gt;Steema&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/CodeSeven/toastr"&gt;Toastr&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.createjs.com/#!/TweenJS"&gt;TweenJS&lt;/a&gt; (by &lt;a href="https://bitbucket.org/drk4"&gt;Pedro Ferreira&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://launchpad.net/libunity-webapps"&gt;Ubuntu Unity Web API&lt;/a&gt; (by &lt;a href="https://github.com/jmvrbanac"&gt;John Vrbanac&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://underscorejs.org/"&gt;Underscore.js&lt;/a&gt; (by &lt;a href="https://github.com/borisyankov"&gt;Boris Yankov&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://underscorejs.org/"&gt;Underscore.js (Typed)&lt;/a&gt; (by &lt;a href="https://github.com/jbaldwin/"&gt;Josh Baldwin&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find all the definition files on his GitHub project: &lt;a href="https://github.com/borisyankov/DefinitelyTyped"&gt;https://github.com/borisyankov/DefinitelyTyped&lt;/a&gt;&lt;/p&gt;

</description>
      <pubdate>Wed, 14 Nov 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/11/14/definitelytyped/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/11/14/definitelytyped/</guid>
      <category>JavaScript</category><category>TypeScript</category>
    </item><item>
      <title>Let&amp;#8217;s talk in Japanese in Belgium</title>
      <description>&lt;p&gt;For other people in the Antwerp area, next week (17th of November) we have the next Nihongo Hanasoukai (日本語を話そう会). It’s organised each month and it’s for both native Japanese speakers and people learning Japanese. It’s just 2 hours and costs you € 1 but gives you the opportunity to test and practice speaking Japanese.&lt;/p&gt;

&lt;p&gt;I went last month for the first time and it was really fun. They showed us first the different names for the moon (new moon, etc). We were then placed in groups of 3-4 and then we have to make sentences with adjectives. Each group had to read out the sentences they created and afterwards we had a few minutes to just talk about random stuff.&lt;/p&gt;
</description>
      <pubdate>Sat, 10 Nov 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/11/10/lets-talk-in-japanese-in-belgium/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/11/10/lets-talk-in-japanese-in-belgium/</guid>
      <category>Japanese</category>
    </item><item>
      <title>VS Extension of the Week: Web Essentials 2012</title>
      <description>&lt;p&gt;This is another must have extension for any Web developer using Visual Studio 2012. It is updated regularly (a lot, like weekly) and they keep adding support for all the latest Web related technologies (TypeScript was added within a week).&lt;/p&gt;

&lt;p&gt;Once you have the extension installed it will add native support for LESS, TypeScript, CoffeeScript and it also contains a minifier for generated JavaScript/CSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://xiu.shoeke.com/wp-content/uploads/2012/11/typescript.png"&gt;&lt;img class="alignnone size-full wp-image-901" title="typescript" src="https://i0.wp.com/xiu.shoeke.com/wp-content/uploads/2012/11/typescript.png?fit=600%2C405" alt="" data-recalc-dims="1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LESS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://xiu.shoeke.com/wp-content/uploads/2012/11/Less-preview.png"&gt;&lt;img class="alignnone size-full wp-image-911" title="Less preview" src="https://i1.wp.com/xiu.shoeke.com/wp-content/uploads/2012/11/Less-preview.png?fit=454%2C255" alt="" data-recalc-dims="1" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6"&gt;Web Essentials 2012&lt;/a&gt;&lt;/p&gt;

</description>
      <pubdate>Thu, 08 Nov 2012 00:00:00 +0100</pubdate>
      <link>https://xiu.shoeke.com/2012/11/08/vs-extension-of-the-week-web-essentials-2012/
      <guid ispermalink="true">https://xiu.shoeke.com/2012/11/08/vs-extension-of-the-week-web-essentials-2012/</guid>
      <category>Extension of the Week</category><category>HTML</category><category>JavaScript</category><category>TypeScript</category>
    </item>
  </channel>
</rss>
