<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-22121232</id><updated>2026-07-24T16:00:28.217+10:00</updated><category term=".NET"/><category term="Javascript"/><category term="Umbraco"/><category term="AJAX"/><category term="Internet"/><category term="DESIGN PATTERN"/><category term="DEV TOOL"/><category term="Entity Framework"/><category term="LINQ"/><category term="TDD"/><category term="Unit Testing"/><category term="Update Panel"/><title type='text'>Kurniawan Kurniawan Blogs</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-22121232.post-1494822796295046897</id><published>2017-07-19T15:34:00.000+10:00</published><updated>2017-07-19T15:36:31.840+10:00</updated><title type='text'>TreeSet / ConcurrentSortedList cannot be removed once the value changes</title><content type='html'>&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;// Check this out.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;class &lt;/span&gt;KK &lt;span style=&quot;color: #cc7832;&quot;&gt;implements &lt;/span&gt;Comparable&amp;lt;KK&amp;gt; {
    &lt;span style=&quot;color: #cc7832;&quot;&gt;public int &lt;/span&gt;&lt;span style=&quot;color: #9876aa;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    public &lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;KK&lt;/span&gt;(&lt;span style=&quot;color: #cc7832;&quot;&gt;int &lt;/span&gt;value) {
        &lt;span style=&quot;color: #cc7832;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #9876aa;&quot;&gt;value &lt;/span&gt;= value&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;}

    &lt;span style=&quot;color: #bbb529;&quot;&gt;@Override&lt;/span&gt;&lt;span style=&quot;color: #bbb529;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;public int &lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;compareTo&lt;/span&gt;(KK o) {
        &lt;span style=&quot;color: #cc7832;&quot;&gt;return &lt;/span&gt;Integer.&lt;span style=&quot;font-style: italic;&quot;&gt;compare&lt;/span&gt;(&lt;span style=&quot;color: #9876aa;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;, &lt;/span&gt;o.&lt;span style=&quot;color: #9876aa;&quot;&gt;value&lt;/span&gt;)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;    }
}

&lt;span style=&quot;color: #bbb529;&quot;&gt;@Test&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;void &lt;/span&gt;&lt;span style=&quot;color: #ffc66d;&quot;&gt;test_treeset&lt;/span&gt;() {
    SortedSet&amp;lt;KK&amp;gt; set = &lt;span style=&quot;color: #cc7832;&quot;&gt;new &lt;/span&gt;TreeSet&amp;lt;&amp;gt;()&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;    KK a = &lt;span style=&quot;color: #cc7832;&quot;&gt;new &lt;/span&gt;KK(&lt;span style=&quot;color: #6897bb;&quot;&gt;5&lt;/span&gt;)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;    KK b = &lt;span style=&quot;color: #cc7832;&quot;&gt;new &lt;/span&gt;KK(&lt;span style=&quot;color: #6897bb;&quot;&gt;10&lt;/span&gt;)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;set.add(a)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;set.add(b)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;set.forEach(item -&amp;gt; System.&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;out&lt;/span&gt;.println(item.&lt;span style=&quot;color: #9876aa;&quot;&gt;value&lt;/span&gt;))&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;// change b to less than a -&amp;gt; this will not remove the value after b value changes.&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;    // because it guranteed log n, so it will not find it.&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;    b.&lt;span style=&quot;color: #9876aa;&quot;&gt;value &lt;/span&gt;= &lt;span style=&quot;color: #6897bb;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;set.remove(b)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;System.&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;out&lt;/span&gt;.println(&lt;span style=&quot;color: #6a8759;&quot;&gt;&quot;After remove -&amp;gt; it will not remove value&quot;&lt;/span&gt;)&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #cc7832;&quot;&gt;    &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: #2b2b2b; color: #a9b7c6; font-family: &#39;Menlo&#39;; font-size: 10.5pt;&quot;&gt;    set.forEach(item -&amp;gt; System.&lt;span style=&quot;color: #9876aa; font-style: italic;&quot;&gt;out&lt;/span&gt;.println(item.&lt;span style=&quot;color: #9876aa;&quot;&gt;value&lt;/span&gt;))&lt;span style=&quot;color: #cc7832;&quot;&gt;;&lt;/span&gt;}&lt;/pre&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1494822796295046897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1494822796295046897?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1494822796295046897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1494822796295046897'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2017/07/treeset-concurrentsortedlist-cannot-be.html' title='TreeSet / ConcurrentSortedList cannot be removed once the value changes'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-1702299829254463686</id><published>2015-07-24T13:23:00.002+10:00</published><updated>2015-07-24T13:23:23.650+10:00</updated><title type='text'>My Quick Git Process</title><content type='html'>Create your own branch..&lt;br /&gt;
&lt;br /&gt;
commit your changes&lt;br /&gt;
&amp;nbsp; &lt;b&gt;git commit -m &quot;...&quot;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
push changes to your backup&lt;br /&gt;
&amp;nbsp; &lt;b&gt;git push backup branch-name&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
modify your code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
commit with amend&lt;br /&gt;
&amp;nbsp; &lt;b&gt;git commit --amend&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
push your changes to remote again &lt;b&gt;with force&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;git push backup branch-name -f&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
once finish your feature... and code review...&lt;br /&gt;
&lt;br /&gt;
merge back to master with 1 commit&lt;br /&gt;
&amp;nbsp;&lt;b&gt;git merge master&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1702299829254463686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1702299829254463686?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1702299829254463686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1702299829254463686'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2015/07/my-quick-git-process.html' title='My Quick Git Process'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-1131256130436740588</id><published>2014-06-04T15:03:00.001+10:00</published><updated>2014-06-04T15:04:19.356+10:00</updated><title type='text'>Using Reserve Proxy for your Single Page App to ovoid CORS</title><content type='html'>There are couple ways to eliminate CORS, but one of my favourite is to setup reserve proxy server.&lt;br /&gt;
&lt;br /&gt;
Here simplest way how to do it.&lt;br /&gt;
&lt;br /&gt;
1. Install ARR&lt;br /&gt;
&lt;a href=&quot;http://www.iis.net/learn/extensions/installing-application-request-routing-(arr)&quot;&gt;http://www.iis.net/learn/extensions/installing-application-request-routing-(arr)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Enable Proxy&lt;br /&gt;
IIS &amp;gt; Select your server &amp;gt; Aplication Request Routing &amp;gt; Server Proxy Setting &amp;gt; Check Enable Proxy&lt;br /&gt;
&lt;br /&gt;
3. Add Url Rewrite inside your site web.config.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
&amp;lt;system.webServer&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;rewrite&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;rules&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;rule name=&quot;Reverse Proxy to API&quot; stopProcessing=&quot;true&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;match url=&quot;^api/(.*)&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;action type=&quot;Rewrite&quot; url=&quot;http://some.api/v1/{R:1}&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/rule&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;/rules&amp;gt;&lt;br /&gt;
&amp;lt;/rewrite&amp;gt;&lt;br /&gt;
&amp;lt;/system.webServer&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Done, now when you request /api in your site, it will automatically forward that to http://come.api/v1/&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1131256130436740588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1131256130436740588?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1131256130436740588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1131256130436740588'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/06/using-reserve-proxy-for-your-single.html' title='Using Reserve Proxy for your Single Page App to ovoid CORS'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-677742863746111247</id><published>2014-05-21T15:56:00.000+10:00</published><updated>2014-05-21T16:02:23.306+10:00</updated><title type='text'>angular scroll with animation for accordion mobile</title><content type='html'>Recently we want to have scroll animation which works with accordion in mobile.&lt;br /&gt;
angular-scroll has bugs where it only check the top position instead recheck this every time.&lt;br /&gt;
&lt;br /&gt;
If you have same issue, feel free to try this version.&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/goog_195094758&quot;&gt;&lt;br /&gt;&lt;/a&gt;
&lt;a href=&quot;https://github.com/kkurni/angular-scroll/&quot;&gt;https://github.com/kkurni/angular-scroll/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/goog_195094760&quot;&gt;&lt;br /&gt;&lt;/a&gt;
&lt;a href=&quot;https://gist.github.com/kkurni/98e664941ac1c373a3ff&quot;&gt;https://gist.github.com/kkurni/98e664941ac1c373a3ff&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ps. Thanks to Matt for this.&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/677742863746111247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/677742863746111247?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/677742863746111247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/677742863746111247'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/angular-scroll-with-animation-for.html' title='angular scroll with animation for accordion mobile'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-1552857907592092828</id><published>2014-05-13T16:34:00.001+10:00</published><updated>2014-05-13T16:34:41.667+10:00</updated><title type='text'>Improve your site click on mobile site</title><content type='html'>&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;disable user-scalable&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #1e1e1e; color: gainsboro; font-family: Consolas; font-size: 13;&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #b4b4b4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;&quot;viewport&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color: #b4b4b4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;&quot;width=device-width,&amp;nbsp;user-scalable=no&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: grey;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;check any css which has heavy performance such as *first-child&lt;/li&gt;
&lt;li&gt;create grouping by hide and show components, it will your less dom objects.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1552857907592092828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1552857907592092828?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1552857907592092828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1552857907592092828'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/improve-your-site-click-on-mobile-site.html' title='Improve your site click on mobile site'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-4568700625936007524</id><published>2014-05-09T13:03:00.002+10:00</published><updated>2014-05-13T16:36:05.079+10:00</updated><title type='text'>Debug your services call using fiddler</title><content type='html'>add this into your web.config 
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #1e1e1e; color: gainsboro; font-family: Consolas; font-size: 13;&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;system.net&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;defaultProxy&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;enabled&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;useDefaultCredentials&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;proxy&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;autoDetect&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;bypassonlocal&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;proxyaddress&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;http://127.0.0.1:6666&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #92caf4;&quot;&gt;usesystemdefault&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c8c8c8;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;proxy&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;defaultProxy&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;system.net&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: grey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/4568700625936007524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/4568700625936007524?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/4568700625936007524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/4568700625936007524'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/debug-your-services-call-using-fiddler.html' title='Debug your services call using fiddler'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-678367428345629758</id><published>2014-05-05T17:46:00.003+10:00</published><updated>2014-05-05T17:46:58.817+10:00</updated><title type='text'>Errorception with angularjs</title><content type='html'>Easy and simple fix to use errorception with anguljar js.&lt;br /&gt;
&lt;br /&gt;
Just add this code to handle error in angularjs.

&lt;script src=&quot;https://gist.github.com/kkurni/eeae51aab2a7b3554554.js&quot;&gt;&lt;/script&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/678367428345629758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/678367428345629758?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/678367428345629758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/678367428345629758'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/errorception-with-angularjs.html' title='Errorception with angularjs'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-2547261027392615747</id><published>2014-05-02T17:15:00.001+10:00</published><updated>2014-05-02T17:15:47.207+10:00</updated><title type='text'>WDC 2 QA</title><content type='html'>- u need put context when u learn math&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- web components, is it ready?&lt;/div&gt;&lt;div&gt;short answer would&#39;t use it now if u support ie 10&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;but its about the concept like using angular directives.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- high level or low level?&lt;/div&gt;&lt;div&gt;u need to know both&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- eduction should teach low or high?&lt;/div&gt;&lt;div&gt;should be low&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- are we gonna loosing commonality of languages?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- why not much women?&lt;/div&gt;&lt;div&gt;just said we want u..&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- isLogin is that good name?&lt;/div&gt;&lt;div&gt;if ur function name called and.. it doing too much.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/2547261027392615747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/2547261027392615747?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2547261027392615747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2547261027392615747'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-2-qa.html' title='WDC 2 QA'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-7285687126505669951</id><published>2014-05-02T16:21:00.001+10:00</published><updated>2014-05-02T16:21:23.815+10:00</updated><title type='text'>WDC 2.9 the future of indieweb</title><content type='html'>independentday.org manifesto 2001&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;in the old days everyone have their own url instead of name.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2002 friendly silos arrived.&lt;/div&gt;&lt;div&gt;- sharing&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2006 - social network&lt;/div&gt;&lt;div&gt;why?&lt;/div&gt;&lt;div&gt;easy signup&lt;/div&gt;&lt;div&gt;ur friend friends&lt;/div&gt;&lt;div&gt;reading and posting (where u can comment)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2007 popularizes simplicity&lt;/div&gt;&lt;div&gt;extremely simple ui&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;2007 facebook f8 platform launch&lt;/div&gt;&lt;div&gt;2008 facebook connect&lt;/div&gt;&lt;div&gt;2014 facebook f8&amp;nbsp;&lt;/div&gt;&lt;div&gt;it reminds at as worker hive back to silos&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;geocities shutdown&lt;/div&gt;&lt;div&gt;upcoming shutdown&lt;/div&gt;&lt;div&gt;posterous shutdown&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;what went wrong in 2003?&lt;/div&gt;&lt;div&gt;peak independent web.&lt;/div&gt;&lt;div&gt;- atom vs rss ? arguing plumbing instead of UI&lt;/div&gt;&lt;div&gt;- trackback or pingback is spam&lt;/div&gt;&lt;div&gt;- pingback noise user experience. it was designed by backend&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;decline if personal sites&lt;/div&gt;&lt;div&gt;- distracted by format wars&lt;/div&gt;&lt;div&gt;- social net to connect to people&lt;/div&gt;&lt;div&gt;- silo ux evolved: twiter fb&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;distraction vs focus&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2008 social web foo camp - federation twitter and jaiku&lt;/div&gt;&lt;div&gt;but didnt happened&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;2010 federated social web summit&lt;/div&gt;&lt;div&gt;- too much talking not enough building&lt;/div&gt;&lt;div&gt;- architecture astronot. (abstraction)&lt;/div&gt;&lt;div&gt;- more talkers&lt;/div&gt;&lt;div&gt;- complacent complexity . eg oauth. salmon&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;i dont care about federation, i care abt mu content and my friend&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;2011 indiewebcamp.com&lt;/div&gt;&lt;div&gt;discusion&lt;/div&gt;&lt;div&gt;docs wiki&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- show dont tell&lt;/div&gt;&lt;div&gt;- creators only&lt;/div&gt;&lt;div&gt;- must have domain nane to attend&lt;/div&gt;&lt;div&gt;- use ur site as openid to signin to wiki&lt;/div&gt;&lt;div&gt;- rsvp on wiki&lt;/div&gt;&lt;div&gt;- creators may bring an apprentice&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;what we learn?&lt;/div&gt;&lt;div&gt;- no mailing list. instead irc archived&lt;/div&gt;&lt;div&gt;- simplicity&lt;/div&gt;&lt;div&gt;oauth =&amp;gt; indieauth&lt;/div&gt;&lt;div&gt;microformats2&lt;/div&gt;&lt;div&gt;pingback =&amp;gt; drop xml rpc just http (webmention)&lt;/div&gt;&lt;div&gt;easier pubs and consumers&lt;/div&gt;&lt;div&gt;user exp first&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;copy the best e.g copy from twitter ui into our web&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;2014 do we have a chance?&lt;/div&gt;&lt;div&gt;- peak silo ux -&amp;gt; fb like twitter&lt;/div&gt;&lt;div&gt;they stuck&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;* publish on his own site and itpublish &amp;nbsp;everywhere&lt;/div&gt;&lt;div&gt;distribution interactions&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;indieweb wants u.&lt;/div&gt;&lt;div&gt;to own ur data , permalinks abd ur identity online&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;irc #indiewebcamp&lt;/div&gt;&lt;div&gt;wiki indiewebcamp.com&lt;/div&gt;&lt;div&gt;build indieweb into ur site&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/7285687126505669951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/7285687126505669951?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7285687126505669951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7285687126505669951'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-29-future-of-indieweb.html' title='WDC 2.9 the future of indieweb'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-1113799281409910072</id><published>2014-05-02T14:56:00.001+10:00</published><updated>2014-05-02T14:56:37.854+10:00</updated><title type='text'>WDC 2.8 ImProve ur ajax app</title><content type='html'>what is reliable service?&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;it is context dependend&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;reliable ajax service&lt;/div&gt;&lt;div&gt;99% time&lt;/div&gt;&lt;div&gt;doesnt get stuck&lt;/div&gt;&lt;div&gt;handle required number of request&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;but many fail&lt;/div&gt;&lt;div&gt;- bad input&lt;/div&gt;&lt;div&gt;- connectivity and timeout&lt;/div&gt;&lt;div&gt;- encoding&lt;/div&gt;&lt;div&gt;- server error&lt;/div&gt;&lt;div&gt;- client abort&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;clientside error&lt;/div&gt;&lt;div&gt;server error&lt;/div&gt;&lt;div&gt;error after processing&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;demo&lt;/div&gt;&lt;div&gt;error in client no one knows&lt;/div&gt;&lt;div&gt;solution&lt;/div&gt;&lt;div&gt;use window.onerror and handle the error&lt;/div&gt;&lt;div&gt;u can debug using print stack&lt;/div&gt;&lt;div&gt;angularjs errorhandler&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- handle server handler&lt;/div&gt;&lt;div&gt;give info with error obj.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- status code&lt;/div&gt;&lt;div&gt;avoid 404 coz u can&#39;t differntiate whether it hit ur server or not instead using error obj&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;use angularjs error interceptors&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;put notification if there is no internetconnection&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- offline storage&lt;/div&gt;&lt;div&gt;use firedb or couchdb&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;handle error is not only tech thing bust all decision maker need to get involved&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;increase reliable also increase complexity&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;summary&lt;/div&gt;&lt;div&gt;- log errors&lt;/div&gt;&lt;div&gt;- handle errors&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1113799281409910072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1113799281409910072?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1113799281409910072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1113799281409910072'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-28-improve-ur-ajax-app.html' title='WDC 2.8 ImProve ur ajax app'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-6603548145609534504</id><published>2014-05-02T14:38:00.001+10:00</published><updated>2014-05-02T14:38:20.652+10:00</updated><title type='text'>WDC 2.7 streaming the web</title><content type='html'>stream flow and back pressure&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;do one thing and do it well&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;e.g file system give files but process can&#39;t cope with it process will give back pressure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;rather than push... use pull when the process finish&lt;/div&gt;&lt;div&gt;nodestreams.com&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;do pull stream instead&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;it is addictive pattern&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/6603548145609534504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/6603548145609534504?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/6603548145609534504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/6603548145609534504'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-27-streaming-web.html' title='WDC 2.7 streaming the web'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-4672578266484997505</id><published>2014-05-02T14:11:00.001+10:00</published><updated>2014-05-02T14:22:40.082+10:00</updated><title type='text'>WDC 2.6 frontend security</title><content type='html'>--untrusted data&lt;div&gt;location &amp;amp; uirs&lt;/div&gt;&lt;div&gt;cookies&lt;/div&gt;&lt;div&gt;referrer&lt;/div&gt;&lt;div&gt;window name&lt;/div&gt;&lt;div&gt;indirect sources&lt;/div&gt;&lt;div&gt;other objs. always validate from event sources.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--sinks&lt;/div&gt;&lt;div&gt;-execution sink&lt;/div&gt;&lt;div&gt;eval() - click handler&lt;/div&gt;&lt;div&gt;-html elements sink&lt;/div&gt;&lt;div&gt;-location sink&lt;/div&gt;&lt;div&gt;window.location=input&lt;/div&gt;&lt;div&gt;if someone else to navigate u&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-control flow sink&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;solutions&lt;/div&gt;&lt;div&gt;- minimize attack surface&lt;/div&gt;&lt;div&gt;avoid convert string to script&lt;/div&gt;&lt;div&gt;eval,timeout, etc&lt;/div&gt;&lt;div&gt;avoid innerhtml where possjble&lt;/div&gt;&lt;div&gt;use .textContent, document.createElement&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- template approach&lt;/div&gt;&lt;div&gt;placeholder like angularjs&lt;/div&gt;&lt;div&gt;use bind instead of {{}}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- html input?&lt;/div&gt;&lt;div&gt;dont write ur own sanitizer&lt;/div&gt;&lt;div&gt;but if u do&lt;/div&gt;&lt;div&gt;parse input (using document.createElement) instead regex&lt;/div&gt;&lt;div&gt;whitelist of dom nodes&lt;/div&gt;&lt;div&gt;keep only that it safe instead of blacklist&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- sanitizer&lt;/div&gt;&lt;div&gt;angular $sanitize&lt;/div&gt;&lt;div&gt;bleach.js&lt;/div&gt;&lt;div&gt;DomPurify&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;summary&lt;/div&gt;&lt;div&gt;avoid eval &amp;amp; innerHtml&lt;/div&gt;&lt;div&gt;use template language but be careful with attribhte&lt;/div&gt;&lt;div&gt;filter html input conservatively&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;do framework make things better?&lt;/div&gt;&lt;div&gt;domxss wiki&lt;/div&gt;&lt;div&gt;mustache security wiki&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;jquery?&amp;nbsp;&lt;/div&gt;&lt;div&gt;$(location.hash) is fixed but reintroduxe agajn&lt;/div&gt;&lt;div&gt;element.add(usercontent)&lt;/div&gt;&lt;div&gt;append after before html, etc&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;knockout?&amp;nbsp;&lt;/div&gt;&lt;div&gt;ko.applyBinding()&lt;/div&gt;&lt;div&gt;data-bind=&quot;click:..&quot;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;this won&#39;t be pickup by security analysis&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;angularjs?&lt;/div&gt;&lt;div&gt;{{expression}} in 1.1.5 will execute script&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;but it fixed now.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;in general frameworks add complexity so u need to understand&lt;/div&gt;&lt;div&gt;e.g web components&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;this is really easy to get wrong&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;but there is&amp;nbsp;&lt;/div&gt;&lt;div&gt;content security policy&lt;/div&gt;&lt;div&gt;whitelist of content sources&lt;/div&gt;&lt;div&gt;its a bit restrictive&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;angular is the best coz has csp mode&lt;/div&gt;&lt;div&gt;ng-csp&lt;/div&gt;&lt;div&gt;angular 1.2 is good&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;summary&lt;/div&gt;&lt;div&gt;- avoid innerhtml&lt;/div&gt;&lt;div&gt;- understand frameworks&lt;/div&gt;&lt;div&gt;- csp provide additional layer of protection&lt;/div&gt;&lt;div&gt;- csp solve script injection but not all problems like control flows&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/4672578266484997505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/4672578266484997505?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/4672578266484997505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/4672578266484997505'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-26-frontend-security.html' title='WDC 2.6 frontend security'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-7833168741955981520</id><published>2014-05-02T12:33:00.001+10:00</published><updated>2014-05-02T12:33:45.424+10:00</updated><title type='text'>WDC 2.5 TLS?</title><content type='html'>-lesson from heartbleeding&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Tls complex protocol&lt;/div&gt;&lt;div&gt;many implementation&lt;/div&gt;&lt;div&gt;dangerous close to monoculturr&lt;/div&gt;&lt;div&gt;opensource is not magical&lt;/div&gt;&lt;div&gt;incident handling is reallt important&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;more tls, why?&lt;/div&gt;&lt;div&gt;coz cookies canbe expose without tls or mix tls&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;more encription is the good things&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;http/2 is for speed but firefox and chrome &amp;nbsp;over tls&lt;/div&gt;&lt;div&gt;to encourage every site to use tls&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;transparent tls, there is no https or lock but still negotioting tls&lt;/div&gt;&lt;div&gt;- but still debatable&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;everyone can issue certificate and ur browser trusted&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;what happenig now&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-http strict trnasport secuirty&lt;/div&gt;&lt;div&gt;http sts&lt;/div&gt;&lt;div&gt;only available for https&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- public key pin&lt;/div&gt;&lt;div&gt;- certificate transparancy&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;more speed&lt;/div&gt;&lt;div&gt;- chacha20 poly1305&lt;/div&gt;&lt;div&gt;new cyper for DjB which faster&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- Tls 1.3&lt;/div&gt;&lt;div&gt;encript the handshake&lt;/div&gt;&lt;div&gt;reduce handshake latency&lt;/div&gt;&lt;div&gt;improve crypto&lt;/div&gt;&lt;div&gt;start now end eoy&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;howmyssl.com&lt;/div&gt;&lt;div&gt;isTlsfasyet.com&lt;/div&gt;&lt;div&gt;bettercrypto.com&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/7833168741955981520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/7833168741955981520?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7833168741955981520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7833168741955981520'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-25-tls.html' title='WDC 2.5 TLS?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-375312183391864154</id><published>2014-05-02T11:59:00.001+10:00</published><updated>2014-05-02T12:13:52.240+10:00</updated><title type='text'>WDC 2.4 closures</title><content type='html'>&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/375312183391864154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/375312183391864154?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/375312183391864154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/375312183391864154'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-24-closures.html' title='WDC 2.4 closures'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-1220954673638626142</id><published>2014-05-02T11:57:00.001+10:00</published><updated>2014-05-02T11:59:36.043+10:00</updated><title type='text'>WDC 2.3 ES6 Data strutures</title><content type='html'>ES6 data structure&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-object&lt;/div&gt;&lt;div&gt;{}&lt;/div&gt;&lt;div&gt;[&quot;key&quot;] = test&lt;/div&gt;&lt;div&gt;is it data structure or inheritance?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-array&lt;/div&gt;&lt;div&gt;construct from &quot;from&quot; methid&lt;/div&gt;&lt;div&gt;Array.from()&lt;/div&gt;&lt;div&gt;push&lt;/div&gt;&lt;div&gt;slice&lt;/div&gt;&lt;div&gt;pop&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;new data structure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- set&lt;/div&gt;&lt;div&gt;bucket of unique values&lt;/div&gt;&lt;div&gt;no duplicates&lt;/div&gt;&lt;div&gt;new Set()&lt;/div&gt;&lt;div&gt;.add();&lt;/div&gt;&lt;div&gt;.has()&lt;/div&gt;&lt;div&gt;.delete()&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- maps (like dictionary) or relationship&lt;/div&gt;&lt;div&gt;new Maps)&lt;/div&gt;&lt;div&gt;.set(str,str)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- weakMap (map without memory leak)&lt;/div&gt;&lt;div&gt;similar to map&lt;/div&gt;&lt;div&gt;only obj that u can map&lt;/div&gt;&lt;div&gt;references as weakly held&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;e.g if using map which reference other obj. and we remove it. then there is memory leak&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;easy way to write not to not memory leak&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-weakSet (no memory leak set)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-iterators&lt;/div&gt;&lt;div&gt;array.entries()&lt;/div&gt;&lt;div&gt;iterator.next()&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;for(var [index,value] of array.entries){}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;keys() values() are iterators&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;you can start using this by transfillers?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/1220954673638626142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/1220954673638626142?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1220954673638626142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/1220954673638626142'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-23-when-u-have-hammer-all-problems.html' title='WDC 2.3 ES6 Data strutures'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-9046555987358510305</id><published>2014-05-02T10:48:00.001+10:00</published><updated>2014-05-02T11:40:16.994+10:00</updated><title type='text'>WDC 2.2 async javascript pattern</title><content type='html'>&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/9046555987358510305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/9046555987358510305?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/9046555987358510305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/9046555987358510305'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-22-async-javascript-pattern.html' title='WDC 2.2 async javascript pattern'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-5648303599195083470</id><published>2014-05-02T09:57:00.001+10:00</published><updated>2014-05-02T10:11:56.651+10:00</updated><title type='text'>WDC 2.1 Offline first</title><content type='html'>demo about todo list.&lt;div&gt;when the server off, it doesn&#39;t sync until the server on again.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;offline problem&lt;/div&gt;&lt;div&gt;-trust problem.&lt;/div&gt;&lt;div&gt;i want to be sure that my data is there when i need it.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;taking screenshot of your app. because u dont trust the app e.g map&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-always online architecture&lt;/div&gt;&lt;div&gt;as mob user i want to use app with doesn&#39;t require to be online.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- my data isn&#39;t with me.&lt;/div&gt;&lt;div&gt;let me have a copy on my device&lt;/div&gt;&lt;div&gt;*always accessible personal data&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;rss reader should have bew dara un them when u open.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;obviously important data store locally.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;smart offline maps.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;offline first challenge&lt;/div&gt;&lt;div&gt;- save vs sync&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;give signal red yellow green about connection instead of loading gif&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-informing users about sync outcomes&lt;/div&gt;&lt;div&gt;e.g chat&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;award&lt;/div&gt;&lt;div&gt;- performance (zero latency)&lt;/div&gt;&lt;div&gt;- robust&lt;/div&gt;&lt;div&gt;- better experiences (save all time)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;is it worth it?&lt;/div&gt;&lt;div&gt;-more usage in mobile&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;we need to communicate better language to the user about offline first&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;check this link&lt;/div&gt;&lt;div&gt;http://hood.ie/#intro&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/5648303599195083470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/5648303599195083470?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/5648303599195083470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/5648303599195083470'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-21-offline-first.html' title='WDC 2.1 Offline first'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-72413307661483496</id><published>2014-05-01T23:55:00.002+10:00</published><updated>2014-05-01T23:56:21.027+10:00</updated><title type='text'>WDC Conference 2014 Summary slides by KK</title><content type='html'>Enjoy my interactive slides for this conference&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://kkurni.github.io/slides-wdc-2014/&quot;&gt;http://kkurni.github.io/slides-wdc-2014/&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/72413307661483496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/72413307661483496?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/72413307661483496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/72413307661483496'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/wdc-conference-2014-summary-slides-by-kk.html' title='WDC Conference 2014 Summary slides by KK'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-6991818144554066623</id><published>2014-05-01T16:27:00.001+10:00</published><updated>2014-05-01T22:11:14.191+10:00</updated><title type='text'>WDC 1.10 you dont know SVG</title><content type='html'>mostly the dont know svg&lt;br /&gt;
&lt;div&gt;
try to avoid it&lt;/div&gt;
&lt;div&gt;
change name - responsive graphics&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
snap.svg libraries&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
e.g make a accelorometer&lt;/div&gt;
&lt;div&gt;
flash make cpu 100 percent&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
the most powerful svg&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
- path&lt;/div&gt;
&lt;div&gt;
m50,50 move&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
l100 draw line&lt;/div&gt;
&lt;div&gt;
h500 draw horizontal&lt;/div&gt;
&lt;div&gt;
z close the path&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
the magic of &amp;lt;use&amp;gt; element&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
owesome is created a life copy of dom elements.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;circle ..&lt;/div&gt;
&lt;div&gt;
&amp;lt;use xlink:href..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
groups&lt;/div&gt;
&lt;div&gt;
better than container&lt;/div&gt;
&lt;div&gt;
it will create for total shape&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
pattern&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
masking and cliping, animation already been there long time ago before css&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
the fun part when combining it togather&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
e.g pattern and mask&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
text in the path..&lt;/div&gt;
&lt;div&gt;
powerful feature but never implemented in real life.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
u can use css in svg&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
nested svg inside svg&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
transformation&lt;/div&gt;
&lt;div&gt;
css transformation is originated from svg&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
demo&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
multimeter using svg&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
summary&lt;/div&gt;
&lt;div&gt;
- stop being affraid with svg&lt;/div&gt;
&lt;div&gt;
- web already have svg and u have been ignoring svg for a while&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
svg vs canvas faster?&lt;/div&gt;
&lt;div&gt;
like knive vs sword., go check for it..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
its all backup with dom level so if u create 100 balls running around, it will be slower because it has backup dom&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/6991818144554066623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/6991818144554066623?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/6991818144554066623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/6991818144554066623'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/web-direction-conf-day-110-you-dont.html' title='WDC 1.10 you dont know SVG'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-7007024603649512437</id><published>2014-05-01T16:23:00.001+10:00</published><updated>2014-05-01T22:11:02.105+10:00</updated><title type='text'>WDC 1.9 ecmascript 6 better js for the ambient webera</title><content type='html'>the ambient of computing era&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
- corporate - cobol, fortran&lt;/div&gt;
&lt;div&gt;
- personal - c++ family&lt;/div&gt;
&lt;div&gt;
- ambient - javascript&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
why js?&lt;/div&gt;
&lt;div&gt;
coz worse is better&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
- already there&lt;/div&gt;
&lt;div&gt;
- widest reach&lt;/div&gt;
&lt;div&gt;
- lowest risk&lt;/div&gt;
&lt;div&gt;
- write libs and apps once&lt;/div&gt;
&lt;div&gt;
- single knowledge and skillset&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
is it even possible to replace it?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
how does js evolved?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
invented in 10 days in may 1995&lt;/div&gt;
&lt;div&gt;
mocha- livescript- js&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
javascript cloned in microsoft ie3.0 jscript&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
standarization ecma scrjpt&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
called ecma becuse java is sun., js is microsoft&lt;/div&gt;
&lt;div&gt;
so use ecma for none owner naming&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
-- ecmascript?&lt;/div&gt;
&lt;div&gt;
ecmascript is the standard that define javascript&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
not part of w3c&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
js implementation&lt;/div&gt;
&lt;div&gt;
- google v8&lt;/div&gt;
&lt;div&gt;
- mozila spidermonkey&lt;/div&gt;
&lt;div&gt;
- microsoft chakra&lt;/div&gt;
&lt;div&gt;
- webkit jscore&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
2009 ecmascript 5 :&lt;/div&gt;
&lt;div&gt;
use strict - json, object.create, etc&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
2008 javascript performance problem.&lt;/div&gt;
&lt;div&gt;
2013 performance improved&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
2014 es6 almost done,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
es6 improvement&lt;/div&gt;
&lt;div&gt;
- more concise syntax&lt;/div&gt;
&lt;div&gt;
modules and sandkng boxing&lt;/div&gt;
&lt;div&gt;
class declaration&lt;/div&gt;
&lt;div&gt;
control abstraction&lt;/div&gt;
&lt;div&gt;
array comprehensions&lt;/div&gt;
&lt;div&gt;
promises&lt;/div&gt;
&lt;div&gt;
string interpolations&lt;/div&gt;
&lt;div&gt;
subclasses&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
tc39 its not like this..&lt;/div&gt;
&lt;div&gt;
and not like this..&lt;/div&gt;
&lt;div&gt;
google, ms, fb, netflix, safarj, jquery, ebay, yahoo, ie, intels&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
ecma design challenges&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
the closure in loop problem&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
foreach() objcallback(x)&lt;/div&gt;
&lt;div&gt;
obj.callback(x)&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
x will take the last.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
local scoping WTF&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
function(x,x)&lt;/div&gt;
&lt;div&gt;
var x&lt;/div&gt;
&lt;div&gt;
function x()&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
x()&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
so what x will be?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
why u need to worry about the edgecases?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
because it will work on the browser but not on other browser&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
how we fix?&lt;/div&gt;
&lt;div&gt;
closire in loop?&lt;/div&gt;
&lt;div&gt;
instead var using let&lt;/div&gt;
&lt;div&gt;
let p in x&lt;/div&gt;
&lt;div&gt;
let v = doSomethjbg (x,p)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
let will binding on scope variable&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
but want to avoid new let WTF&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
let x = 1&lt;/div&gt;
&lt;div&gt;
let x = 2&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
or&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
let x =&lt;/div&gt;
&lt;div&gt;
var x =&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
the solution, there will static error.&lt;/div&gt;
&lt;div&gt;
anybody shouldn&#39;t code this things.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
avoid inconsistent scoping WTF?&lt;/div&gt;
&lt;div&gt;
let x = 1&lt;/div&gt;
&lt;div&gt;
functionf ()&lt;/div&gt;
&lt;div&gt;
console log (x)&lt;/div&gt;
&lt;div&gt;
let x = 2&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
what will u get 1/ undefined / 2?&lt;/div&gt;
&lt;div&gt;
- never leaking scope.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
avoid bogus const&lt;/div&gt;
&lt;div&gt;
using const x = 3&lt;/div&gt;
&lt;div&gt;
will be an error&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
-- but u need it in forward declaration&lt;/div&gt;
&lt;div&gt;
e.g mutual function&lt;/div&gt;
&lt;div&gt;
r1 = f(r2)&lt;/div&gt;
&lt;div&gt;
r2 = f(r1)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
error vased upon time of actual access&lt;/div&gt;
&lt;div&gt;
nor upon position in source code&lt;/div&gt;
&lt;div&gt;
must be intialize before&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
what abt block scope function?&lt;/div&gt;
&lt;div&gt;
function g()&lt;/div&gt;
&lt;div&gt;
g()&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
browser agree it will applied after it declared&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
but also disageee how to handle if g is not declare and call on the top or in the block or outside the block&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
unfortunately browser agree violate block scoping&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
summary&lt;/div&gt;
&lt;div&gt;
its real&lt;/div&gt;
&lt;div&gt;
will be the future soon&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/7007024603649512437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/7007024603649512437?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7007024603649512437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/7007024603649512437'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/web-direction-conf-day-19-ecmascript-6.html' title='WDC 1.9 ecmascript 6 better js for the ambient webera'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-8153859996139075545</id><published>2014-05-01T14:48:00.001+10:00</published><updated>2014-05-01T22:10:55.596+10:00</updated><title type='text'>WDC 1.8 device Api</title><content type='html'>Small api which give device capabilities to browsers&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
work on chrome and firefox&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
where wild apis live?&lt;/div&gt;
&lt;div&gt;
- spec changes alot&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
highly change specs&lt;/div&gt;
&lt;div&gt;
- sensor api&lt;/div&gt;
&lt;div&gt;
- web nfc&lt;/div&gt;
&lt;div&gt;
- networj apis&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
sensor api?&lt;/div&gt;
&lt;div&gt;
temp, humidity, pressure&lt;/div&gt;
&lt;div&gt;
e.g content base on temperature&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
web nfc?&lt;/div&gt;
&lt;div&gt;
just in time capabilities&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
network api?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
-- settle down&lt;/div&gt;
&lt;div&gt;
- proximity&lt;/div&gt;
&lt;div&gt;
- battery status&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
proximity?&lt;/div&gt;
&lt;div&gt;
device promixity how close to other device&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
user event - if there is user near,&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
batterie status api?&lt;/div&gt;
&lt;div&gt;
current energy state&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
-- stable&lt;/div&gt;
&lt;div&gt;
- vibration&lt;/div&gt;
&lt;div&gt;
- ambient light&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
vibration?&lt;/div&gt;
&lt;div&gt;
navigator.vibrate(msec)&lt;/div&gt;
&lt;div&gt;
e.g form if there is error.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ambient light?&lt;/div&gt;
&lt;div&gt;
event obj- light&lt;/div&gt;
&lt;div&gt;
light level&lt;/div&gt;
&lt;div&gt;
e.g changing contract level at night or bright day&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
github.com/ajfisher/wdc&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/8153859996139075545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/8153859996139075545?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/8153859996139075545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/8153859996139075545'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/web-direction-conf-day-18-device-api.html' title='WDC 1.8 device Api'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-5960108894697154826</id><published>2014-05-01T14:15:00.001+10:00</published><updated>2014-05-01T22:10:49.871+10:00</updated><title type='text'>WDC 1.7 readable code</title><content type='html'>&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/5960108894697154826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/5960108894697154826?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/5960108894697154826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/5960108894697154826'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/webdirection-conf-day17-readable-code.html' title='WDC 1.7 readable code'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-2124899126046651082</id><published>2014-05-01T13:44:00.001+10:00</published><updated>2014-05-01T22:10:41.334+10:00</updated><title type='text'>WDC 1.6 controlling 3rd party scripts</title><content type='html'>types&lt;br /&gt;
&lt;div&gt;
- ads&lt;/div&gt;
&lt;div&gt;
- tracking&lt;/div&gt;
&lt;div&gt;
- social e.g discus, fb&lt;/div&gt;
&lt;div&gt;
- fonts&lt;/div&gt;
&lt;div&gt;
- libraries and framework&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
what the first #1 used 3rd script?&lt;/div&gt;
&lt;div&gt;
facebook.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
whats the issue?&lt;/div&gt;
&lt;div&gt;
performance&lt;/div&gt;
&lt;div&gt;
single point of failure&lt;/div&gt;
&lt;div&gt;
privacy&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
potential solutions?&lt;/div&gt;
&lt;div&gt;
safe snippet&lt;/div&gt;
&lt;div&gt;
caching and hosted libs&lt;/div&gt;
&lt;div&gt;
tools and initiatives&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
performance?&lt;/div&gt;
&lt;div&gt;
- slowdown ur homepage&lt;/div&gt;
&lt;div&gt;
the value u get must be greater than the performance hit u r taking&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
precription- the fastest is the better use look ads.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
e.g ymail vs gmail. ymail more ads&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
using no ads reduce 40%&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
single point of failure?&lt;/div&gt;
&lt;div&gt;
- will stops the function of page&lt;/div&gt;
&lt;div&gt;
script src=&quot;&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
will block the page after this script&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
e.g&lt;/div&gt;
&lt;div&gt;
twitter widget wont work in china&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
useful tool&lt;/div&gt;
&lt;div&gt;
spof-o-matic&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
u can debug and illustrate spof&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
solution&lt;/div&gt;
&lt;div&gt;
- put the code in the buttom&lt;/div&gt;
&lt;div&gt;
- using async or defer (load after)&lt;/div&gt;
&lt;div&gt;
- or load it manually using httprequest async&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
prevention&lt;/div&gt;
&lt;div&gt;
* protect urself with the help of tools&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
caching ?&lt;/div&gt;
&lt;div&gt;
dont always rely on it.&lt;/div&gt;
&lt;div&gt;
cache the script less so it there is error only last shorter&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
hosting cdn?&lt;/div&gt;
&lt;div&gt;
instead refer to cdn jquery&lt;/div&gt;
&lt;div&gt;
use the script if cdn available then use cdn if not than use local scripts&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
whats the verdict?&lt;/div&gt;
&lt;div&gt;
- use ur own cdn.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
privacy?&lt;/div&gt;
&lt;div&gt;
e.g like button&lt;/div&gt;
&lt;div&gt;
what they dont tell u? track, visited ip,etc&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
privacy hero solutions&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue Light&#39;, HelveticaNeue-Light, helvetica, arial, sans-serif;&quot;&gt;2 click solutions,(open search)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#39;Helvetica Neue Light&#39;, HelveticaNeue-Light, helvetica, arial, sans-serif;&quot;&gt;- click enable like button &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
solutions&lt;/div&gt;
&lt;div&gt;
-google use asyn scripts&lt;/div&gt;
&lt;div&gt;
-jsmanners (rating for scripts)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
summary&lt;/div&gt;
&lt;div&gt;
* before copy paste scripts&lt;/div&gt;
&lt;div&gt;
- refuse no async&lt;/div&gt;
&lt;div&gt;
- put risk in sla (uptime,etc)&lt;/div&gt;
&lt;div&gt;
- review jsmanner&lt;/div&gt;
&lt;div&gt;
- ask for server side options&lt;/div&gt;
&lt;div&gt;
- evaluate tag managers&lt;/div&gt;
&lt;div&gt;
- investigate hosted libs (cdn)&lt;/div&gt;
&lt;div&gt;
- monitors3x (use monitoring tools)&lt;/div&gt;
&lt;div&gt;
- provide non blocking code samples and simple&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;-webkit-text-size-adjust: auto; background-color: rgba(255, 255, 255, 0);&quot;&gt;bitly.iy/&lt;/span&gt;3rdparty-code-14&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/2124899126046651082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/2124899126046651082?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2124899126046651082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2124899126046651082'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/web-direction-conf-day-16-controlling.html' title='WDC 1.6 controlling 3rd party scripts'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-2929258426307032950</id><published>2014-05-01T13:40:00.001+10:00</published><updated>2014-05-01T18:52:07.315+10:00</updated><title type='text'>bootstrap or not?</title><content type='html'>for backend dev or css newbee&lt;div&gt;- love it&lt;/div&gt;&lt;div&gt;- all there&lt;/div&gt;&lt;div&gt;- very quick to implement&lt;/div&gt;&lt;div&gt;- pick and choose component base&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;for experience front end&lt;/div&gt;&lt;div&gt;- hate it&lt;/div&gt;&lt;div&gt;- its use for prototype&lt;/div&gt;&lt;div&gt;- hate all sites looks the same&lt;/div&gt;&lt;div&gt;- harder when u want to build custom stuff coz u do overidding it.&lt;/div&gt;&lt;div&gt;- like working on cms instead of custom site&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;--&amp;nbsp;&lt;/div&gt;&lt;div&gt;other framework to look at &#39;suit css&#39;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/2929258426307032950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/2929258426307032950?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2929258426307032950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/2929258426307032950'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/bootstrap-or-not.html' title='bootstrap or not?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-22121232.post-8495106104674210404</id><published>2014-05-01T13:18:00.001+10:00</published><updated>2014-05-01T22:10:34.890+10:00</updated><title type='text'>WDC 1 QA 1</title><content type='html'>when to use this new tecnologies?&lt;br /&gt;
&lt;div&gt;
can&#39;t do at work because need to support different browser&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
look for the standard and predict for the future.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
like to jump on earlier like css filter but it only low risk just presentation enhancement&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
how about flexbox? do u need to change implementation overtime&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
u can use solve with preprocessor to fallback&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
--&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;Copyleft by : Kurniawan Kurniawan
Email Address: kkurni@gmail.com&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kkurni.blogspot.com/feeds/8495106104674210404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/22121232/8495106104674210404?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/8495106104674210404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/22121232/posts/default/8495106104674210404'/><link rel='alternate' type='text/html' href='http://kkurni.blogspot.com/2014/05/webdirection-conf-day-1-qa-1_1.html' title='WDC 1 QA 1'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/12056200584493392094</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>