Douglas Ching's Posts - TechHui2024-03-19T03:00:00ZDouglas Chinghttp://www.techhui.com/profile/DouglasChinghttp://storage.ning.com/topology/rest/1.0/file/get/985771441?profile=original&width=48&height=48&crop=1%3A1http://www.techhui.com/profiles/blog/feed?user=2to47uv9r0s2u&xn_auth=noFree Developer Tools on Windowstag:www.techhui.com,2015-08-14:1702911:BlogPost:1353462015-08-14T03:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p>It used to be that to develop with Microsoft technologies developers would have to pay up for development tools if they wanted the best experience. These days with all the options developers have, getting someone to pay for tools can be difficult.<br></br> <br></br> Recently I wiped of one of my development machines and realized this is no longer the case while installing various tools. <br></br> <br></br> It's well known that Microsoft has been moving towards open sourcing many of their projects like…</p>
<p>It used to be that to develop with Microsoft technologies developers would have to pay up for development tools if they wanted the best experience. These days with all the options developers have, getting someone to pay for tools can be difficult.<br/> <br/> Recently I wiped of one of my development machines and realized this is no longer the case while installing various tools. <br/> <br/> It's well known that Microsoft has been moving towards open sourcing many of their projects like their .net framework, but beyond that they have also been providing more options for free tools and services. To be clear many of these free tools are aimed toward home users, individuals and small teams. Larger businesses still need to pay for the appropriate licensed product.<br/> <br/> <strong>Windows 10</strong></p>
<p>Microsoft has made Windows 10 a free upgrade (if you upgrade within the offer's time period) for individual users who have Windows 7 or Windows 8. When Windows 8 came out one of the major developer complaints is that in order to develop for Windows 8 and the new Windows Store you needed a machine with Windows 8. That meant buying a new computer or paying for a Windows 8 license. By making Windows 10 free for Windows 7 and 8 users Microsoft is trying to lower the barrier for developers.<br/> <br/> <strong>Visual Studio</strong><br/> <a href="http://www.visualstudio.com">http://www.visualstudio.com</a></p>
<p>I remember having to purchase Visual Studio or MSDN just to get Visual Studio. A free Visual Studio is not new. Ever since 2010 Microsoft has offered Express versions of Visual Studio, but they were always heavily restricted in features. At the end of 2014 Microsoft started offering Visual Studio Community 2013 for free. The Community edition is very close to the Professional version and can be used by "individual developers, open source projects, academic research, training, education and small professional teams". VS.net Community 2015 also includes features that allow developers to create Android and other non-Windows apps as well as Data Tools that have usually been reserved for the higher level versions.<br/> <br/> <strong>Visual Studio Code</strong><br/> <a href="http://www.visualstudio.com/products/code-vs.aspx">http://www.visualstudio.com/products/code-vs.aspx</a></p>
<p>Visual Studio Code is a code editor that is cross platform (Windows, OSX, Linux). It is not like Visual Studio. Instead it is similar to other code editors like Sublime, Atom and Brackets. It is based around the same code that the Atom editor (atom.io) uses. Why would someone use VS Code? The main reason would be because it is built to work well with ASP.NET 5 which is also planned to work on Windows, OSX and Linux when released. That's not to say it doesn't work well with other development frameworks. I've used VS Code to update Node, TypeScript and Python and it plays well with many other languages.<br/> <br/> <strong>SQL Server</strong><br/> <a href="http://www.microsoft.com/en-us/server-cloud/products/sql-server-editions/sql-server-express.aspx">http://www.microsoft.com/en-us/server-cloud/products/sql-server-editions/sql-server-express.aspx</a></p>
<p>SQL Server has always been a tough one to get for free. There has been various free versions available over the years, but they have always been very lacking and it's always been hard to get the management tools without getting your hands on one of the full versions. Over the years the Express version has gotten better and with the current SQL Server Express version developers can get functionality that is close to the full versions, but with restricted database size, CPU and memory utilization. They have also made available the management studio that allows developers to manage SQL databases.<br/> <br/> Of course SQL Server Express isn't going to include many of the advanced features of SQL Server. For developers who do need SQL Server that matches production environments closely Microsoft still sells SQL Server Developer edition <a href="http://www.microsoftstore.com/store/msusa/en_US/pdp/SQL-Server-2014-Developer-Edition/productID.298540400">http://www.microsoftstore.com/store/msusa/en_US/pdp/SQL-Server-2014-Developer-Edition/productID.298540400</a><br/> <br/> <strong>Azure</strong><br/> <a href="http://azure.microsoft.com">http://azure.microsoft.com</a></p>
<p>For developers who build web apps or services Microsoft offers some free Azure services. In particular you can publish 10 web sites to Azure for free. It's a good service to use for web site development if you don't want to pay for hosting.<br/> <br/> <strong>Other Great Tools</strong><br/> Besides the Microsoft backed tools above there are a lot of other free tools that I use.<br/> <br/> <strong>GitHub Desktop</strong><br/> <a href="https://desktop.github.com/">https://desktop.github.com/</a></p>
<p>Git has become the source control of choice for many developers. I like GitHub Destkop because it's easy to install and easy to use. If you are someone that doesn't like the command line this one is a good Git client, however it would still benefit you to learn the git command line commands.<br/> <br/> <strong>Atom</strong><br/> <a href="https://atom.io/">https://atom.io/</a></p>
<p>Atom has become my favorite code editor that is not a full fledged IDE.<br/> <br/> <strong>Notepad++</strong><br/> <a href="https://notepad-plus-plus.org/">https://notepad-plus-plus.org/</a></p>
<p>Every developer who has used Windows has probably downloaded Notepad++. It's the app I install to avoid having to use Notepad. Even though I don't use it for coding I like it as a quick editor.</p>
<p></p>
<p>I'd be interested in hearing if anyone has any other good developer tools for Windows or what tools developers on OSX and Linux love to use.</p>JavaScript Game Enginestag:www.techhui.com,2015-06-17:1702911:BlogPost:1343212015-06-17T21:52:54.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr"><span>Recently I’ve been interested in games created using JavaScript. JavaScript is everywhere and works with a lot of devices and platforms including mobile devices that run on iOS, Android, Windows and FirefoxOS. On the web seems that games using HTML and JavaScript have started to replace those using older technologies like Flash. Here is a list of JavaScript libraries that I have seen recommended for creating games. To compile this list I looked at libraries that are free,…</span></p>
<p dir="ltr"><span>Recently I’ve been interested in games created using JavaScript. JavaScript is everywhere and works with a lot of devices and platforms including mobile devices that run on iOS, Android, Windows and FirefoxOS. On the web seems that games using HTML and JavaScript have started to replace those using older technologies like Flash. Here is a list of JavaScript libraries that I have seen recommended for creating games. To compile this list I looked at libraries that are free, preferably open source, actively updated and focuses mainly on 2D.</span></p>
<p><span><span><br/><br/></span></span></p>
<p dir="ltr"><strong>CreateJS</strong></p>
<p dir="ltr"><a href="http://createjs.com/"><span>http://createjs.com/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>CreateJS is a suite of libraries that can be used to create interactive content using HTML5 and JavaScript. CreateJS is composed of several separate libraries: EaselJS, TweenJS, SoundJS and PreloadJS to handle functionality commonly needed in games and animation. Unlike the other libraries in this list CreateJS isn’t targeted at creating games. Instead it seem like it’s goal is closer to being a Flash replacement. It also has many integrations with tools. Adobe Flash CC is able to export directly to CreateJS.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>CraftyJS</strong></p>
<p dir="ltr"><a href="http://craftyjs.com/"><span>http://craftyjs.com/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>CraftyJS is a Javascript game engine that describes itself as a “flexible framework for Javascript games”. It features:</span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>OpenSource</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Works with all modern browsers including IE9</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Uses Cavas or DOM to render entities</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Small file size</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Sprit map support</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Collision detection</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><span><strong>Pixi.js</strong></span></p>
<p dir="ltr"><a href="https://github.com/GoodBoyDigital/pixi.js"><span>https://github.com/GoodBoyDigital/pixi.js</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Pixi.js is a lightweight 2D library that uses WebGL, falls back on Canvas and boasts fast performance for both. Some game engines make use of Pixi.js’ strong 2D support. Some of the features include:</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>Asset loader / sprite sheet loader</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Masking</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Filters</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Easy to use API</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Full mouse and multi-touch interaction</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>WebGL and Canvas rendering</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Texture atlases</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Kiwi.js</strong></p>
<p dir="ltr"><a href="http://www.kiwijs.org/"><span>http://www.kiwijs.org/</span></a></p>
<p dir="ltr"></p>
<p dir="ltr"><span>Kiwi.js is a fun and friendly open source HTML5 game engine. Some of Kiwi.js’ features include:</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>Canvas and WebGL rendering</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Support for spritesheets, texture atlases and individual images</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Entity/Component system</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Multitouch support</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>State management</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>File management and loading</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Melon.js</strong></p>
<p dir="ltr"><span><a href="http://melonjs.org/">http://melonjs.org/</a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Melon.js is a free, open source light weigh JavaScript game engine. Some of its features include:</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>Lightweight physic implementation</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Collision detection</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Tween effects</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Transition effects</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Basic particle system</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Spritesheet and packed texture support</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>State manager</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Tile map integration</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Panda</strong></p>
<p dir="ltr"><a href="http://www.pandajs.net/"><span>http://www.pandajs.net/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Panda is a free HTML5 game engine. It features:</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>Canvas/WebGL rendering</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Particle engine</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Tweening</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Physics engine</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Timers</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Sound manager</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Ability to organize code in modules</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Phaser</strong></p>
<p dir="ltr"><a href="https://phaser.io/"><span>https://phaser.io/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Phaser is a fast, free and fun open source framework for games. Phaser is popular on GitHub. One thing that interests me about Phaser is it is one of the few game engines that has a set up guide using TypeScript. Some of Phaser’s features include:</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>WebGL & Canvas</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Preloader</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Physics</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Sprites</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Animation</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Particles</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Tilemaps</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Camera</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Plugin system</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Quintus</strong></p>
<p dir="ltr"><a href="http://www.html5quintus.com/"><span>http://www.html5quintus.com/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Quintus is an “easy-to-learn, fun-to-use” JavaScript HTML5 game engine. Quintus seems to be a younger library, but I’ve seen it mentioned on several sites. Quintus also seems to cover the basics of a game engine, but is not as full-featured or refined as other game engines on this list.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Stage.js</strong></p>
<p dir="ltr"><a href="http://piqnt.com/stage.js/"><span>http://piqnt.com/stage.js/</span></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Stage.js is a 2D HTML5 JavaScript game engine that is lightweight, fast and open source. Stage.js seems to include many of the basics for a game engine including the game loop, events, support for mouse and touch, texture atlas, images, animation and tweening. </span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>In the future I hope to pick a few of these and hopefully one day create a simple game. If anyone knows of any good JavaScript game engines that are not on this list please let me know.</span></p>
<p><span> </span></p>A Look at Windows 10 Technical Preview Build 10061tag:www.techhui.com,2015-04-23:1702911:BlogPost:1343512015-04-23T22:50:38.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">In my <a href="http://www.techhui.com/profiles/blogs/windows-phone-10-tech-preview-and-experience-using-windows-phone" target="_blank">last blog post</a> I wrote about Windows 10 preview for phones. Yesterday Microsoft released the latest technical preview for Windows 10 on desktops, build 10061. With the rumored end of July release date of Windows 10 here is a look at where Windows 10 is today. The current build is the most refined one yet, but is still very buggy and…</p>
<p dir="ltr">In my <a href="http://www.techhui.com/profiles/blogs/windows-phone-10-tech-preview-and-experience-using-windows-phone" target="_blank">last blog post</a> I wrote about Windows 10 preview for phones. Yesterday Microsoft released the latest technical preview for Windows 10 on desktops, build 10061. With the rumored end of July release date of Windows 10 here is a look at where Windows 10 is today. The current build is the most refined one yet, but is still very buggy and hopefully many things will be fixed and updated before final release. One thing that is pretty neat about Windows 10 development is Microsoft released the builds early over the last year and has actually made updates based on user feedback.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Start Menu vs Start Page</strong></p>
<p dir="ltr"><span>The most noticeable change from Windows 8 to Windows 10 that people will look for is probably going to be the Start Menu. Windows 8 removed the Start Menu and replaced it with a Start Page and that did not go over very well.</span></p>
<p><span><span> </span></span></p>
<p><span><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396586803?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396586803?profile=original" width="600" class="align-center"></a></span></span></p>
<p></p>
<p dir="ltr"><span>In Windows 10 the Start Menu is back. It no longer takes up the entire screen. Users can resize the menu by dragging the edges. The left side of the menu acts more like the traditional Start Menu of Windows 7 with a list of recent applications and the ability to go to a list of all applications and the shutdown button. The right side of the menu functions like the Windows 8 Start Page, but within a smaller area.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Charms Are Gone, Replaced by Notifications Panel</strong></p>
<p dir="ltr"><span>The Charms Bar completely gone. It’s been replaced by the notifications panel. The notifications panel is similar to what you would see in Android, iOS or Windows Phone when you pull down from the top. It contains a list of recent notifications and an area with frequently used settings and toggles. This is almost completely different from what the Charms Bar did. The functionality of the Charms Bar got moved into the individual app windows instead.</span></p>
<p><span><span><br> <a href="http://storage.ning.com/topology/rest/1.0/file/get/396587440?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396587440?profile=original" width="283" class="align-center"></a><br></span></span></p>
<p></p>
<p dir="ltr"><strong>Multiple Destkops</strong></p>
<p dir="ltr"><span>Windows 10 finally introduces a native multiple desktop feature. Clicking on the multiple desktop icon in the taskbar opens up the multiple desktop window. The user can create as many desktops as they want and can also drag apps from one desktop to another.</span></p>
<p><span><span><br> <a href="http://storage.ning.com/topology/rest/1.0/file/get/396588506?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588506?profile=original" width="600" class="align-center"></a><br></span></span></p>
<p></p>
<p dir="ltr"><strong>Desktop vs Tablet Mode</strong></p>
<p dir="ltr"><span>One of the big problems with Windows 8 is how it attempted to combine desktops and tablets into a single UI. Based on what people say about Windows 8 I don’t think they got it right. Users ended up with a UI that either functioned like the Windows 7 UI or jumped into a full screen tablet mode for Windows Store Apps, completely separate from the desktop. You could work on both if you used the split view, but it was as if the desktop was contained in an app itself and felt a lot like using 2 separate OSes at the same time. This is Windows 8's view of using an app and the destkop:</span></p>
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396588606?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588606?profile=RESIZE_1024x1024" width="600" class="align-center"></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Windows 10 tries to fix this by bringing Windows Store apps into the desktop instead of having the entire desktop environment function like another store app. Windows 10 apps can now run in windows on the desktop alongside Windows desktop apps.</span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396589010?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396589010?profile=original" width="600" class="align-center"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Windows 10 also has a “Tablet mode” that detects if the device no longer as a keyboard and mouse attached and asks the user if they want to go into “Tablet mode”. The user can also go into this mode by toggling “Tablet mode” in the notifications area.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>In Tablet mode app, both desktop and store apps open in full screen. The desktop and task bar get cleared of icons and some UI elements become larger.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>In Tablet mode the user can use a split view similar to Windows 8.</span></p>
<p dir="ltr"></p>
<p dir="ltr"><span>The user can split two Windows Store apps.</span></p>
<p><img src="http://storage.ning.com/topology/rest/1.0/file/get/396590743?profile=original" width="600" class="align-center"></p>
<p dir="ltr"></p>
<p dir="ltr"><span>The user can split two desktop apps.</span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396591603?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396591603?profile=original" width="600" class="align-center"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>The user can split a store app and a desktop app.</span></p>
<p dir="ltr"><a href="http://imgur.com/Z80Hq2B"><img src="http://i.imgur.com/Z80Hq2B.png" title="source: imgur.com" class="align-center"></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Unlike in Windows 8 store apps and desktop apps are treated in a similar way. The user isn’t put into a situation where they are using the desktop within an app view.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>If the user exits Tablet mode all their apps are displayed accordingly back on the desktop.</span></p>
<p><span><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396589010?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396589010?profile=RESIZE_1024x1024" width="600" class="align-center"></a><br> <br></span></span></p>
<p dir="ltr"><strong>Cortana, Spartan, Apps</strong></p>
<p dir="ltr"><span>Cortana, the counterpart to Google’s Google Now and Apple’s Siri is going to be integrated into Windows 10’s Search. In theory Cortana will be able to keep you updated on things you are interested in across devices.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Windows 10 will include a new browser. Codenamed Spartan it is being developed as a more modern browser than IE that doesn’t maintain the backwards compatibility that has hindered IE’s development over the years. One of the highlights of the Spartan browser is the ability to use a pen to mark up pages and share them with others. It will also have a feature that formats articles into a more readable view (similar to Readability).</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Apps in Windows 10 will become more “universal”. In Windows 8 Windows Store apps could be developed to work on Windows Phone and Windows, but they were still largely separated. They could share code but had completely separated UI. In Windows 10 the lines between apps on desktops, laptops, tablets and phones will be further blurred. We will have to wait until Microsoft’s Build conference to find out more. Microsoft’s own Office, Email/Calendar and Maps apps are already built using the newer universal app model.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>I don’t know if what Microsoft does with Windows 10 will work well or be well received, but I’m interested in what they are attempting to do. As a consumer I like many of the features that are being added and I like that the 2 completely different UIs of Windows 8 is getting combined into a single more consistent UI. As a developer the ability to write a single app and have it run on phones, tablets and laptops/desktops is more compelling than what Microsoft pitched with Windows 8. Windows 10 is still just a tech preview and there are many bugs and issues. It looks like Microsoft has a lot of work ahead, but I’m looking forward to seeing the final Windows 10 build and I think it will be an improvement over Windows 8 from what I have seen so far.</span></p>
<p><span id="docs-internal-guid-5d1b6c19-e86a-8432-6638-6661da9fcd90"><br> <br> <br> <br> <br> <br></span></p>Windows Phone 10 Tech Preview and Experience Using Windows Phone for 2 Yearstag:www.techhui.com,2015-03-02:1702911:BlogPost:1334692015-03-02T15:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr"><span>Nearly 2 years ago I blogged about my</span> <a href="http://www.techhui.com/profiles/blogs/my-experiences-with-windows-phone-8"><span>experiences using Windows Phone for 6 months</span></a><span>. I’m back to update my impression of Windows Phone as a whole and also blog about Windows 10 for phones. Windows Phone has gone through several updates and in early February 2015 Microsoft released the first Tech Preview for Windows 10 on phones.…</span></p>
<p dir="ltr"><span>Nearly 2 years ago I blogged about my</span> <a href="http://www.techhui.com/profiles/blogs/my-experiences-with-windows-phone-8"><span>experiences using Windows Phone for 6 months</span></a><span>. I’m back to update my impression of Windows Phone as a whole and also blog about Windows 10 for phones. Windows Phone has gone through several updates and in early February 2015 Microsoft released the first Tech Preview for Windows 10 on phones.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>User Interface and Performance</strong></p>
<p>Two years ago Windows Phone’s UI was made up of a flat tile design. It still has that same design, but added more tile sizes, the ability to add a background and in a recent update, folders. The UI is still fluid and fast although on older devices it starts to stutter sometimes.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Live Tiles</strong></p>
<p>Live Tiles are still around and work about the same as before. Instead of the 3 sizes from 2 years ago tiles can be made very small, small, medium and large. Tiles can also be placed in a Live Folder and you can see tiny live tiles in that folder. </p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Kid’s Corner</strong></p>
<p>Kid’s Corner was a differentiating feature for Windows Phone 8 2 years ago and it’s still around, but hasn’t been updated. It still allows the user to set specific apps to a separate home screen so that people using your phone don’t have full access to all of your phone’s features and apps. I still find it useful, however Microsoft later added a similar feature called App Corner which does nearly the same thing. Although it works okay I don’t know why there is a Kid’s Corner and an App Corner now.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Lenses</strong></p>
<p>Windows Phone has a concept of a lens. When using the camera app you can open up a selection of lenses which are other apps that the camera can hook into. Over two years companies have created additional lenses that add functionality to the basic camera app.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>People Hub</strong></p>
<p>When Windows Phone 8 first came out People Hub was one of the talking points. It was supposed to make Windows Phone personal and make it easier for users to get to their contact fast. From People Hub a user could get to a contact and then interact with them directly via phone, email, Facebook, Twitter without opening separate apps. Unfortunately People Hub has gone away. Hubs in general have been deprecated and Windows Phone seems to be moving away from the integration it first started with.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Notification Center</strong></p>
<p>Windows Phone 8 started off without any notification center. Users were expected to rely on the Live Tiles that show updates about emails, posts and other app happenings. Over the last 2 years Microsoft introduced a notification center that follows how most other mobile OSes manage notifications.</p>
<p dir="ltr"></p>
<p dir="ltr"><strong>Cortana</strong></p>
<p dir="ltr">Cortana is a virtual assistant for Windows Phone. Like other virtual assistants you can speak to Cortana and it will speak back with answers. Cortana will also suggest news and events, show you the weather, alert you to traffic conditions and do many of the types of things you would expect from a virtual assistant. I think it has been a nice addition to Windows Phone and look forward to further integration. It seems like Microsoft is interested in making Cortana sort of a hub between users and their data. It is even coming to Windows 10 on desktops.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Apps</strong></p>
<p>Two years ago Windows Phone had 145,000 apps in the store. Today they have 300,000. The number of apps continues to be a sticking point for users considering Windows Phone. From my personal use I have seen the app situation improve quite a lot. From having very little choice in the beginning to being a solid 3rd app ecosystem after iOS and Android it has been interesting to see how the Windows App store grows. One thing that I enjoyed is the introduction of universal apps in the Windows Store. These apps are available for both Windows Phone and Windows 8. I always look for apps that are usable on both Windows 8 and Windows Phone. Windows 10 promises to bring more app unification for both consumers and developers.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Windows 10 For Phone Technical Preview</strong></p>
<p><strong> </strong></p>
<p dir="ltr"><span>That brings us to the Windows 10 for phone technical preview. With Windows 10 Microsoft is trying to unify all their operating systems. They recently released the first technical preview for Windows 10 for phones. I was planning to only focus on this for this post, but realized there isn’t much to show for now. Here are some things that are different:</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Home Screen</strong></p>
<p>The Windows 10 home screen looks and acts similar to the Windows 8 home screen. It adds the ability to put a background behind tiles versus Windows Phone 8’s background within tiles. It also adds additional tile sizes with a larger vertical tile and an extra large tile size. Below from left to right: Windows Phone 8, Windows Phone 8.1 and Windows 10 for phones home screens.</p>
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594351?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594351?profile=original" width="644" class="align-full"></a></p>
<p></p>
<p dir="ltr">Windows 10 adds additional options in the notification center. Windows Phone 8 allowed for 4-5 quick options in the notification. Windows 10 allows for multiple rows of options. Below the notification center for Windows Phone 8 and Windows 10 for phones.</p>
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594645?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594645?profile=original" width="417" class="align-full"></a></p>
<p dir="ltr"></p>
<p>In addition the toasts in Windows 10 are planned to be actionable and individual notifications can be dismissed. In Windows Phone 8 all notifications under a group had to be cleared at the same time and toasts could only be dismissed or linked to open the notifying app.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>In Windows 10 the system options are organized into separate categories instead of displayed in a large list. </span></p>
<p><span><span><br> <a href="http://storage.ning.com/topology/rest/1.0/file/get/396595456?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396595456?profile=original" width="379" class="align-full"></a><br></span></span></p>
<p>That is about it for the first technical preview. I'm sure there have been many changes under the hood. There are many other small UI updates and inconsistancies, but since this is a tech preview the UI is most likely going to change before final release.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>One trend that people have been noticing about Windows 10 for phones is that Microsoft is moving away from the their typography heavy UI and moving more toward how UI in Android and iOS is done. Perhaps this is to make Windows UI more mainstream so that users coming from other platforms feel more comfortable with the UI and developers don’t feel that they need to redo their entire UI in order to bring their apps to Windows.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>It will be interesting to see how Windows 10 for phones changes over the next few months. As a user I’m looking forward to Windows 10 and I plan to stick with a Windows Phone for now. As a developer we are going to see a lot come out at BUILD this year. I’m hopeful that Microsoft will be able to improve the APIs and tools so developers can build more powerful apps that work across all Windows 10 devices from phones to tablets, laptops, desktops and XBox.</span></p>Programming for Kidstag:www.techhui.com,2015-01-04:1702911:BlogPost:1323312015-01-04T23:05:58.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">One thing I noticed in 2014 was an overall push to “learn to code”. Today computers are everywhere and we are only getting more reliant on them every day. It makes sense that more people and kids in particular are being exposed to programming. Here are some resources that I have found very easy to set up if you want to teach your kids about programming. Since I mainly use Windows this will be mainly a Windows centric post. Also because this is a list of resources for kids I…</p>
<p dir="ltr">One thing I noticed in 2014 was an overall push to “learn to code”. Today computers are everywhere and we are only getting more reliant on them every day. It makes sense that more people and kids in particular are being exposed to programming. Here are some resources that I have found very easy to set up if you want to teach your kids about programming. Since I mainly use Windows this will be mainly a Windows centric post. Also because this is a list of resources for kids I am focusing on things that focus on at least programming concepts and don’t put emphasis on the actual typing of code or syntax.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>code.org</strong></p>
<p dir="ltr"><span>First of all code.org is one of the best places to go to learn the basics of coding. It contains simple and fun videos, games and online workshops as well as links to other apps and resources. Their “Code with Anna and Elsa” (from Frozen) is a really cool tool for kids to learn about coding. You’ll see many of the below resources have been featured on code.org.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Scratch</strong></p>
<p dir="ltr"><a href="http://scratch.mit.edu/"><span>http://scratch.mit.edu/</span></a></p>
<p dir="ltr"><span>Scratch is probably one of the more well-known and popular tools for teaching kids to code. Multimedia (images, sounds) are imported into the “stage”. The coding is done using blocks that can be dragged to the “Scripts” area. One of the more compelling elements of Scratch is that it is easy to copy someone else’s work and build on it. Work can also be easily displayed online for all to see.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594337?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594337?profile=RESIZE_1024x1024" width="750" class="align-full"></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Parent friendliness: Scratch is free and everything is done in the browser so there is no application you need to install, although it does require the Flash plugin for your browser.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Lightbot</strong></p>
<p dir="ltr"><span><a href="http://lightbot.com/">http://lightbot.com/</a></span></p>
<p dir="ltr"><span>Lightbot is a programming puzzle game that is available on various platforms. It teaches programming concepts rather than actual coding. If your kid likes games more than he/she like creating then this app could be a good place to start.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396595648?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396595648?profile=original" width="708" class="align-full"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Parent friendliness: Lightbot ranges from around $2.99 - $4.99 on the various app stores. There is a Lightbot Jr. app for younger kids (under 9). There is also a free limited Flash version that can be tried out in a browser. Aside from the small purchase price there is nothing parents need to do to set things up for their kids.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Kodu Game Lab</span></p>
<p dir="ltr"><a href="http://www.kodugamelab.com/"><span>http://www.kodugamelab.com/</span></a></p>
<p dir="ltr"><span>Kodu is a Windows app made specifically to create games. It focuses on game design and programming using visual commands.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396602044?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396602044?profile=RESIZE_1024x1024" width="750" class="align-full"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Parent friendliness: Kodu is free, but only for Windows. There is an XBox version for $5. The XBox and Windows Store versions are simply install and play. Anyone can set it up. The main Kodu app that runs on Windows desktop requires some prerequisite installs which most Windows computers should already have.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Project Spark</strong></p>
<p dir="ltr"><a href="http://welcome.projectspark.com/"><span>http://welcome.projectspark.com/</span></a></p>
<p dir="ltr"><span>Project Spark is another Windows app where kids can create worlds and games. It’s like a more refined and advanced Kodu specifically targeted toward the XBox crowd. Like Kodu it emphasises game design, but also includes ample programming concepts. Users can create games and then share them online with others. The big draw I think is the potential to create games that look and play like modern PC games and then share them with others or play others creations.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396603917?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396603917?profile=RESIZE_1024x1024" width="750" class="align-full"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Parent friendliness: It’s free on XBox and Windows. The catch is there are packs up for purchase that offer additional content and premade games. It also has fairly high requirements on Windows as the graphics it uses are similar to a modern PC game.</span></p>
<p><span id="docs-internal-guid-3312bf35-b71d-7d29-e7ac-9e6c9c3b84b7"><br></span></p>
<p dir="ltr"><strong>TouchDevelop</strong></p>
<p dir="ltr"><span><a href="https://www.touchdevelop.com/">https://www.touchdevelop.com/</a></span></p>
<p dir="ltr"><span>TouchDevelop is a bit more complicated than the resources above. Instead of using blocks of code or visual programming TouchDevelop shows users commands that are closer to actual code. What is pretty neat about TouchDevelop is that there are 3 difficulty levels. Beginners work with code that is similar to how Scratch works with limited options and commands. Intermediate users can work with more coding options and and Expert users get the ability to use “Javascripty” code. There are several tutorials that show how to create simply mobile and browser based games. Projects can be published to the web or published to mobile app stores using Windows App Studio or Apache Cordova.<br> <br></span></p>
<p><span><span><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396604166?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396604166?profile=RESIZE_1024x1024" width="750" class="align-full"></a></span></span></span></p>
<p></p>
<p dir="ltr"></p>
<p dir="ltr"><span>Parent friendliness: It is all browser based, free and nothing needs to be installed. Creating apps using TouchDevelop is far more complicated than the options above, but it’s also much closer to the type of coding your kids will start to see if they move on from visual tools into more advanced programming tools.</span></p>
<p></p>
<p></p>10 of My Debugging Trickstag:www.techhui.com,2014-11-09:1702911:BlogPost:1319332014-11-09T10:06:07.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">Being able to solve problems and fix bugs is probably high on the list of things that make a programmer a good programmer. These days programming is assisted with many tools and techniques. Stepping through code using advanced IDEs and debuggers find many issues before they become issues. Intellisense, code completion and syntax highlighting also reduce bugs before they can become bugs. Exception handling and error logging help a lot when issues occur in programs. Testing…</p>
<p dir="ltr">Being able to solve problems and fix bugs is probably high on the list of things that make a programmer a good programmer. These days programming is assisted with many tools and techniques. Stepping through code using advanced IDEs and debuggers find many issues before they become issues. Intellisense, code completion and syntax highlighting also reduce bugs before they can become bugs. Exception handling and error logging help a lot when issues occur in programs. Testing frameworks and methodologies help us to validate code and functionality in addition to lessening the introduction of additional bugs.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>What happens when all of that fails or when we are given an application we are not familiar with or is not debug or test friendly? What types of non technical techniques do you use when attacking a difficult issue? Here are 10 things I find myself doing when confronted with a hard to find bug.</span></p>
<p><span><span> </span></span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>Compare files and environment. Make sure your code is exactly the same as the code where the issue takes place. If possible make sure your environment is also the same. Pay attention to configuration and versioning. Sometimes it’s not the code, but mismatched versions.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Try to keep things simple. Some of the worse bugs are the ones with simple solutions. If you find yourself coming up with complicated solutions to fix a bug step back and consider whether things really need to be complicated.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Don’t rush. Not many people work better when they rush. Take enough time so that you don’t skip over obvious issues.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Keep your users in mind. As a programmer we tend to know how a program works and will often avoid doing things that will break things. Trying to remember that users will always do things in a way that was not expected can help to open up possible issues. Make sure to get detailed reproduction steps and details about the user’s environment. I always try to remember the Who, What, When, Where, Why and Hows of an issue.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Remember that if something is going wrong the majority of the time it’s not the computer’s fault. We may sometimes come across an error where we think it’s an issue with the framework or something out of our control. Unfortunately it’s more likely there is an error in our code. Remembering this can prevent going down paths not related to the issue.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Do things an alternate way. If the functionality is simple enough explore doing it an alternate way. This will help to uncover what the program needs to do. If your alternate way exhibits the same issues you can narrow down the causes. Even better if your alternate way ends up working. Even if you don’t write any alternative code, just thinking about it can help to solve the issue.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Break things down. If you have unfamiliar or complicated code it may help to break it down into its simplest parts. Take out everything except for the basic functionality and build back up to see where an error is coming from. Sometimes it helps to isolate code. Take it out of the application and put it into an empty application to see what happens.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Have someone else look at the issue. Sometimes focusing on an issue results in focusing on an entirely wrong area or becoming blind to an obvious bug. Having someone else look at the issue can bring new things to light.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Break things. Breaking code can sometimes help you to understand code far better than only reading or stepping through code. Like reading a book we tend to overlook things that we have seen countless times before. Breaking something on purpose can help to break out of the mentality that you think you know how something is working and open up new ways to attack the problem.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Take some time away or sleep on it. This may not be an ideal method when you have a deadline, but many times taking a break from trying to fix a bug results in fresh perspective needed to find the solution. Resting your brain and destressing also helps.</span></p>
</li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Do you have any techniques that you use to make those invisible bugs visible?</span></p>
<p><span id="docs-internal-guid-1f411ed0-9401-0133-845d-d03682035d7e"><br/><br/></span></p>ASP.NET vNext - Some of the Things I Look Forward Totag:www.techhui.com,2014-09-05:1702911:BlogPost:1315532014-09-05T03:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">I like to try to keep up with new technologies. Being a developer who has used Microsoft development tools all my career I’m always interested in seeing what is coming next. Recently Microsoft unveiled ASP.NET vNext and it seems to be their most ambitious version of ASP.NET yet.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Here are some of the things I’m looking forward to in ASP.NET vNext</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Build Not…</strong></p>
<p dir="ltr">I like to try to keep up with new technologies. Being a developer who has used Microsoft development tools all my career I’m always interested in seeing what is coming next. Recently Microsoft unveiled ASP.NET vNext and it seems to be their most ambitious version of ASP.NET yet.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Here are some of the things I’m looking forward to in ASP.NET vNext</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Build Not Needed</strong></p>
<p dir="ltr"><span>Developers will no longer need to manually build and compile ASP.NET applications. The new .NET compiler will build projects in memory. A developer will be able to change a file, hit refresh in the browser and see the changes. ASP.NET could always do something like this for certain project types, but not with MVC. Now all ASP.NET projects will have this ability to not require a build to disk as a prerequisite for deployment. This also opens up the possibility of developing entirely in the cloud in a more streamlined manner than what is possible now.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>New Project System</strong></p>
<p dir="ltr"><span>The new project system is not Visual Studio specific. No longer are all your project files listed in a .proj file. For anyone who has experienced version and merge conflicts in Visual Studio’s project files this should be a welcome change. I believe every Microsoft developer has been caught adding files to a project, but not pushing the project changes to source control, causing compile errors when your Continuous Delivery system (or another developer) tries to compile the project. Now the project file is used more for keeping track of dependencies and more general project settings.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Ability to Deploy Side-by-Side Versions</strong></p>
<p dir="ltr"><span>Currently if you want to use .net 4.5.x you need to install it on the server for the entire server. With ASP.NET vNext you can run your web sites with different versions of the framework. This also means web sites will be more insulated from changes on the server and should not break as many things if an errant patch is deployed to the server.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Cloud Optimized Runtime</strong></p>
<p dir="ltr"><span>vNext will allow web applications to only require the libraries it needs in order to run. Previously you needed to install the entire .NET framework for ASP.NET applications (about 200MB). Now you can isolate a web site so it only contains the assemblies needed (about 11MB).</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Develop Anywhere, Cross Platform</strong></p>
<p dir="ltr"><span>Developers will be able to develop ASP.NET application on Windows, Mac and Linux. Visual Studio will no longer be required to run an ASP.NET application. There is already a Sublime Text 3 extension for ASP.NET vNext and example on Mac OSX</span> <a href="https://github.com/ligershark/Kulture"><span>https://github.com/ligershark/Kulture</span></a> <span>and an example video: <a href="https://www.youtube.com/watch?v=1g2I9SJZ5XI">https://www.youtube.com/watch?v=1g2I9SJZ5XI</a>. Warning, do not install the CTP bits on a machine you rely on. Everything is all still early in development.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>MVC, WebAPI and WebPages = MVC6</strong></p>
<p dir="ltr"><span>These 3 frameworks are very similar, but different enough that it’s not a seamless experience if you want to use them all together. In ASP.NET vNext they will all be part of MVC6. In vNext with these 3 combined we will hopefully have a smoother development experience with more uniform code and less confusion as to what goes where.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>What Happened to WebForms?</strong></p>
<p dir="ltr"><span>I don’t dislike WebForms, but there is no denying that while it is still useful as an intranet LOB web application framework, it's not the best choice for building public facing web sites. While WebForms will probably still be around in vNext it’s interesting to note that everything about vNext so far has focused on ASP.NET MVC. It’s not clear how WebForms will be handled, but it is clear that ASP.NET MVC is the primary focus at the moment.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Along with previous announcements of a new open source .NET compiler</span> <a href="http://roslyn.codeplex.com/"><span>http://roslyn.codeplex.com/</span></a><span>, a new JIT compiler RyuJIT and updates to Visual Studio to support things like NPM, Grunt, solid Git integration and the increasingly numerous packages that can be had from NuGet there are a lot of things for an ASP.NET developer to look forward to. </span></p>
<p dir="ltr">ASP.NET vNext is in the "Community Technology Preview" (CTP) stage with a RTM sometime in 2015.</p>
<p><span> </span></p>Observing Tech in Japantag:www.techhui.com,2014-07-09:1702911:BlogPost:1302142014-07-09T21:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr"><span><a href="http://en.wikipedia.org/wiki/Akihabara" target="_blank"><img class="align-left" src="http://storage.ning.com/topology/rest/1.0/file/get/396595453?profile=RESIZE_480x480" width="355"></img></a> Recently I visited Japan. The last time I visited was in 2010. Japan has always been known for it’s electronics and technology so I was looking forward to seeing how it’s changed in four years and how it differs from the U.S. These are just my personal observations so they may not be indicative of actual trends or market share figures.…</span></p>
<p dir="ltr"><span><a target="_blank" href="http://en.wikipedia.org/wiki/Akihabara"><img class="align-left" src="http://storage.ning.com/topology/rest/1.0/file/get/396595453?profile=RESIZE_480x480" width="355"></a>Recently I visited Japan. The last time I visited was in 2010. Japan has always been known for it’s electronics and technology so I was looking forward to seeing how it’s changed in four years and how it differs from the U.S. These are just my personal observations so they may not be indicative of actual trends or market share figures.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Shopping:</strong></p>
<p dir="ltr"><span>Akihabara has always been known as the place in Japan to go if you want to see a lot of gadgets and electronics. That hasn’t changed, but I noticed that places like Shibuya, Shinjuku and other larger districts are also good places to see lots of electronics. Akihabara is still the place to go if you are looking for specialty toys or hobby products not sold in normal department stores. Like 4 years ago the thing that stands out to me the most is that the large stores take up space vertically instead of horizontally like in the U.S. Each floor in a building might contain a few departments from household good, sporting goods, computers, cell phones, toys and games.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Computers:</strong></p>
<p dir="ltr"><span>The biggest change I noticed since 4 years ago is that while Windows PCs still take up the majority of store space there are more areas that sell Apple products. In particular iPads and Macbooks. Companies like NEC and Panasonic which are nearly non-existent in the U.S. have a lot of floor space. There were also a surprising number of small full-featured notebooks that include DVD drives. That surprised me since the trend in the U.S. has been toward smaller, thinner ultrabooks with no optical drive.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Cell Phones:</strong></p>
<p dir="ltr"><span>The biggest difference I noticed from 4 years ago is that smartphones have taken over. 4 years ago I was surprised that Japan did not have many smartphones and that most people still used flip phones. The flip phones at that time were very advanced compared to the ones in the U.S. They were probably closer to smartphones with large color screens than the dumbphones we imagine when we think of our old flip style cell phones and that might be one reason why they held on so long. While there were still people using flip phones I think the majority of people I saw on subways and trains were using an Android or iPhone. Apparently smartphones have not only taken over the phone market, but I noticed that not many people used handheld gaming devices like gameboys on the train anymore. Most people were glued to their smartphone. There were quite a lot of advertisements for mobile games on TV and on posters. In Clash of Clans and Puzzles and Dragons are heavily marketed at the moment. Android seems to have exploded in market share in Japan just like it has in the U.S. Also like in the U.S. Windows Phones basically do not exist. In Japan they aren’t even sold in stores.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Tablets:</strong></p>
<p dir="ltr"><span>The second most used device I saw on subways and trains were tablets. Although most were iPads and Android tablets I saw quite a few with Windows tablets as well. Almost all were 7”-8” tablets as opposed to 10” tablets. It was mostly adults using the tablets, where in the U.S. I usually notice that kids carry around tablets just as much as adults. In stores I would say that Android tablets take up the most floor space, but iPads and Windows tablets are also well represented.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Arcades:</strong></p>
<p dir="ltr"><span>In the U.S. arcades are fading away, but in Japan they are still everywhere. After reading <a href="http://www.techhui.com/profiles/blogs/tokyo-observations-coin-op-card-games" target="_blank">Tokyo Observations: Coin-op Card Games</a></span><span> I was looking forward to checking out a few arcades. 4 years ago I did not remember seeing many of these games, but now there are a lot. There are card based arcade games for Pokemon, Kamen Rider and other franchises I did not recognize, but by far the most popular arcade card game for kids at the moment is for a series called Yokai Watch. Some arcades had lines for people waiting to play that game. Japan also has a lot of sit down and shooting games where you have an actual steering wheel or gun to operate the game with. The rest of the games were mainly crane based prize games. There were not many traditional arcade games and perhaps that is one reason arcades still do well in Japan as they offer games that people can’t play at home. I think that card based arcade games could do well in the U.S. given how popular card games like Magic and Pokemon have been.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>Games:</strong></p>
<p dir="ltr"><span>I mentioned earlier that I didn’t see as many people playing with portable gaming devices as I did 4 years ago, however that doesn’t mean they don’t carry them around. While in Japan I carried around my Nintendo 3DS and it has a feature to tag people as you pass them in the street. In Japan within an hour would have 10 tags. 10 is the maximum you can get until you clear them out so I think that if I continually checked my tags during the day I would have been able to get a hundred tags. In Hawaii I rarely get any tags. Obviously people still carry around their gaming devices, but perhaps don’t bring them out in public as much as they used to.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><strong>WiFi:</strong></p>
<p dir="ltr"><span>WiFi access has changed a lot in 4 years. 4 years ago I could not catch many wifi signals in Japan, but during my recent trip every single place had some type of wifi access point. Most of the time they were paid hotspots, but sometimes they were public. In particular in addition to the airports, hotels, restaurants and shopping centers had open hotspots or secure hotspots for customers. Still, if you need reliable mobile data you’ll probably want to look at rending a mobile hotspot just like in the U.S.</span></p>
<p dir="ltr"><span><span> </span></span></p>
<p dir="ltr"><span>I wonder if what I observed in Japan is similar to what other people have observed? Certainly my observations were skewed by the mainly touristy places I visited. It was interesting to see how things have changed in just a few years and how mobile tech continues to grow and dominate our lives. Looking forward it will be interesting to see if wearable tech changes our lives as much as cell phones and tablets.</span></p>
<p dir="ltr"><span id="docs-internal-guid-d9756551-1cf5-b2c3-2db8-43508abe0f62"><br> <br></span></p>Windows App Studio Reviewtag:www.techhui.com,2014-05-16:1702911:BlogPost:1296852014-05-16T19:16:13.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">Create apps for Windows 8 and Windows Phone 8.1 without coding.</p>
<p dir="ltr"></p>
<p dir="ltr">The biggest issue facing Windows and Windows Phone is the relative scarcity of apps compared to Android and iOS. Microsoft faces an uphill battle in attempting to sway companies and mobile developers into building apps for Windows Phone. </p>
<p dir="ltr"></p>
<p dir="ltr">One of the offerings created to help close this gap is called App Studio. App Studio was…</p>
<p dir="ltr">Create apps for Windows 8 and Windows Phone 8.1 without coding.</p>
<p dir="ltr"></p>
<p dir="ltr">The biggest issue facing Windows and Windows Phone is the relative scarcity of apps compared to Android and iOS. Microsoft faces an uphill battle in attempting to sway companies and mobile developers into building apps for Windows Phone. </p>
<p dir="ltr"></p>
<p dir="ltr">One of the offerings created to help close this gap is called App Studio. App Studio was first released last year along with Windows Phone 8. Earlier this year App Studio received an update in conjunction with the announcement of Windows Phone 8.1. Windows Phone 8.1 allows developers to target both Windows 8.1 and Windows Phone 8.1 with what Microsoft calls “Universal Apps”. App Studio’s recent update allows for the creation of informational apps for both Windows Phone 8.1 and Windows 8.1.</p>
<p dir="ltr"></p>
<p dir="ltr"><strong>Who is it for?</strong></p>
<p dir="ltr">App Studio is most useful for informational apps. Companies, event organizers, conventions and bloggers can use App Studio to create a Windows and Windows Phone app to supplement their web site. As long as the app sticks to informational content think of App Studio as similar to a basic web site builder, but for mobile apps. For developers App Studio could be a good starting point for a more complex app. Generating the app provides the source code which can be inspected, learned from and built upon.</p>
<p dir="ltr"></p>
<p dir="ltr">App Studio offers several templates to start with, hinting at what types of apps are possible:</p>
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396592637?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396592637?profile=RESIZE_1024x1024" width="750" class="align-center"></a></p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Features</strong></p>
<p dir="ltr">Create up to 6 sections of main content. Content can consist of Rss feeds, Html, a Youtube search or channel, a Flickr user's photostream or search, a Bing search, a Facebook page feed, an Instagram tag, a collection or a menu.</p>
<p><span><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594333?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594333?profile=RESIZE_1024x1024" width="750" class="align-center"></a></span></span></p>
<ol>
<li>The Rss feed displays an Rss feed. </li>
<li>Html allows the addition of Html content, like a welcome or about page. </li>
<li>The Youtube section displays a list of Youtube videos in a channel or based on a search. </li>
<li>The Flickr section displays a Flickr user's photostream or a Flickr search. </li>
<li>The Bing section displays a Bing search result.</li>
<li>The Facebook section displays the feed of a Facebook page.</li>
<li>The Instagram section displays images based on an Instagram tag. </li>
</ol>
<p></p>
<p>The collection section allows you to create a list of items. You can create custom fields for the list. Product catalogs, company listings and event schedules are some examples of what a list might be used for. Collections can be stored in the app or in the cloud. If stored in the app they will be available even when the device has no internet connection, however they cannot be updated unless the app is updated on the user’s device. If stored in the cloud the information can be updated without an app update, but won’t be available without an internet connection.</p>
<p></p>
<p>The menu allows for additional sections if 6 main sections are not enough.</p>
<p><span><span> </span></span></p>
<p dir="ltr"><strong>Themes, Tiles and your Publish Info.</strong></p>
<p><strong> </strong></p>
<p dir="ltr"><span>Using the Themes management the app's theme can be updated. Background, Foreground and Application bar color can be modified. A background image may also be uploaded. Unfortunately only a single background image can be uploaded for the entire app.</span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396595657?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396595657?profile=RESIZE_1024x1024" width="750" class="align-center"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>The Tiles configuration controls what the app’s tiles look like (small, medium and large versions). The Icon tile selection simply shows a static image or icon for the app. The Flip tile displays 2 tile states (front and back). Most interesting is the Cycle template. This allows the app to use a collection section that contains images and display those images on the Windows/Windows Phone Start screen.</span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396602028?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396602028?profile=RESIZE_1024x1024" width="750" class="align-full"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Also in the Tiles management a splash screen and lock background can be set. The splash screen appears when the app starts up and the lock screen appears if the app is selected as the lock screen image on Windows Phone. </span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>The final section in creating an app is the Publish Info section. Publish info includes the app's title, description and language. It allows linking the app to the Windows Store for publishing and sets other information about the app that is displayed in the Windows Store. It also allows enabling of ads.</span></p>
<p dir="ltr"><span><a href="http://storage.ning.com/topology/rest/1.0/file/get/396603693?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396603693?profile=RESIZE_1024x1024" width="750" class="align-center"></a></span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>Once the app content and design is done a final product can be generated. Upon generation App Studio provides 3 things:</span></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>A download package that you can use to install on your device. This is only used for testing as you need a dev certificate to install the app. </span></p> </li>
<li dir="ltr"><p dir="ltr"><span>A publish package. The publish package can be used to submit the app to the Windows Store.</span></p> </li>
<li dir="ltr"><p dir="ltr"><span>The source code. Complete source code for the generated app is provided and can be used by a developer to build more complex features into the app.</span></p> </li>
</ol>
<p><span><span> </span></span></p>
<p dir="ltr"><span>While limited I think App Studio is implemented well and it is simple enough for almost anyone to get into and build a simple informational app. Because it restricts the user to certain layouts and features there isn't much danger in messing things up too badly. On the other hand those restrictions probably result in apps made with App Studio looking very similar to each other. </span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>A couple of features I would like to see in App Studio would be a way to add form input to an app. At the moment there is no way for users of an app to communicate with the app’s creator without leaving the app via a web or email action link. I would also like to see App Studio be able to submit apps directly to the Windows Store instead of just providing the publish package. I think App Studio has great potential if Microsoft chooses to develop it further.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span>App Studio can be used now for Windows Phone 8. I ran into some issues attempting to generate a Windows Phone 8.1 app, but this may be because Windows Phone 8.1 has not yet been officially released.</span></p>
<p><span><span> </span></span></p>
<p dir="ltr"><span><a href="http://appstudio.windows.com/">http://appstudio.windows.com/</a></span></p>
<p><span id="docs-internal-guid-97742c0c-066d-519e-f112-83bf6927967e"><br><br><br></span></p>Adobe Creative Cloud Experience - Alternatives?tag:www.techhui.com,2014-03-17:1702911:BlogPost:1287662014-03-17T21:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">About a year ago Adobe announced that it would be ending their Creative Suite offering, rebranding their applications under the Creative Cloud. Customers would no longer be able to pay once for most of the main Adobe software and use it forever. Instead they now need to pay monthly and will no longer be able to use the software if they stop paying. I don’t use Adobe software extensively, but there are times when I need to so I decided to try it out for a year using their…</p>
<p dir="ltr">About a year ago Adobe announced that it would be ending their Creative Suite offering, rebranding their applications under the Creative Cloud. Customers would no longer be able to pay once for most of the main Adobe software and use it forever. Instead they now need to pay monthly and will no longer be able to use the software if they stop paying. I don’t use Adobe software extensively, but there are times when I need to so I decided to try it out for a year using their introductory $29.99/month offer. That is about $360 for the year and I felt it was an okay offer. A few weeks ago I received notice from Adobe that my yearly subscription was coming up for renewal and as promised the price would increase to $49.99/month. </p>
<p dir="ltr"></p>
<p dir="ltr">The software delivery system worked well. When I needed updates it told me and when updates were done they went smoothly. I did not need to worry about installing patches. There also seemed to be a good stream of updates and improvements made during the course of the year. These improvements patched bugs and added new features. It felt nice using applications that were being improved regularly. I am not sure if this is true, but it seemed like the products were getting updated more than when I used to purchase the physical disks.</p>
<p dir="ltr"></p>
<p dir="ltr">With the complete plan you get full access to most of the Adobe products. Like Microsoft’s MSDN, Creative Cloud lets you install almost any product Adobe offers. This allowed me to explore products I wouldn’t normally have tried, many of which are very nice.</p>
<p dir="ltr"></p>
<p dir="ltr">I thought the experience and product were great and while I felt $29.99/month was a good deal, I do not think $49.99/month is for me. I used mostly Photoshop, Fireworks, Illustrator and Acrobat. However, I don’t use all of them every day or even every month. My usage is probably too light for their target market. Even at $29.99 I felt that I was throwing away money every month. I found myself wishing that they offered lower tier plans, but looking at the pricing they charge $19.99/month for an annual single app plan and there is no option to use a single app for just a month. If you wanted to pay for only a single month of the complete plan usage it’s a fairly hefty $74.99. For a limited time they are offering Photoshop CC for an annual subscription of $9.99/month.</p>
<p dir="ltr"></p>
<p dir="ltr">There is no doubt that someone who makes extensive use of several Adobe products will find value in the subscription model. It seems they would have no choice but to eventually submit to this model as older copies become obsolete and potentially incompatible with newer formats.</p>
<p dir="ltr"></p>
<p dir="ltr">For hobbyists like me who don’t live in Photoshop and don’t depend on Adobe products I am not sure the subscription model makes any sense and perhaps the hobbyist is not who Adobe is going after. Adobe products have never been cheap, but in the past I could justify the large purchase every 3-5 years and could still use my old software. I think a subscription type of model is only good if you use the products extensively or if the pricing is low enough to make sense to keep the subscription going.</p>
<p dir="ltr"></p>
<p dir="ltr">Which brings me to the second part of this blog post. Over the past year I have been looking for and trying out alternatives. Here are some of the notable low cost or free alternatives I think are pretty good. I’m focusing on Photoshop and Illustrator alternatives since that is what I used Creative Cloud for most of the time.</p>
<p dir="ltr"></p>
<p dir="ltr"><strong>SketchBook Pro and Express</strong></p>
<p dir="ltr"><span>SketchBook Pro works great if all you want to do is draw. It has many different pen types and works well with a Wacom pen. At $59 (one time purchase) I thought it was a great deal and use this the most for when I want to do some sketching. The Express versions are also useful (and free) if you have an iPad, Android or Windows tablet. However the Express versions vary greatly between different platforms and don’t offer nearly as many features. SketchBook is from Autodesk and the Pro version works on Windows and Mac.</span></p>
<p dir="ltr"></p>
<p dir="ltr"><strong>Freshpaint</strong></p>
<p dir="ltr"><span>Freshpaint on Windows 8 is a nice app that simulates painting and drawing. You can choose from several brushes and pencils and change the texture of the paper. It has a neat feature where you can smudge your lines and strokes and then dry them out to make them permanent. This app also has a Windows Phone 8 version that syncs up with the Windows 8 app over OneDrive so you can edit your paintings on the go.</span></p>
<p dir="ltr"></p>
<p dir="ltr"><strong>Inkscape</strong></p>
<p dir="ltr"><span>If you do not need all the features of Illustrator Inkscape handles vectors well. I had some issues with performance that I did not have with Illustrator, but it was very easy to set up and use. I tried other vector drawing tools, but Inkscape was the only one I felt got anywhere close to Illustrator. Free for Windows and Mac.</span></p>
<p dir="ltr"></p>
<p dir="ltr"><strong>GIMP</strong></p>
<p dir="ltr"><span>One of the original Photoshop alternatives. Free and still one of the most feature heavy graphic apps. A good alternative if you want Photoshop-like features but don’t need actual Photoshop. I found that it is great for photo editing, but not so great for drawing and painting. Runs on Windows, Linux and OSX..</span></p>
<p dir="ltr"></p>
<p dir="ltr"><strong>Manga Studio</strong></p>
<p dir="ltr"><span>The only other paid software on my list was Manga Studio from Smith Micro. It costs between $47.99 to $299.99 depending on version. Like SketchBook Pro this application is great for drawing. As it’s name implies, it targets comic book (manga) artists. I did not get to try it out very much before my trial expired, but intend to explore this application more in the future. From what I did try it is worth the $50 price tag for non professionals. Works on Windows and Mac.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><span>In the end nothing can replace Photoshop fully, but I did find many worthwhile alternatives. If you have any recommendations on other graphic apps or apps that are good alternatives to the ones in Creative Cloud I would like to hear about them.</span></p>
<p><span id="docs-internal-guid-62628eb2-d1eb-53f2-2a4f-b1102692dbac"><br/></span></p>Happy Birthday Mac and Are Tablets the Future?tag:www.techhui.com,2014-01-24:1702911:BlogPost:1278052014-01-24T21:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr"><a href="http://storage.ning.com/topology/rest/1.0/file/get/396586807?profile=original" target="_self"><img class="align-left" src="http://storage.ning.com/topology/rest/1.0/file/get/396586807?profile=original" width="256"></img></a> The Mac turned 30 today. Happy Birthday, Mac! Apple has been through ups and downs in those 30 years, but now they are one of the most successful companies in the world. That’s thanks in large part to the success of their iPods, iPhones and iPads, but the Mac remains a mainstay of Apple’s product line.</p>
<p dir="ltr"><span>For years analysts have…</span></p>
<p dir="ltr"><a target="_self" href="http://storage.ning.com/topology/rest/1.0/file/get/396586807?profile=original"><img class="align-left" src="http://storage.ning.com/topology/rest/1.0/file/get/396586807?profile=original" width="256"></a>The Mac turned 30 today. Happy Birthday, Mac! Apple has been through ups and downs in those 30 years, but now they are one of the most successful companies in the world. That’s thanks in large part to the success of their iPods, iPhones and iPads, but the Mac remains a mainstay of Apple’s product line.</p>
<p dir="ltr"><span>For years analysts have predicted that tablets would outship desktops and laptops. Late last year it started to happen as tablets surpassed laptops during the holidays. Within the next two years tablets are expected to consistently ship more than laptops worldwide. The popularity of tablets naturally leads to questions about convergence. Will Apple follow the same path as companies like Canonical and Microsoft?</span></p>
<p dir="ltr"><span>Macworld recently published an article with snippets of an interview with Philip Schiller and Craig Federighi and their answers seem to indicate "no" with quotes like:<br> <br></span></p>
<p dir="ltr"><span>“It’s obvious and easy enough to slap a touchscreen on a piece of hardware, but is that a good experience? We believe, no.”</span></p>
<p dir="ltr"><span>“We don’t waste time thinking, ‘But it should be one [interface]!’ How do you make these [operating systems] merge together?’ What a waste of energy that would be,”</span></p>
<p dir="ltr"><span>“To say [OS X and iOS] should be the same, independent of their purpose? Let’s just converge, for the sake of convergence? [It’s] absolutely a nongoal,”<br> <br></span></p>
<p dir="ltr"><span>That is a very different message compared to other major desktop OS makers: Microsoft and Canonical who are quickly moving toward convergence. Canonical is busy at work evolving Ubuntu into an OS that can run on all screen sizes. Microsoft has already shipped Windows 8 that is an OS meant to work on both desktop/laptops and tablets. Additional convergence with phones is expected. Even Android has achieved a certain amount of convergence by being installed on shipping phones, tablets, convertible laptops and desktops.</span></p>
<p dir="ltr"><span>Even though there will surely be desktops and laptops well into the future, is tablet computing where we are going next? Will tablets eventually fully marginalize desktops and notebooks as they seem to already be doing? We are already in a time where your tablet easily meets the computing power needed for browsing the web, reading book and email, playing music and watching movies. The iPad and Android tablets are becoming serious gaming devices. People can feasibly use their tablet as their primary computing device.</span></p>
<p dir="ltr"><span>As for myself, I’m already sold on tablets. I’ve been looking for a good tablet pc since Bill Gates showed them off in early 2000. Those early tablets turned out to be expensive, heavy, noisy, hot and overall not very usable, but last year I picked up a Windows 8 tablet that seems to finally deliver the vision of Microsoft’s tablet PC. For the first time I can take my “desktop” with me wherever I go. Since I’m a programmer I went with a Windows 8 tablet and it’s worked surprisingly well over the last year. I don’t think I will ever purchase a laptop or desktop for my general computing needs in the future.</span></p>
<p dir="ltr"><span>Besides your cell phone what device do you use the most? </span></p>
<p></p>Get a Cheap Smartphonetag:www.techhui.com,2013-11-27:1702911:BlogPost:1269622013-11-27T22:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">Do you have a smartphone? Chances are you do. Whether it is an iPhone, an Android phone or any one of the many other smartphones out there it is clear that the age of the feature phone (dumbphone) is past. This year, for the first time, smartphone sales have exceeded dumbphone sales worldwide.</p>
<p dir="ltr">The explosion of smartphones is due to the steady march of technology getting better and lowering costs. Smartphones have dropped in cost from $600+ in the early 2000’s…</p>
<p dir="ltr">Do you have a smartphone? Chances are you do. Whether it is an iPhone, an Android phone or any one of the many other smartphones out there it is clear that the age of the feature phone (dumbphone) is past. This year, for the first time, smartphone sales have exceeded dumbphone sales worldwide.</p>
<p dir="ltr">The explosion of smartphones is due to the steady march of technology getting better and lowering costs. Smartphones have dropped in cost from $600+ in the early 2000’s to $400+ a few years ago to an average in the $300 range today. They are no longer unaffordable to the average consumer. The two fastest growing markets for smartphones is China and India where millions of people are replacing their old dumbphone with new smartphone models and cheap smartphones make up a good portion of that market.</p>
<p dir="ltr">In the U.S., unlike much of the rest of the world, it is common for consumers to buy a phone on contract. This lets us purchase the latest high end smartphones at a deep discount in exchange for being locked into a carrier contract for usually 2 years at high rate plans designed to cover the cost of the subsidy and more. You probably pay more during those 2 years on contract than if you had purchased your phone off contract and went with a cheaper month to month plan. </p>
<p dir="ltr">People in other countries often don’t even have the choice to lock themselves to a carrier. They have to pay for phones off contract and that puts newer phones like the iPhone5s and Galaxy S4 that cost $600 or more out of reach. Even mid range phones in the $300 range may be too pricey. In response manufacturers have started selling cheap smartphones and consumers are responding.</p>
<p dir="ltr">Here are some notable options as of November 2013 that are available in the U.S. </p>
<p></p>
<ol>
<li dir="ltr"><p dir="ltr"><span>ZTE Open: This is the first cheap unlocked off contract phone that caught my attention. It runs Firefox OS so it’s not for everyone. It’s also obviously made with cheaper materials and has lower performance. The good news is that it is only $79. A good temporary replacement phone.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Nokia Lumia 520: This phone is locked to AT&T, but it’s off contract and only $99. It is possible to unlock it, but you would have to go through AT&T or another unlocking service. It runs Windows Phone 8. A common comment about this phone is that while it’s cheap it still runs smoothly unlike other cheap phones. A good phone for basic use if you aren’t partial to Android or iOS.</span></p>
</li>
<li dir="ltr"><p dir="ltr"><span>Motorola Moto G: At $179 this phone is not as cheap as the previous two, but it is off contract and unlocked. It has fairly good specs for the price and runs Android, the most popular mobile OS. It also reportedly runs smoothly unlike other low end Android phones.</span></p>
</li>
</ol>
<p>As someone interested in technology and as a developer these low cost phones interest me because I can more easily pick up a phone to tinker and test with. In the past it would have cost hundreds of dollars to purchase a phone for development work and having multiple phones wasn’t an option. These new cheap phones give me the ability to test apps and sites on different devices instead of in simulators or emulators. Also because the phones have lower specs it allows me to make sure my apps work on slower phones with less RAM and storage space. Hopefully this translates into more stable apps that are available to a wider range of devices. </p>
<p></p>
<p></p>
<p></p>Evolving Mobile Technologytag:www.techhui.com,2013-09-28:1702911:BlogPost:1255302013-09-28T00:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr">Sometimes it seems like there is a new mobile phone or device announced every day. It’s an exciting time when the things we could only dream about 15 years ago are becoming reality. What do we have to look forward to in the next few years and beyond?</p>
<p><span><span><br></br></span></span></p>
<p dir="ltr"><strong>Near Field Communication (NFC)</strong></p>
<p dir="ltr"><span>The technology allows interaction between devices and even unpowered chips or tags. It’s already used in a…</span></p>
<p dir="ltr">Sometimes it seems like there is a new mobile phone or device announced every day. It’s an exciting time when the things we could only dream about 15 years ago are becoming reality. What do we have to look forward to in the next few years and beyond?</p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Near Field Communication (NFC)</strong></p>
<p dir="ltr"><span>The technology allows interaction between devices and even unpowered chips or tags. It’s already used in a wide array of applications from payment systems, contact and media sharing to automation of processes and controlling systems. It is not yet a ubiquitous technology, but it will be interesting to see how it is used in the future. Instead of buying tickets and passes your cell phone could be used as an entry pass. Place your phone down in your home or car and have it set temperature, lighting and music based on the weather and time of day. </span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Gesture and Touchless Control</strong></p>
<p dir="ltr"><span>Mobile phones made a big leap when we started to use capacitive touch screens. Could gesture and touchless control make as big an impact? Microsoft’s Kinect already shows how motion and gestures can be used in a wide array of applications. Phones like the Samsung Galaxy S4 can tell when you are looking at your screen.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Tactile Feedback</strong></p>
<p dir="ltr"><span>When mobile devices started using touch screens we also started losing the devices with physical keyboards. There’s no doubt that there are people who miss that hardware feature. It sounds like a slim chance to me, but there are companies who are working on screens that can change their shape to offer more tactile feedback as needed. Perhaps in the future we’ll have phones that can change their screen texture to improve input methods.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Wireless Charging</strong></p>
<p dir="ltr"><span>During the last few years wireless charging has come to mobile devices. With wireless charging we can place a device on a charging mat instead of plugging a cord in it. Unfortunately there are competing standards to wireless charging and it looks like it will be awhile before it can be used without a thought. In the future will we see wireless charging evolve to a point where you can place your device down at Starbucks and have it charged? Those plans are already underway and in implementation in some areas. Will it ever come to a point where we have true wireless charging? Researches are always exploring new ways to do this. In the future our devices may charge themselves using ambient radio radiation or even a super efficient implementation of the oldest wireless charging tech: solar power. Perhaps we will never need to worry about charging our phones again.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Battery Tech</strong></p>
<p dir="ltr"><span>Along with wireless charging better battery technology is needed to keep our phones going. Current battery technology lags behind the needs of our mobile devices. Researchers are always looking for ways to achieve lighter, safer and longer lasting energy storage mediums. Hydrogen battery cells didn’t quite work out yet, but graphene based solutions are showing some promise having a capacity dozens of times more and charging in a fraction of time versus current lithium based solutions. In the future we may not need to worry about whether our device will last until the end of the day even with heavy use.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Flexible Displays</strong></p>
<p dir="ltr"><span>The size of our phone and tablet screens more or less dictate where and how we use our devices. The smaller the screen the more we take it with us. Larger screens allow us to use them more comfortably. Samsung, Corning and other companies have been at work creating flexible glass and displays. In the future we could have a phone that rolls up while still being usable as a phone, but can also be rolled out to a tablet sized display for more productive computing. A device could be made to wrap around your write like a watch and then unwrap to become a phone.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Digital Assistants</strong></p>
<p dir="ltr"><span>An artificial intelligence that thinks and learns has always been dreamt about. With early digital assistants and now with software like Siri and Google Now we are getting closer to having computers that assist us in our daily lives in more natural and human-like ways. Perhaps it’s too early to imagine a real J.A.R.V.I.S from the Iron Man movies, but technology appears to be moving in that direction. The recent Motorola X phone is able to always listen for your voice. </span>Devices use GPS, gyroscopes and other sensors to detect changes in the environment. An always seeing camera is probably not that far off. </p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Wireless Display</strong></p>
<p dir="ltr"><span>It’s already happening, some mobile devices will be able to send their display to TVs and other devices wirelessly. Google’s Chromecast and Apple’s Air Play are examples of this using add on devices, but in the future the technology may be built into your devices and monitors. It’s not so far a stretch to imagine a device that can send signals to your TV which you could then interact with using voice, touch, gesture or other input methods.</span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Convergence</strong></p>
<p dir="ltr"><span>Many people have a cell phone, a tablet, a laptop and a desktop. All of these devices run separate operating systems and software you buy on one doesn’t always work on the other. Software companies are attempting to merge their respective OSes to offer better integration between devices and convergence. Apple’s iOS devices allow you to use the same apps on both the iPhone and iPad. Google does the same for phones and tablets. Microsoft does it between the desktop and tablet and ambitiously Ubuntu is attempting to create one OS that will run on your phone, tablet, laptop and desktop. In the future perhaps your phone will be the only device you need. </span></p>
<p><span><span><br/></span></span></p>
<p dir="ltr"><strong>Biometrics and Health Sensors</strong></p>
<p dir="ltr"><span>We are already seeing these in use. Phones have had fingerprint scanners before and the iPhone 5s has an improved scanner in the home button. Google’s Android has been able to do face recognition to unlock your phone. There are sensors used by fitness trackers to measure your heart rate and how far you have travelled. There are even sensors that can monitor air pollution, function as a breathalyzer and help to diagnose eye conditions. As sensor technology and software improves perhaps we’ll have phones that are more aware of their surroundings than we are. Your phone may one day be able to know who you are before you even pick it up.</span></p>
<p><span id="docs-internal-guid--f0a3461-61db-ca31-6348-96587536bb8e"><br/></span></p>
<p><span>I'm sure that you can imagine even more amazing things than this. What types of things do you think we will see in the next 5-10 years?</span></p>Making a Windows 8 Store App with HTML, CSS and Javascripttag:www.techhui.com,2013-07-19:1702911:BlogPost:1229072013-07-19T23:36:33.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With Windows 8 Microsoft added the ability for developers to create Windows 8 store apps using HTML, CSS and Javascript. Here is a tour walking through creating a simple Windows 8 app…</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With Windows 8 Microsoft added the ability for developers to create Windows 8 store apps using HTML, CSS and Javascript. Here is a tour walking through creating a simple Windows 8 app using HTML, CSS and Javascript. There are many resources and tutorials doing the same thing but I’m hoping this post will be helpful for people who might not otherwise seek out that information and just want a general overview of what it’s like to use these technologies in a Windows 8 app.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Prerequisites:</span></h2>
<ol style="margin-top: 0pt; margin-bottom: 0pt;">
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Windows 8: To create a Windows 8 store app you’ll need to be running Windows 8.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Microsoft Visual Studio Express 2012 for Windows 8: A free IDE, though registration is required to get a license for use longer than 30 days.</span></p> </li>
</ol>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">As of this writing there is a Visual Studio 2013 preview. I’ll be using Visual Studio 2012 Ultimate for this post, but the overall steps should be similar for the Express versions.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Part 1: Create a new project</span></h2>
<p><b style="font-weight: normal;"><br></b></p>
<ol style="margin-top: 0pt; margin-bottom: 0pt;">
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open Visual Studio and select “New Project...”</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Under “Templates” > “JavaScript” choose “Blank App”<br class="kix-line-break">If your app is going to have many pages/screens choose “Navigation App” instead.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">VS.net may prompt you to create a Developer License. This requires logging in using a Microsoft Account (i.e. a hotmail.com, live.com, outlook.com or msdn account)</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Once the Developer License process completes click on “OK” to create the new project.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You should now see the files that make up a Windows 8 HTML/CSS/Javascript app. It looks very similar to a basic web site file structure.</span></p> </li>
</ol>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><a target="_self" href="http://storage.ning.com/topology/rest/1.0/file/get/396591615?profile=original"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/396591615?profile=original" width="318"></a></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Part 2: Do something</span></h2>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">At this point the app should compile and run, but all you’ll see is a message saying “Content goes here”</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Look at the default.html page:</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><!DOCTYPE html></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><html></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><head></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <meta charset="utf-8" /></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <title>Windows8JSApp</title></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <!-- WinJS references --></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" /></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <script src="//Microsoft.WinJS.1.0/js/base.js"></script></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <script src="//Microsoft.WinJS.1.0/js/ui.js"></script></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <!-- Windows8JSApp references --></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <link href="/css/default.css" rel="stylesheet" /></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <script src="/js/default.js"></script></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></head></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><body></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <p>Content goes here</p></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></body></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></html></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">For anyone familiar with web development this should look familiar. All those WinJS references reference Javascript files specific to Windows 8. The default.css and default.js files are files we can edit for use in our default.html page.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let’s have the app do something. Replace the markup in the <body> tag with this:</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <p>Do Something</p></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <p>Enter something:</p></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <input id="InputSomething" type="text" /></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <button id="ButtonDoSomething">Do Something</button></span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <div id="OutputSomething"></div></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open js/default.js. You’ll see Javascript code. It should be familiar to someone who has used Javascript before. </span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">(function () {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "use strict";</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">… some code omitted ...</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> app.start();</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">})();</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we need to know where to put things.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Near the end of the file, before the “app.start();” enter the following code:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> function buttonClickHandler(eventInfo) {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> var someInput = document.getElementById("InputSomething").value;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> var someOutput = "You entered: " + someInput;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> document.getElementById("OutputSomething").innerText = someOutput;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> }</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">That gives us a function to handle the button click event, but we still need to register this new event handler.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Towards the top of the default.js file you’ll find this code:</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> app.onactivated = function (args) {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> if (args.detail.kind === activation.ActivationKind.launch) {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> // TODO: This application has been newly launched. Initialize</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> // your application here.</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> } else {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> // TODO: This application has been reactivated from suspension.</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> // Restore application state here.</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> }</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> args.setPromise(WinJS.UI.processAll());</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> }</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> };</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">That code allows you to insert logic into your application lifecycle. Below the line that says args.setPromise(WinJS.UI.processAll()); add these lines of code:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> var doSomethingButton = document.getElementById("ButtonDoSomething");</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> doSomethingButton.addEventListener("click", buttonClickHandler, false);</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This hooks up your button in the HTML file to the event handler in the Javascript file.</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run your application, enter some text, click the button and you should see a screen like this:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><a target="_self" href="http://storage.ning.com/topology/rest/1.0/file/get/396592616?profile=original"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/396592616?profile=original" width="576"></a></span></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Part 3: Styles</span></h2>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open up the css/default.css file and enter some CSS:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.header {</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> font-size: 2em;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> color: red;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> font-weight:bold;</span></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In your default.html file add the class to your title:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 12px; font-family: Consolas; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <p class="header">Do Something</p></span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run your app and you should see your style applied:</span></p>
<p><b style="font-weight: normal;"><br></b></p>
<p><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><a target="_self" href="http://storage.ning.com/topology/rest/1.0/file/get/396592672?profile=original"><img class="align-full" src="http://storage.ning.com/topology/rest/1.0/file/get/396592672?profile=original" width="575"></a></span><b style="font-weight: normal;"><br></b></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Part 4: Other things to try and notice</span></h2>
<p><b style="font-weight: normal;"><br></b></p>
<ol style="margin-top: 0pt; margin-bottom: 0pt;">
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It should be possible to use jQuery and some other javascript libraries, but you’ll run into varying degrees of issues. The Windows 8 app will behave most like IE10. Javascript that targets features of other types of browsers that IE10 doesn’t support may not work.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Notice that your HTML, CSS and Javascript in Visual Studio are all supported by Intellisense (code completion)</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Add a breakpoint in your javascript file. Debugging, stepping through code and viewing variables are supported.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">When you run the app take a look at your Visual Studio window. It should show a new tab called “DOM Explorer” that shows the DOM of your app while you run it.</span></p> </li>
<li dir="ltr" style="list-style-type: decimal; font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;"><p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Microsoft also created a Windows Library for JavaScript (WinJS) that contains controls to handle many Windows 8 specific UI and interactions.</span></p> </li>
</ol>
<p><b style="font-weight: normal;"><br></b></p>
<h2 dir="ltr" style="line-height: 1.15; margin-top: 10pt; margin-bottom: 0pt;"><span style="font-size: 17px; font-family: 'Trebuchet MS'; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Part 5: Conclusion</span></h2>
<p><b style="font-weight: normal;"><br></b></p>
<p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt;"><span style="font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The HTML/CSS/Javascript method of creating Windows 8 apps was obviously targeted towards web developers. Instead of having to learn XAML/C# to create a Windows 8 app developers can leverage what they know to create apps. It is interesting to see how similar the basic structure and coding is between an HTML Windows 8 app and a basic web page. While the basics may be the same as you delve deeper you’ll find that you can’t simply copy over your HTML/CSS/Javascript and have it work. Windows 8 diverges from web development since it specifically targets the Windows 8 environment where apps can access things a browser may not be able to through Windows libraries and must adhere to how Windows 8 handle various lifecycles, app suspend, termination and resume. Like any new platform there is a significant learning curve if you plan to build a non trivial app.</span></p>
<p><b style="font-weight: normal;" id="docs-internal-guid-0-626201-f93d-2e0d-85ed-be9e3269d521"><br></b></p>My Experiences with Windows Phone 8tag:www.techhui.com,2013-05-10:1702911:BlogPost:1206152013-05-10T21:36:19.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p dir="ltr"></p>
<p></p>
<p dir="ltr"><span>Last winter I bought a Lumia 920 which runs Windows Phone 8. Windows Phone 8 is a large overhaul of Windows Phone 7 because now it uses the same kernel as Windows 8. It also added support for better hardware and a more flexible development framework. Previously I have used the original iPhone, the iPhone 4 and the Galaxy Nexus Google Android phone. I have never seen anyone with a Windows Phone and I thought it looked neat so I decided…</span></p>
<p dir="ltr"></p>
<p></p>
<p dir="ltr"><span>Last winter I bought a Lumia 920 which runs Windows Phone 8. Windows Phone 8 is a large overhaul of Windows Phone 7 because now it uses the same kernel as Windows 8. It also added support for better hardware and a more flexible development framework. Previously I have used the original iPhone, the iPhone 4 and the Galaxy Nexus Google Android phone. I have never seen anyone with a Windows Phone and I thought it looked neat so I decided to try it out. Here are my experiences and opinions about Windows Phone 8 over the last 6 months.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong><a href="http://storage.ning.com/topology/rest/1.0/file/get/396588720?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588720?profile=original" width="388" style="padding: 10px;" class="align-left"></a>User Interface and Performance</strong></p>
<p dir="ltr"><span>The first thing anyone will notice about Windows Phone 8 is it’s different user interface. Instead of icons it uses a flat tile design. Instead of swiping left and right to view more apps you swipe up and down a continuous wall of tiles. To view all your apps you swipe left to a full listing of apps ordered alphabetically and searchable. The UI is fluid and fast. I’ve never encountered a case where scrolling or swiping resulted in stuttering animations and everything feels very responsive. I haven't experienced any crashing or freezing. </span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: It does what it needs to do and I haven’t had any problems with it. The small animations make the UI feel fluid and fast and it’s fun to use.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Live Tiles</strong></p>
<p dir="ltr"><span>Windows Phone uses a concept called Live Tiles. Tiles have replaced the icons you would normally use to launch apps. Tiles can be 3 sizes: small, medium and large. The small tile can show the least information and usually shows a number indicating unread counts or notifications. The medium tile is the size of 4 small tiles and can show more information. The large tile is the size of 2 medium tiles and can display the most information.</span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: The tiles are a cross between icons and widgets. Being able to resize them and move them around the screen helps to keep things fresh. When I look at my phone’s start screen I can immediately see recently taken photos, recent Twitter or Facebook posts, email counts and my next calendar event without opening an app.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Kid’s Corner</strong></p>
<p dir="ltr"><span>Kid’s Corner allows you to set up a section of your phone with select apps. Using this you can restrict a user from using and seeing apps that you do not want to be seen. For example you can exclude your email and calendar tiles from Kid’s Corner so that the person using your phone can’t read your emails. Obviously it was named with the parents of kids in mind. </span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: It could use improvements. I think Kid’s Corner is great for people who have kids and end up letting their kids play with their phones. It’s also a convenient way to let someone borrow your phone for a short time without giving them full access to everything. It can use some improvement because although you can choose which apps go into Kid’s Corner the apps themselves are not restricted. For example if you add the camera app to Kid’s Corner the user can open that app and then see all your photos. The only thing that might be better than Kid’s Corner is true multi-user logins, but is that something we really need on a phone at this point? Kid's Corner might be just enough for now.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Lenses</strong></p>
<p dir="ltr"><span>Windows Phone 8 has a concept of a lens. When you use the camera app there is a button that opens up a menu of lenses. Lenses are other apps that the camera can hook into. There are all kinds of different lenses that give you the ability to take panoramas, photosynths and apply filters. </span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: It’s a nice feature because you can get to these lenses through the camera app instead of opening them separately. The usefulness depends on what types of apps choose to hook into the camera lens feature.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>People Hub</strong></p>
<p dir="ltr"><span>People Hub is the main contact management in Windows Phone 8. It attempts to aggregate contacts from your various accounts. If you set up email, Facebook, Twitter or LinkedIn it will put them all together. You can filter your contacts to not show certain accounts. You can also link contacts across accounts to help manage cases where the same contact resides in several contact lists. A contact can be pinned to your start screen and then you can see that contact’s recent posts and information.</span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: It does a nice job of consolidating contacts across accounts and it’s nice to be able to pin a contact to the start page and see meaningful information about that contact as well as gain quick access to email, phone, text or even post to that contact’s Facebook wall. </span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Notification Center</strong></p>
<p dir="ltr"><span>Windows Phone 8 has no notification center. Instead users must rely on the Live Tile notifications. Toasts appear at the top of the screen when a notification comes in, but once it disappears it is gone forever.</span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: I think they should create a proper notification center. If you don’t pin an app’s tile to your start page there’s no way to see notifications for that app.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Apps</strong></p>
<p dir="ltr"><span>At the time of this blog post Windows Phone has around 145,000 apps. Compared with iOS and Android it’s a small number. No one is going to need 145,000 apps, but the other issues Windows Phone faces is that new apps aren’t released for it as fast and they aren’t updated as regularly. It’s also arguable that apps for Windows Phone are still of lesser quality than apps in the more mature Apple App Store and Google Play. Windows Phone is still missing some prominent apps like Instagram. Even Facebook and YouTube are published by Microsoft as opposed to by their respective first parties.</span></p>
<p><b><br></b></p>
<p dir="ltr"><span>Microsoft is trying to improve the app situation by offering developers free tools and at the writing of this blog post they are offering $100 for every eligible new app accepted to the store (up to 10 Windows Phone apps per developer).</span></p>
<p><b><br></b></p>
<p dir="ltr"><span>My opinion: The number of apps and developer enthusiasm for the platform will probably depend on Window Phone’s market share. As a consumer it might be difficult to stick with Windows Phone when the iOS and Android always get the latest apps and games.</span></p>
<p><b><br></b></p>
<p dir="ltr"><strong>Conclusion</strong></p>
<p dir="ltr"><span>My experience with Windows Phone has been positive so far. As an OS it has not let me down. The lack of apps is probably the biggest downside, but it has been fun being part of a growing ecosystem where every new app is big news. As a developer I’m interested in developing for Windows Phone 8 and I’m excited about the changes Microsoft has made to the core of Windows Phone that may eventually lead to a unification or better cross platform compatibility between Windows and Windows Phone. I have no idea if Windows Phone will ever gain significant market share, but I feel it has enough potential to grab a solid 3rd place position and I’m glad I was able to try it out.</span></p>
<p><span> </span></p>Trying out Xamarin Studio 2.0 Starter Editiontag:www.techhui.com,2013-03-08:1702911:BlogPost:1180442013-03-08T20:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<h1 dir="ltr">Trying out Xamarin Studio 2.0 Starter Edition</h1>
<p>Xamarin Studio is an IDE that allows developers to create iOS, Android and Mac apps using C#. Recently Xamarin released Xamarin Studio 2.0 and along with a free Starter edition. While the Starter edition is very limited it allows developers to see what Xamarin Studio is like and how writing Android apps using C# works. I was hoping to create an iOS app, but it turns out a Mac is still required in order to…</p>
<h1 dir="ltr">Trying out Xamarin Studio 2.0 Starter Edition</h1>
<p>Xamarin Studio is an IDE that allows developers to create iOS, Android and Mac apps using C#. Recently Xamarin released Xamarin Studio 2.0 and along with a free Starter edition. While the Starter edition is very limited it allows developers to see what Xamarin Studio is like and how writing Android apps using C# works. I was hoping to create an iOS app, but it turns out a Mac is still required in order to write iOS apps even with higher editions. In addition the free edition is limited to the use of Xamarin Studio. Higher editions allow you to use Visual Studio.net. There are trials of the higher editions, but require registration with Xamarin. Today I’ll blog a quick walkthrough of the Starter edition of Xamarin Studio installation and creating a basic app for Android on a Windows 7 machine.</p>
<h2 dir="ltr">Installation:</h2>
<p>Installing Xamarin Studio was very easy. It is one of the easiest installs I have seen for Android development. It tells you exactly what it needs and what it’s going to install. There was no trying to figure out what Java SDK version to install, hunting for prerequisites or messing with paths and workspaces. However I did already have .NET frameworks, Visual Studio 2010, Android SDK and Java 1.7 SDK installed and paths already set up. I am not sure if that made any difference. The installation explained that JDK 1.6 was required and installed it for me. It also seems to handle the installation of Android SDKs or so I thought. More on that below. Installation took about 30 minutes. Much of that time was spent downloading nearly a gig of SDKs and software.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396584843?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396584843?profile=original" class="align-full" width="534"></a></p>
<p></p>
<p></p>
<h2 dir="ltr">Creating and Running a Project:</h2>
<p>After the installation Xamarin Studio runs pretty fast. If you have used Visual Studio, Eclipse or IntelliJ IDEA you should be comfortable with Xamarin Studio. Here is the project creation window.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396585059?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396585059?profile=RESIZE_1024x1024" class="align-full" width="600"></a></p>
<p></p>
<p>Xamarin Studio creates a Solution and Project file that can be opened by Visual Studio, however you will need the Business Edition to be able to work within Visual Studio.<br> <br> Open up the project and file and you’ll see C# code. The project conveniently contains a basic application that is almost ready to run. The project structure is similar to a typical Android project set up using Eclipse. The Xamarin site says that there is LINQ support and thousands of .NET APIs.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396586811?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396586811?profile=RESIZE_1024x1024" class="align-full" width="600"></a></p>
<p></p>
<p>I tried to run it as-is and got an error:<br> "The targeted Android API Level 4.0.3 cannot be found. Please use the Android AVD manager to install the platforms you’re targeting."<br> <br> I’m not sure if this was due to my setup, but obviously I was missing something. Going into the AVD manager didn’t help as I did not even have the Android 4.0.3 SDK installed. I guess that during installation Xamarin Studio may not install all the SDKs. That's a good thing since there are a lot of Android SDKs, but I am not sure why it wanted 4.0.3 specifically. I had to go into the SDK manager first to install the Android API 4.0.3 SDK.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396587444?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396587444?profile=RESIZE_1024x1024" class="align-full" width="600"></a></p>
<p></p>
<p>After that I was able to create a new virtual device using AVD Manager like the original error message suggested.</p>
<p><br> Running the project again I ran into the error “Deployment failed because the device does not support the package’s minimum Android version. You can change the minimum Android version in the Android Application section of the Project Options. Deployment failed. Minimum Android version not supported by device.”<br> <br> That’s a pretty clear error message so I headed to the Android Application section of the Project Options and created a manifest. Looks like a new project does not automatically create a manifest.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396588447?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588447?profile=RESIZE_1024x1024" class="align-full" width="600"></a></p>
<p></p>
<p>I changed the minimum target to a lower version to make sure my virtual device met requirements.</p>
<p><br> I ran the project again and success!</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396588738?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588738?profile=RESIZE_1024x1024" class="align-full" width="600"></a></p>
<p></p>
<p>The entire process from installation to getting the default Android project to run was fairly painless and easy. It took about 1 hour with half of that time spent on the installation.</p>
<p></p>
<h2 dir="ltr">Creating an Android Package:</h2>
<p>The project ran fine in the emulator, but I wanted to see how it runs on a device. Creating an Android Package was quick.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396588999?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396588999?profile=original" class="align-full" width="581"></a></p>
<p></p>
<p>If you create the apk in Debug mode the bottom message will say that the shared runtime and platform package will not be included in the resulting package. In Release mode they will. I exported the apk, installed it on a device and it ran fine. I did notice the resulting package came out at around 3MB which is probably due to the shared runtime and platform package. This is huge for a Hello World app, but makes sense considering that the Mono .NET runtime is bundled along with the app. Xamarin says that 2.5 MB of that 3MB is added to the package.</p>
<p></p>
<h2 dir="ltr">Other Thoughts:</h2>
<p>In the short time I used it I thought the studio was nice. Things I liked:</p>
<ol>
<li dir="ltr">It has a visual designer for Android views that seemed very functional. I was able to move controls around and add new controls to the view easily.</li>
<li dir="ltr">It has code completion</li>
<li dir="ltr">It has integrated version control options for Subversion and Git</li>
</ol>
<p><br> Overall I think Xamarin Studio 2.0 Starter Edition is a good product if you want to evaluate it or if you are a hobbyist programmer that knows C# but not Java and you want to create a very small, simple app. You’ll still have to install Java and the Android SDKs, but Xamarin Studio does make the process easier. For professional developers Xamarin Studio looks like a good option if you want to stay within the Visual Studio environment and use C#, but more importantly if you want to reuse code across across iOS, Android, Windows and Mac. Since many applications are multi-platform this would be a good tool to help manage your code base.</p>Ubuntu for Phonestag:www.techhui.com,2013-01-02:1702911:BlogPost:1146172013-01-02T22:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p>Today Canonical officially announced Ubuntu for phones <a href="http://www.ubuntu.com/devices/phone">http://www.ubuntu.com/devices/phone</a>. Usually a new phone OS announcement is not much to get excited about, but Ubuntu’s entry has been anticipated for years. I am interested in this because Canonical’s Ubuntu is the most widely adopted and supported Linux distribution and they are promising a level of convergence never seen before. Eventually Ubuntu will be able to run the same OS on…</p>
<p>Today Canonical officially announced Ubuntu for phones <a href="http://www.ubuntu.com/devices/phone">http://www.ubuntu.com/devices/phone</a>. Usually a new phone OS announcement is not much to get excited about, but Ubuntu’s entry has been anticipated for years. I am interested in this because Canonical’s Ubuntu is the most widely adopted and supported Linux distribution and they are promising a level of convergence never seen before. Eventually Ubuntu will be able to run the same OS on the server, desktop, tablets and phones. It is also promising good performance on lower end hardware.<br/> <br/> Putting aside the difficulty Canonical will face in gaining significant market share with Ubuntu for phones I find a lot of things I initially like about their approach:</p>
<ol>
<li dir="ltr">Having the same Ubuntu run on several devices is interesting. Developers will be able to write apps for all devices running Ubuntu and have their apps discoverable in the Ubuntu Software Center just like desktops apps are found now.</li>
<li dir="ltr">It is not clear whether Ubuntu for phones will support or eventually support this, but with it using the same OS across devices it would be cool to have a phone that when plugged into a monitor adjusts its UI for the larger screen. The possibility of having 1 computing device that works the same across your desktop, tablet and phone is something no other OS has achieved successfully yet. There is also an Ubuntu for Android that has demonstrated the capability to run full Ubuntu when the phone is docked to a monitor and keyboard.</li>
<li dir="ltr">Canonical is claiming that Ubuntu for phones will run smoothly on relatively lower end hardware and it will run using drivers written for Android, making it easier for manufacturers to transition or develop hardware for both.</li>
<li dir="ltr">Ubuntu is the most popular Linux distribution, but it’s a distant 3rd versus Windows and OSX for consumer desktops. Can the phone serve as a gateway to higher desktop market share and vice versa?</li>
<li dir="ltr">The interface is interesting. It uses a swipe based menu system. It resembles Unity. Perhaps Ubuntu for phones was part of the decision behind using Unity?</li>
</ol>
<p><br/> As a developer I am excited to see Ubuntu for phones. The SDK is out now <a href="http://developer.ubuntu.com/get-started/gomobile/">http://developer.ubuntu.com/get-started/gomobile/</a> I’m planning to try it out and am looking forward to learning more in the coming months. There will be more information about it at this year’s CES next week.<br/></p>Why TypeScript?tag:www.techhui.com,2012-10-22:1702911:BlogPost:1130652012-10-22T21:00:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p>A few weeks ago Microsoft released a preview for <a href="http://www.typescriptlang.org/" target="_blank">TypeScript</a>. What is TypeScript and why would you use it? Initially TypeScript may look very similar in function to <a href="http://coffeescript.org/" target="_blank">CoffeeScript</a> or <a href="http://www.dartlang.org/" target="_blank">Dart</a>. These are two technologies TypeScript often gets compared to because all three can be used to generate JavaScript.…<br></br> <br></br></p>
<p>A few weeks ago Microsoft released a preview for <a href="http://www.typescriptlang.org/" target="_blank">TypeScript</a>. What is TypeScript and why would you use it? Initially TypeScript may look very similar in function to <a href="http://coffeescript.org/" target="_blank">CoffeeScript</a> or <a href="http://www.dartlang.org/" target="_blank">Dart</a>. These are two technologies TypeScript often gets compared to because all three can be used to generate JavaScript.<br/> <br/> <strong>TypeScript vs CoffeeScript</strong><br/> In function TypeScript has the most similarities with CoffeeScript. They are both meant to do the same thing: make JavaScript easier to develop. CoffeeScript simplifies JavaScript by removing a lot of the syntax and making thing simpler. TypeScript is a superset of JavaScript and tries to make things easier by giving JavaScript more structure, mainly static typing. If you like Ruby you might like CoffeeScript. If you like C++/Java/C# TypeScript may be more familiar to you.<br/> <br/> <strong>TypeScript vs Dart</strong><br/> TypeScript and Dart are similar in that they can both generate JavaScript, but Dart is much more. Dart is meant to be an alternative to JavaScript with an entirely new language and its own VM with better performance. One of the use-cases of Dart is to run directly in a browser using a plug-in or even on a server. TypeScript so far does not have the ability to run directly in anything. It always gets translated to JavaScript.<br/> <br/> <strong>Why use TypeScript?</strong><br/> If CoffeeScript, Dart and JavaScript preprocessors can do the same thing as TypeScript then why use TypeScript? TypeScript was created with tooling in mind. If you are a developer who has used VS.net or any other IDE you probably know it’s not always easy to develop and debug JavaScript. That’s why we have all these preprocessors and options in the first place. By adding static typing annotations and other features in TypeScript Microsoft is attempting to build a way that will allow VS.net to improve the development experience with JavaScript without changing or corrupting the JavaScript language. With TypeScript it is possible to get more accurate and helpful intellisense/code-completion, error and syntax highlighting during development and still output standard JavaScript code.<br/> <br/> <strong>One more reason to use TypeScript</strong><br/> Windows 8 is soon to be released to the public. One of the ways developers can write apps for Windows 8 is with HTML/CSS/JavaScript. TypeScript was built to help enhance JavaScript tooling support and to also help developers manage larger application scale JavaScript projects. I would not want to try to write something like Microsoft Word in plain JavaScript, but TypeScript may make a large project more feasible. I suspect TypeScript was built in part to help developers write and maintain larger JavaScript applications for Windows 8.</p>
<p></p>
<p>I’m looking forward to seeing where TypeScript goes and how it is used. Although it is open source and works with any technology stack and several IDEs outside of Visual Studio I predict it will mostly be used by Microsoft developers. As usual it’s not always about which technology is the best, but which you feel the most comfortable with and which fits best for what is needed. I encourage anyone interested in JavaScript development to take a look and see what it has to offer.</p>Web Site Security Tipstag:www.techhui.com,2012-07-16:1702911:BlogPost:1104872012-07-16T08:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<h1 dir="ltr"><span>Web Site Security Tips</span></h1>
<p><b><br></br></b> When developing web sites it’s a good practice to address security from the start. Here are some basic security tips that I find many sites overlook.<b><br></br> <br></br></b></p>
<ol>
<li><span>Use different passwords for your server, database, FTP and other logins. I am often surprised to find many sites that use the same admin password for all their systems or use the same default password without forcing a password…</span></li>
</ol>
<h1 dir="ltr"><span>Web Site Security Tips</span></h1>
<p><b><br/></b> When developing web sites it’s a good practice to address security from the start. Here are some basic security tips that I find many sites overlook.<b><br/> <br/></b></p>
<ol>
<li><span>Use different passwords for your server, database, FTP and other logins. I am often surprised to find many sites that use the same admin password for all their systems or use the same default password without forcing a password change.</span></li>
<li><span>Use strong passwords. Passwords like “password” or “password123” are apparently very easy to figure out.</span></li>
<li><span>Change your password regularly.</span></li>
<li><span>Make sure your chosen data access method protects against SQL injection attacks. ORMs and other database libraries have made it easier to protect against SQL injection attacks, but I still often come across web site code that use plain string concatenation to construct SQL queries.</span></li>
<li><span>Validate your form data both on the client and server side. I often come across sites that only validate on the client side using Javascript. Turn javascript off for a site that does not validate data on the server side and you might have some fun seeing your form input go through as if it’s fine or have the server spit back nice exception messages.</span></li>
<li><span>Validate all query string inputs. Similar to form inputs your query string inputs should also be validated on the server side.</span></li>
<li><span>If your site hosts any sensitive information consider using SSL.</span></li>
<li><span>Configure your server to return a generic error page instead of a detailed error message. Detailed error messages not only look bad, they often give users information about your server and code.</span></li>
<li><span>Encrypt user passwords and do not send users their passwords. Instead use a form of password reset that does not involve sending users their passwords.</span></li>
<li><span>Encrypt server passwords in configuration files on the server. Especially if you host your site on a 3rd party host, there is no way to know who is looking at your configuration files.</span></li>
<li><span>Configure your server so that your web site directories and files are not writable. If you allow user uploads to your site make sure you configure security so that only valid files can be uploaded. Ideally your upload directory should not be placed in your web site directories. If it needs to be then make sure files in that directory are not executable.</span></li>
<li><span>Make sure to run your production site using production settings. Turn off any “debug” mode settings. Leaving “debug” settings on not only makes a site perform slower, it leaves it open to someone who wants to gather information about your site.</span></li>
<li><span>When publishing your site make sure that only necessary files get published. Don’t publish files generated by your source control or your IDE. Make sure you are not publishing files such as database scripts and schemas or development documents and backup files. Renaming unused files as “.old” is not a good practice.</span></li>
<li><span>Turn off directory browsing</span></li>
<li><span>Configure your server to serve only the files you want it to serve and limit its ability to handling only the server technology of your choice. For example, if your site only has html pages in it don’t enable php.</span></li>
</ol>
<p><b id="internal-source-marker_0.5071060620248318"><br/></b> These are not all the security issues sites should be aware of, but these are some of the most overlooked issues based on my experience. Not all sites will be able to to implement every security solution and no site is 100% safe. The main idea is to keep the surface area of attack as small as possible. It’s not fun if your site gets compromised. Keep security in mind so you can have fun building apps!<b id="internal-source-marker_0.5071060620248318"><br/></b></p>10 Reasons to Write a Native Mobile Apptag:www.techhui.com,2012-05-14:1702911:BlogPost:1092462012-05-14T20:27:25.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p>In recent years smartphones have become part of many people's daily lives. They are used to communicate, stay updated, take photos, listen to music and entertain us with hundreds of thousands of apps. People carry their cellphones around with them wherever they go. They wake up with them, eat with them and go to bed with them. <br></br><br></br>For companies this presents another opportunity to market and reach out to customers. If you or your company is considering a mobile presence there are…</p>
<p>In recent years smartphones have become part of many people's daily lives. They are used to communicate, stay updated, take photos, listen to music and entertain us with hundreds of thousands of apps. People carry their cellphones around with them wherever they go. They wake up with them, eat with them and go to bed with them. <br/><br/>For companies this presents another opportunity to market and reach out to customers. If you or your company is considering a mobile presence there are two main paths to getting there: an HTML mobile web site or a native app built specifically for one or more mobile devices.<br/><br/>Determining whether to create an HTML mobile web app or a native mobile app is a significant decision. A mobile web app is an app that users reach using their phone's browser. These apps are usually a combination of HTML and Javascript and function similar to web sites. A native mobile app in contrast is an app that is designed and compiled specifically for a mobile device. These apps must be installed onto the device and work only on the device it was designed for. <br/><br/>This article does not discuss whether you should or should not create a mobile presence. This article presents 10 reasons why you might want to consider creating a mobile app instead of or in addition to an HTML mobile site for both companies and developers.</p>
<ol>
<li>A well done native mobile app will almost always provide a better user experience. While HTML web apps have improved they are still unable to match the speed and responsiveness of a native app. If a user clears their browser cache and history your app will need to be downloaded again. Native apps can more easily be designed to work offline without having to download resources from the web after the initial install or update.</li>
<li>You have more control over what the user experiences. The capabilities of HTML sites depend largely on the browser being used. </li>
<li>Native apps can achieve more functionality than web apps. While web apps are gaining ground it is still easier, faster and more reliable to use native code to access device hardware and run in the background. Use of the gyroscope, compass, camera, microphone, gps, bluetooth, filesystem, SD card, local databases, 3D capabilities and local media resources are all more capable and stable in a native app.</li>
<li>On some platforms native apps have the ability to communicate and share with other native apps using hooks and APIs. Your app can also be designed to accept and act upon data from other apps. For example, native apps with the correct permissions can access phone data such as the address book and calendars, or they can offer users the ability to upload photos or messages to multiple services.</li>
<li>Your app will be installed directly onto users' devices. Once a user installs an app it will either appear directly on one of their home screens or in their app list. In either case your app is constantly on their device and all they need to do is touch it to launch your app. Your app's icon will serve as a constant reminder of your company to users and it’s much easier for users to touch an icon than it is to navigate to a web site.</li>
<li>Apps allow for another method to connect with users. When an app is updated users will be notified of updates. It's also possible to build apps that send push notifications, allowing you to communicate with users even when they are not using the app.</li>
<li>Apps give users another reason to talk about your company or service. It gives companies another path to reach users in addition to traditional marketing and web sites.</li>
<li>If you sell your apps or goods and services through your app there is a potential to make money. You can leverage the platform’s payment services and have millions of potential users already set up and enabled to purchase goods and services through your app.</li>
<li>Designing and developing for a native mobile app can help you to develop a more service based architecture, which can help if you plan to expand your online services to other devices.</li>
<li>As a developer designing a native mobile application allows you to expand your skillset. It is a great learning experience for any developer interested in mobile development.</li>
</ol>
<p><br/>Whether or not you decide to build a native web app depends mostly on what type of app you want to create. In most cases a native app is not needed, but if your app could benefit from several of the reasons above it might be worth considering creating a native app for your company or service.</p>The ASP.NET Web APItag:www.techhui.com,2012-03-22:1702911:BlogPost:1076142012-03-22T07:30:00.000ZDouglas Chinghttp://www.techhui.com/profile/DouglasChing
<p></p>
<p>Recently Microsoft released ASP.NET MVC 4 Beta. The new Web API framework is included along with this release as part of the ASP.NET and Microsoft web platform family. The Web API framework is Microsoft’s latest solution to creating simple RESTful web services that can be consumed by a large range of clients. Unlike asmx and WCF services the Web API aims to be a simple RESTful way to create web APIs.<br></br> <br></br> <strong>Getting Started:</strong><br></br> <br></br> If you do not have…</p>
<p></p>
<p>Recently Microsoft released ASP.NET MVC 4 Beta. The new Web API framework is included along with this release as part of the ASP.NET and Microsoft web platform family. The Web API framework is Microsoft’s latest solution to creating simple RESTful web services that can be consumed by a large range of clients. Unlike asmx and WCF services the Web API aims to be a simple RESTful way to create web APIs.<br> <br> <strong>Getting Started:</strong><br> <br> If you do not have Visual Studio 2010 get the free Visual Web Developer Express version here:<br> <a href="http://www.asp.net/get-started">http://www.asp.net/get-started</a><br> <br> Next install MVC 4 (currently in Beta, supports a go-live license):<br> <a href="http://www.asp.net/mvc/mvc4">http://www.asp.net/mvc/mvc4</a></p>
<p> </p>
<p><strong>Creating a simple Web API:</strong><br> <br> Create a new project and select “ASP.NET MVC 4 Web Application”. </p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396592564?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396592564?profile=RESIZE_1024x1024" width="670" class="align-full"></a></p>
<p></p>
<p></p>
<p>Next choose the “Internet Application” template. If you just want a Web API app then choose the "Web API" template.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594432?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594432?profile=original" width="674" class="align-full"></a></p>
<p></p>
<p><br> In the Solution Explorer right-click the “Controllers” folder and select “Add” > “Controller...”</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396594571?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396594571?profile=original" width="660" class="align-full"></a><br> <br> <br> Name your new controller and select “API controller with empty read/write actions” for the Template.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396595381?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396595381?profile=original" width="604" class="align-full"></a></p>
<p><br> <br> Add a simple class to your controller so that our new web api can return some data.</p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396595525?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396595525?profile=RESIZE_1024x1024" width="670" class="align-full"></a></p>
<p><br> <br> Replace your controller’s Get methods with code to return a list of books or a single book.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396601947?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396601947?profile=original" width="636" class="align-full"></a></p>
<p><br> Start your project by pressing “F5” or choosing “Debug” > “Start Debugging”<br> <br> You should see your web site’s homepage, but we want to see our new web api in action so type “/api/Books” after your site’s URL.</p>
<p></p>
<p><a href="http://storage.ning.com/topology/rest/1.0/file/get/396603691?profile=original" target="_self"><img src="http://storage.ning.com/topology/rest/1.0/file/get/396603691?profile=original" width="627" class="align-full"></a><br> Our books have been returned to the browser in XML format. Ready to be consumed by virtually any type of client without having to deal with data contracts or complicated configuration. Depending on your client the Web API can return XML, JSON or form-urlencoded data. Media formatters can be written to support additional types of data formats.<br> <br> Now add a “/4” to your URL and you should see a single book returned.<br><br></p>
<p>Web API is closely related to ASP.net MVC. Naming in particular determines which method gets called for a request. The main verbs used most frequently for CRUD (Create, Read, Update, Delete) are supported. Methods with names starting with “Get” are called on get requests, methods starting with Post for post requests, methods starting with Put handle put requests and methods starting with Delete handle delete requests.<br> <br> While it looks similar to ASP.net MVC Web API can be used in many scenarios. Some other nice features of the Web API:</p>
<ul>
<li><span>It can be used in a WebForms or ASP.NET MVC app side by side with other web site files and resources.</span></li>
<li><span>Like WCF it can be self-hosted within another application, for example a console app, and does not need to run under IIS.</span></li>
<li><span>Supports OData URL queries, Model Binding, Validation, Authentication and has full .net framework support behind it.</span></li>
</ul>
<div>
<I hope this post showed how simple and easy it is to create Web APIs. It's just one of the many pieces of .net technologies being released in the months ahead.<br />
</div>