<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-13229558</atom:id><lastBuildDate>Sun, 01 Sep 2024 09:46:30 +0000</lastBuildDate><category>personal</category><category>Tips and Tricks</category><category>Microsoft</category><category>Programming</category><category>Software</category><category>Software Development</category><category>open source</category><category>linux</category><category>Google</category><category>Tutorial</category><category>blogging</category><category>C#</category><category>Android</category><category>Music</category><category>Apple</category><category>Careers</category><category>city life</category><category>Internet</category><category>Tools</category><category>.Net</category><category>Angular</category><category>Mobile</category><category>Visual Studio</category><category>Visual Studio Code</category><category>business</category><category>AdSense</category><category>AngularJS</category><category>Certifications</category><category>Design Patterns</category><category>Events</category><category>Food</category><category>GitHub</category><category>Hardware</category><category>How to</category><category>Python</category><category>politics</category><category>AWS</category><category>Amazon</category><category>Angular Material</category><category>Back to the future</category><category>Cloud Computing</category><category>Directions</category><category>ES6</category><category>Family</category><category>Gaming</category><category>Gmail</category><category>Google Keep</category><category>Hollywood</category><category>IT</category><category>JavaScript</category><category>Kindle</category><category>MLB</category><category>Manila</category><category>MongoDB</category><category>MongoDB Stitch</category><category>Movies</category><category>Networking</category><category>Red Sox</category><category>SQL Error</category><category>Serverless</category><category>State Machine</category><category>Stateless</category><category>TDD</category><category>TypeScript</category><category>VBScript</category><category>Webpack</category><category>Wifi File transfer</category><category>cyberbullying</category><category>review</category><title>Marvin Trilles</title><description></description><link>http://trashvin.blogspot.com/</link><managingEditor>noreply@blogger.com (MARVIN TRILLES)</managingEditor><generator>Blogger</generator><openSearch:totalResults>168</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-2752583705689102215</guid><pubDate>Fri, 05 Jan 2018 11:44:00 +0000</pubDate><atom:updated>2018-01-05T03:44:49.979-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><title>What I Learned In 2017 : Technology and tools I learned as part of my code therapy</title><description>&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoYfskH4oYq7RSu-_Kyitj164qzDEv-2Q4tA4MognEczZOD22T_GVp1Gvf2a0KJLpmu8DuAvnwCHUh3hUgDzC9ALTvRNm40gOQXPtbV2xiGarKhkg5cr8M94mg4ICpiqDtIex2rg/s1600/2017.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Taken from the internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #2457a0; float: left; font-size: 75px; font-weight: 600; line-height: 1; padding-left: 3px; padding-right: 8px; padding-top: 4px;&quot;&gt;T&lt;/span&gt;he year 2017 ended in the usual festive way. It is, therefore, just standard for us to be retrospective of the year that was and look forward to new plans for 2018. Personally, last year was life-changing. Bleak at it may seem, I managed to look at the lighter side of things. I literally stayed at home the whole year recuperating from a health issue. Instead of stumbling into depression, I resorted to code-therapy! From mid-2017, I shifted from full-time desktop developer to a wannabe web developer. It was fun, like being handed with a new toy to play around. Here is my alphabet listing of what got me interested and always looking positive last year.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHXUg-VBTk1hY1M8Z8CW4CHxpqzvDI4DoSIWuf45QBoKTRWM60N_WgvJKrupl6x-uF0d5FNn43DQP0NOktEDZzpYvVU6QD7Yq2Ptposoje7bgald0hivegop8_cT3GKJAmmmcUBA/s1600/A-E.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Angular&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
I once have the desire to learn Angular late 2015, when it was still referred to as AngularJS. Because of work schedules and other priorities, it was buried from my bucket list. Last year was different, I had time. I started with Angular 2.0 and due to the fast releases from Google, my last personal project ended using Angular 5.0. I believe the project structuring, the CLI, and TypeScript made my transition easier and fun.&lt;br /&gt;
&lt;br /&gt;
Runner ups: AWS and Azure&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Bootstrap&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Beginners love Bootstrap. I loved it. Why not? Your layout looks professional without exerting too much time and effort. Last year, I delved deeper into using Bootstrap for my personal projects. Responsive layouts and eye-catching themes make designing the page satisfying. It has its drawbacks, such as being heavy for simple projects, but I used it anyway.&lt;br /&gt;
&lt;br /&gt;
Runner ups: Blockchain and Bitcoin&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CSS&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Any starting developer knows should start with the three basic tools: HTML5, JS, and CSS. A prerequisite before branching out to larger frameworks. I have been exposed to CSS before, primarily for changing the appearance of my blog. Last year its different. I relearned CSS for actual development, including some reading on available preprocessors such as LESS and SASS. It has not been smooth but grasping the basic concepts behind it was very useful.&lt;br /&gt;
&lt;br /&gt;
Runner up: Cordova and CSharp 7.0&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;DotNet Core&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
I am a DotNet guy since 2002. Almost all my projects were DotNet, particularly C# apps. Yes, I may have played with Mono on Linux for a short time but I always go back to Windows because of Visual Studio. Last year, I had the time to experience DotNet development outside the usual Windows environment. Actually most of my coding now is inside MacOS. I love Visual Studio for Mac and Visual Studio Code. Last year, I spent my time learning new DotNet WebApi, hosting project and managing projects in VisualStudio.com. Microsoft path is interesting, thats coming from a wannabe web developer who has come to embrace JavaScript.&lt;br /&gt;
&lt;br /&gt;
Runner up: Docker&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ES6&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
ECMAScript6, JavaScript with a punch! It contains the latest and greatest features JS developers have been craving for years. From arrows, template strings, spreads, classes, and more. I did not just study JavaScript, I studied ES6.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCiXfMkLMt7CJ-wQnQ3UnPZFHdACBaaPyGICUh4-dJ7LTWpHeDSG7-nC4CHhUhsWZa0HNu0oiumB0OjrAioj8qz9O5Un0VYqlwjkzisuqOlEi_dy2g0rJGt60ycTztJXcCkMfHhA/s1600/F-J.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Functional Programming&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
After years of being in the background, Functional Programming has been making waves for all the right reasons. No, I did not have an specific project for this but it made me read lots and lots of articles regarding this paradigm. The good thing about it is I don’t have to chose a specific language to learn its concept. I am hoping that this year I could explore more of this concept an apply it to C#, JavaScript, Python, and (hopefully) Kotlin.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;GitHub&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Our favorite online repo! Last year, I got active. I created a couple of projects which I actively maintain.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;HTML5&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
The language has definitely improved since my college days. I still remember buying an HTML Complete Guide book in year 2003 because I intended to a web developer then. As you know my story, I got tied with desktop development. But it is not too late to learn and last year was just a start.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ionic&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
A few years ago, I studied Android development in Coursera. Unfortunately, there is something with Java that turns me off. This year, I enjoyed the learning experience with Angular and Ionic is the best route to continue my mobile development obsession. No projects yet, just trying to read articles about Ionic.&lt;br /&gt;
&lt;br /&gt;
Runner up: Identity Server&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;JavaScript&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
A language every web developer must know. Prior to 2017, it is just a language to script animations and effects for my blog. But last year is different, I made a jump to learning the language for real :)&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Y8esh8QembEn5gCvP3e6bCJaKYd89t4YT2WIh-OnYpjX6gwzSZp5nyB9auXhhIrpK_rtIToJ4FudL2BUWlt-3zBLVFjEWgLcfcpt8ktVyuxW-nCT8ewGRn7q1ZTjA8M3rDuZnQ/s1600/K-O.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Kotlin&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
You probably have read my disappointment with Java, so when Google announced that Kotlin is now a first class language for Android, it was a breath of fresh air. The articles, reviews, and forums have suggested that it doesn’t disappoint!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Lamda Expression&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
They have been around for years but never have have I really see the use of them on regular programming task. Last year, I had the chance to work with the EntityFrameworkCore and lambda expressions were all over it. I had brief work with Python and they are there. ES6, they are there. If I adapt functional programming, they will be there!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;MongoDB-Stitch&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
The idea of going serverless have been on my mind for some ideas I have. While I was studying MongoDB, I subscribed to their newsletter and received an email about their new product MongoDB Stitch. It was still in beta when i heard about so I decided, maybe I give it a test drive. I have created 2 web projects since then using it!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NodeJS&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
It seems like JavaScript has conquered every development space, from front-end, server side, and even desktop ( ElectronJS ). I have several server side projects before at work, all Microsoft related. Year 2017 was, however, a year I stepped out of my comfort zone. With all the buss around NodeJS, I jumped right in. Reading articles and tutorials, and using NPM. Perhaps 2018 is the year i do actual NodeJS projects.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Open Source&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
In the year 2007, I was part of the team that evaluated and planned for the IT infrastructure of the university where I was working, I even wrote an article about it. Ten years later, I find myself not able to contribute still to an open source project, neither have I published a project for open sourcing. That all changed last year, as I have used GitHub to publicly host my project repos.This made them open for any contributors as well as open for those who wants to use it. Human knowledge belongs to the world!&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGKn_ewIZ5fN5hwYPgY3bwEGXjf5Sh0r0oTZyIeMHLGE54nDCbsAS28d3TF_Z6DzL-M0xOqKxidjyHjPt52zaeiJS54Gw7L8qSQM6HrKpSJbMwucYq9oeCMS73tFS0NzImp1BJIQ/s1600/P-T.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Python&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Python ranked number 2 on my top list of programming languages I love. Just sitting below C3 and above JavaScript. I just love the simplicity, power, and flexibility. In reality, I do not have any production ready project in Python. I did some games and simple web app ( using BottlePY! ), thats about it. I doubt if I will ever be involved in a Python job, one thing is sure, however, everybody enjoy coding in Python!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Quitting&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
If there is one thing last year have taught me, aside from tech stuff, is to not quit. No matter how dire your situation is, you can never quit!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;React&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
With my progression as a wannabe web developer, I came across several JS frameworks aimed to make life easier. How could I miss REACT! One, its famous and two, it is maintained by Facebook which makes it more famous. Thus, hours has also been devoted evaluating and reading about it. While I settled for Angular as the first framework to learn, React is next on my list. Several courses at Udemy has been scheduled!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Stack Overflow&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Last year was the year I decided to at least be active in Stack Overflow. Known as the holy grail of modern day developers, the community is growing every year. What better way to engage yourself but to participate. Last year paved way for my first question posted as well my first answer on the site.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Test Driven Development&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
The joy of TDD. Unlucky me, my work does not believe in the concept. I do. So in 2017, I revisited TDD. All the DotNet code I have last year have at least a unit test included. I wrote a small write up on doing TDD in Python. Unluckily, I have not implemented TDD on my JS projects. But, hey! We have a whole year ahead to learn.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpe5F2ZrtJEZ14arQpcjmAGofpLDrd-n9S6C_b2AdaPw09QZ8WKAJKt73tckwG80Lu2xMGbVj1THC2KZNDNUOOhGwfhDItbqYYVXUujnSQGqyrPx0twHzam2oTbDQdcGlWqTd_fw/s1600/U-Y.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Universal Windows Platform&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Being a desktop developer all my career, you might have thought why I still have to be interested with UWP. It should be automatic! I wish. I am a dinosaur developer stuck with old technology! No, there was no project created last year but I would certainly want to release something this 2018.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;VueJS&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
The battle of JS frameworks and libraries rages on! Vue has been making waves. Some says its a thing of Vuety and that Vuetify is its answer to Angular Material. Yes, I’m in! No serious coding, for now. Just learning my way around the framework is enough for 2017.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Wordpress&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
My personal blog and all small blogs I have tried to come up are all in Blogger! But due to the popularity of Wordpress, I decided to start learning the platform. What better way to learn but to create one! This year would be the year of expanding and perhaps learn Wordpress coding. Hello, PHP.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Xamarin&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Developers are so blessed with all the tools available. When my frustration with Java was building during my exploration of android development, I have always wished i can do the coding in C#. Xamarin was just starting back, then Microsoft came in made it the next big thing. With Microsoft Visual Studio supporting Xamarin, UWP, and Xamarin Forms development jus got more exciting.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Yeoman&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
During the first few months of 2017, the support for DotNet Core development in Visual Studio for Mac was a bit lacking. Even the scaffolding of DotNet Core is missing. Enter your reliable Yeoman! This helped me go on while waiting for the release of Visual Studio 2017.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiICa7BhCZCA1STD9uEJ0eZ-Tis4P7hZnub5h69d27G-KuqxtohvnR91XF33wK9wa2S1JZDFnAZhru9ScDpGAzQesr_go5SM4i2VoA2TtyhyIKtL-vSJlvfEb4Om46lrq2QUGjJMw/s1600/z.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Taken from the internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;ZZZZzzzzzzss&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Finally! Last year, I got the much needed sleep for my body. We can always push ourselves to the limit but we must learn when to rest.&lt;br /&gt;
&lt;br /&gt;
The new year just began and I believe we all have a list of things we would like to learn. Lets start 2018 with code cranking starting now!&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZBMHYdESLmEHk-cD8xjnlhS0jFX8tZK23qt-mEisa6CxNJaKCP8EyToPWF3OG92gjhALNZokpcUHaakIMsLzGooNI9DjN8Tgks8TAmwa6KDt0oX0zyri49V0aDDO9eVbVHwj0AA/s1600/2018.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Taken from the internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://trashvin.blogspot.com/2018/01/what-i-learned-in-2017-technology-and.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoYfskH4oYq7RSu-_Kyitj164qzDEv-2Q4tA4MognEczZOD22T_GVp1Gvf2a0KJLpmu8DuAvnwCHUh3hUgDzC9ALTvRNm40gOQXPtbV2xiGarKhkg5cr8M94mg4ICpiqDtIex2rg/s72-c/2017.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-8057450998114849303</guid><pubDate>Sun, 03 Dec 2017 12:56:00 +0000</pubDate><atom:updated>2017-12-11T01:47:46.338-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Angular</category><category domain="http://www.blogger.com/atom/ns#">Angular Material</category><category domain="http://www.blogger.com/atom/ns#">How to</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><title>MessageBox : Just Another Custom Alert Implementation for Angular</title><description>&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Bz2NKE_zZ37pobEf1S-DpqIm3l2tibrDgoBZ_3OdMEQodp-2zQK1HGx1aa4xD4czdks9sRZeO3xDhlilAuaTWYz41O9NTpgm87mH0xmBQKmdcBHRQSBpAgMe6job9kyW2_Q1Lg/s1600/lorem.gif&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;color: #2457a0; float: left; font-size: 75px; font-weight: 600; line-height: 1; padding-left: 3px; padding-right: 8px; padding-top: 4px;&quot;&gt;D&lt;/span&gt;ialog boxes never peeked my interest in my previous limited web development side projects, the fact that I have never seen the use of it is one reason and there is always the reliable call to Alert, which does the job that I require. Bootstrap&#39;s modal boxes are interesting but did not have time to really dive into it. Then came a chance to learn Angular.&lt;br /&gt;
&lt;br /&gt;
I have been playing with Angular and Angular Material for almost 2 months. Just last month, they literally broke me by breaking some of my codes with its latest release. Don&#39;t start mentioning flex, can&#39;t seem to wrap my head around it. But there&#39;s just this thing about these framework that you love and hate. For one, it&#39;s implementation of Angular Material Dialog Boxes is easy to understand.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6nB7O75bU0cE0tZUZ0qNRfvYKv5fbI3jHOTpAd1owd_kAxoM9gkCcL1p7Fo65ec7Y789Vtf2r9sKENy8xz3_HrlN_zB_XMsh1P5DgzxzZ-tHk3RiSrudrAGakl0mZe_apg3lQVg/s1600/messagebox.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : Internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
I had years of work relying on Windows Message Boxes for alerting just about anything. A simple call and easy to get results.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;string message = &lt;span style=&quot;color: #009933;&quot;&gt;&quot;Do you want to abort this operation?&quot;&lt;/span&gt;;
string title = &lt;span style=&quot;color: #009933;&quot;&gt;&quot;Close Window&quot;&lt;/span&gt;;
MessageBoxButtons buttons = MessageBoxButtons.AbortRetryIgnore;
 
DialogResult result = MessageBox.Show(message, title, buttons, MessageBoxIcon.Warning);
&lt;/pre&gt;Oh, I miss the WinForms day, but things have to move on. So, I tried to mimic the style of call in Angular to display a custom Alert box. Here is my sample call to display the alert box.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;MessageBox&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.show&lt;/span&gt;(this.dialog, this.message, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;title&lt;/span&gt;, this.information,
      this.button,this.allow_outside_click, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;style&lt;/span&gt;, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;width&lt;/span&gt;)&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.subscribe&lt;/span&gt;( result &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
        console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(result);
    });

MessageBox&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.show&lt;/span&gt;(this.dialog, `The result is : &lt;span style=&quot;color: blue;&quot;&gt;$&lt;/span&gt;{respone}`);
&lt;/pre&gt;Here is my implementation. It may not be the most elegant or most efficient approach but it gives me what I need. By the way, the source code is available &lt;a href=&quot;https://github.com/trashvin/messagebox-like-angular-alertbox&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Component&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
I created one component for the MessageBox UI. It has two available styles: Full and Simple. The UI elements are illustrated below.&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBGmzIwxoTxO_FV3kipnwsRWUvstX0e35bBb9RrjQRMs458vmq04Ve0STeWHsyV0EuRsViHiNa8KuNyDrmnkYq4VBKBoXoPt2iVQ2ZC9PySBaDORwxuysh9r4oAL0ST8iU2wPN0w/s1600/Page+1+2.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Configuration Options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Title - Displayed text in the dialogs title bar. It defaults to &quot;Alert&quot;, if not provided. The title bar is only shown when the style is set to &quot;Full&quot;.&lt;/li&gt;
&lt;li&gt;Message - The main message to be shown to the user.&lt;/li&gt;
&lt;li&gt;Information - An optional additional information to be displayed.&lt;/li&gt;
&lt;li&gt;Buttons - The types of buttons to be shown. Currently, it only supports the following: OK, OK/CANCEL, YES/NO, ACCEPT/REJECT.&lt;/li&gt;
&lt;li&gt;Allow Click Outside To Close - Allow users to simply click at any region in the screen outside the dialog box to close it. By default, the users need to click on the buttons to initiate closing.&lt;/li&gt;
&lt;li&gt;Style - Defines the style for the dialog box. It supports two style: Full and Simple.&lt;/li&gt;
&lt;li&gt;Width - The width of the dialog box.&lt;/li&gt;
&lt;/ul&gt;The DialogBox component does not have complex logic behind. It is designed to display a message and return the user response. When user clicks a button, close the UI and return the result.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;onOk() {
  this.dialogRef.close({result: &quot;ok&quot;});
}
onCancel() {
  this.dialogRef.close({result: &quot;cancel&quot;});
}&lt;code&gt;&lt;span class=&quot;label&quot;&gt;simple-dialog.component.ts&lt;/span&gt;&lt;/code&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;The Static Class&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;I used a static class to mimic the C# call. A service must have been the better implementation but I opted for the simpler one. The only issue I had with this approach is that a static class cant take advantage of the DI, thus, you will notice that I have to pass the MatDialog object as parameter.&lt;/div&gt;&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;export&lt;/span&gt; &lt;span style=&quot;font-weight: 700;&quot;&gt;class&lt;/span&gt; MessageBox {
  &lt;span style=&quot;font-weight: 700;&quot;&gt;static&lt;/span&gt; show(dialog: MatDialog, message, title &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009933;&quot;&gt;&quot;Alert&quot;&lt;/span&gt;, 
                information &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009933;&quot;&gt;&quot;&quot;&lt;/span&gt;, button &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;, allow_outside_click &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #9700cc;&quot;&gt;false&lt;/span&gt;, 
                style &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;, width &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009933;&quot;&gt;&quot;200px&quot;&lt;/span&gt;) {
    &lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; dialogRef &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; dialog.&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;open&lt;/span&gt;( SimpleDialogComponent, {
      data: {
        title: title &lt;span style=&quot;color: blue;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #009933;&quot;&gt;&quot;Alert&quot;&lt;/span&gt;,
        message: message,
        information: information,
        button: button &lt;span style=&quot;color: blue;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;,
        style: style &lt;span style=&quot;color: blue;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;,
        allow_outside_click: allow_outside_click &lt;span style=&quot;color: blue;&quot;&gt;||&lt;/span&gt; &lt;span style=&quot;color: #9700cc;&quot;&gt;false&lt;/span&gt;
      },
      width: width
    });    
    &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; dialogRef.afterClosed();     
  }
}&lt;code&gt;&lt;span class=&quot;label&quot;&gt;simple-dialog.component.ts&lt;/span&gt;&lt;/code&gt;
&lt;/pre&gt;Notice that the response is returned as an Observable. The consumer of this class needs to subscribe to get the actual response.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The MessageService&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In some cases, my application need a message service to fire my dialog box. This is commonly used to display a message as a result of a completion of a process from another service. Here is a simple message service to do the job.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;@Injectable()
export class MessageService {
  private message = new Subject&lt;any&gt;();
  constructor() { }
  sendMessage(message: string, type = 1) {
    this.message.next({text: message, type: type});
  }
  getMessage(): Observable&lt;any&gt; {
    return this.message.asObservable();
  }
  clearMessage() {
    this.message.next();
  }

}&lt;code&gt;&lt;span class=&quot;label&quot;&gt;simple-dialog.component.ts&lt;/span&gt;&lt;/code&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;How to Use MessageBox&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We can simply call the MessageBox.show() method directly on your code.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;MessageBox&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.show&lt;/span&gt;(this.dialog, this.message, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;title&lt;/span&gt;, this.information,
      this.button,this.allow_outside_click, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;style&lt;/span&gt;, this.&lt;span style=&quot;color: #6782d3;&quot;&gt;width&lt;/span&gt;)&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.subscribe&lt;/span&gt;( result &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
        console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(result);
    });

MessageBox&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.show&lt;/span&gt;(this.dialog, `The result is : &lt;span style=&quot;color: blue;&quot;&gt;$&lt;/span&gt;{respone}`);
&lt;/pre&gt;Or, if you wanted to use a message service.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;onSendService() {
    this.messageService.sendMessage(this.message);
  }
&lt;/pre&gt;Just make sure you have subscribed to the service.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;this.subscriber = this.messageService.getMessage().subscribe(message =&gt; {
        MessageBox.show(this.dialog, message.text);
    });
&lt;/pre&gt;&lt;br /&gt;
I know, you may have comments or suggestion about the solution. Feel free to hit the comment box. Happy coding!</description><link>http://trashvin.blogspot.com/2017/12/just-another-custom-alert-for-angular.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6Bz2NKE_zZ37pobEf1S-DpqIm3l2tibrDgoBZ_3OdMEQodp-2zQK1HGx1aa4xD4czdks9sRZeO3xDhlilAuaTWYz41O9NTpgm87mH0xmBQKmdcBHRQSBpAgMe6job9kyW2_Q1Lg/s72-c/lorem.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-1620878484562664968</guid><pubDate>Wed, 08 Nov 2017 07:28:00 +0000</pubDate><atom:updated>2017-11-08T03:16:30.653-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ES6</category><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">MongoDB</category><category domain="http://www.blogger.com/atom/ns#">MongoDB Stitch</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Serverless</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><category domain="http://www.blogger.com/atom/ns#">Webpack</category><title>Get Started with MongoDB Stitch : The New Backend As Service Offering from MongoDB</title><description>&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinRrUQMqDKGk0lcaXJFoi8nC68jeOkszWFUjIDmqsPXX60CKmTMW6tNoPfP4RHqLNwu3sTyBe8ic8TcTl9t2qFBXIKBdCc3YyHm9d9sUJvUTAaIIrR2_WFn0Z8wa79ZtW9IXTDWA/s1600/goingserverless.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : Internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;color: #2457a0; float: left; font-size: 75px; font-weight: 600; line-height: 1; padding-left: 3px; padding-right: 8px; padding-top: 4px;&quot;&gt;H&lt;/span&gt;alfway of this year, the guys from &lt;a href=&quot;https://www.mongodb.com/&quot;&gt;MongoDB&lt;/a&gt; launch their new backend as service product called &lt;a href=&quot;https://www.mongodb.com/cloud/stitch&quot;&gt;MongoDB Stitch.&lt;/a&gt; While the launch is just for the beta, the promise of the service is quite interesting. MongoDB has been around for long now and some development stacks have been based on its database product, the &lt;a href=&quot;http://mean.io/&quot;&gt;MongoDB-ExpressJS-Angular-NodeJS (MEAN)&lt;/a&gt; and the &lt;a href=&quot;http://mern.io/&quot;&gt;MongoDB-ExpressJS-React-NodeJS (MERN)&lt;/a&gt; stacks to name a few. These stacks, however, relies on backend technology such as &lt;a href=&quot;https://expressjs.com/&quot;&gt;ExpressJS&lt;/a&gt; and &lt;a href=&quot;https://nodejs.org/en/&quot;&gt;NodeJS&lt;/a&gt;. The idea of provisioning servers and developing the backend solution makes it daunting for small to medium scale applications. &lt;a href=&quot;https://www.mongodb.com/cloud/atlas&quot;&gt;MongoDB Atlas&lt;/a&gt;, at least made life much easier by providing on cloud database solution, but there must be a simpler solution, right? A solution the would stitch the backend and frontend together ( see what I did there ?).&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfQuOjaJa1W9fWZwFNMgJz1G6iTDdZnITVIU8Fwz2dYbG8DNO6pw0B3ZuTTev4B8jwLwTCMHTWgfi_UDtjkc1ZJQ0hhhH7IyNvU0yTbzodxI6M14VGpuIG57pVljN5BKpmQADBwA/s1600/introducing-stitch-7-638.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : MongoDB Presentation&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote style=&quot;color: grey; font-size: 15pt;&quot;&gt;MongoDB Stitch lets developers focus on building applications rather than on managing data manipulation code, service integration, or backend infrastructure. Whether you’re just starting up and want a fully managed backend as a service, or you’re part of an enterprise and want to expose existing MongoDB data to new applications, Stitch lets you focus on building the app users want, not on writing boilerplate backend logic.&lt;br /&gt;
&lt;br /&gt;
Stitch gives developers full access to MongoDB, the ability to declare fine-grained data access controls, and composability with other services. Initially, Stitch is available for MongoDB Atlas.&lt;/blockquote&gt;As a way to try out this new product, I decided to veer away from the usual &quot;todo&quot; app, that seems to be the new &quot;hello world&quot; standard for developers. The Philippine pop culture has been as creative as always and last month (or so), the Filipino millennial generation coined new slangs that have somehow trended a bit. Thus, to ride this temporary trend, I started writing up a simple web application utilizing just MongoDB Stitch and JavaScript. The app is as simple as it gets, it parses a Filipino phrase and translates it to the slang using the key-value pairs stored in the database. To add spice a bit, it keeps track of how may time a slang is used and allows users to suggest new terms. If you are interested, here&#39;s a link to the app, &lt;a href=&quot;http://trashvin.github.io/lodify&quot;&gt;Lodify&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;What We Need To Get Started&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Code Editor&lt;/li&gt;
It&#39;s your own preference, personally, &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt; fro Microsoft
&lt;li&gt;&lt;a href=&quot;https://www.mongodb.com/products/compass&quot;&gt;MongoDB Compass&lt;/a&gt; or &lt;a href=&quot;https://docs.mongodb.com/getting-started/shell/client/&quot;&gt;MongoDB Shell&lt;/a&gt;&lt;/li&gt;
This is optional, for you to view your collections. For free MongoDB Stitch users, you are not allowed to perform write operations directly into your collections using these tools.
&lt;li&gt;MongoDB Stitch Account&lt;/li&gt;
Of course, an account to access the service. There is a free tier if you just want to try it out. For pricing details and other information, you can visit their &lt;a href=&quot;https://www.mongodb.com/cloud/stitch/faq&quot;&gt;FAQ page&lt;/a&gt;. You can create a new account &lt;a href=&quot;https://cloud.mongodb.com/user?nds=true&amp;amp;_ga=2.208120086.548032254.1509939948-879241753.1494558879&amp;amp;nds=true#/register/accountProfile&quot;&gt;here&lt;/a&gt;.&lt;/ul&gt;I would assume a little background knowledge of HTML, CSS, JavaScript, and little MongoDB would be helpful. For the tutorial, I used the ECMAScript 6 features in my JavaScript code. I created a &lt;a href=&quot;https://github.com/trashvin/ES6-Starter-Kit&quot;&gt;ES6 Starter Kit&lt;/a&gt; with WebPack and SASS support for those who want to try out the &quot;ES6 and everything nice&quot; language features of JavaScript.&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC7K_M4we6T4SqrTH1RUuJkm_aYEPb5F0LdvVjrl4lc8aDoNR_RRARIHmKf9wOKIOGNV5t9HqFocQApGjJd7dY6W_zEDaQGEO5we3_f1S0RW18H2P6D4MoapvRXotq5tQSGJ_iuQ/s1600/es6.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : Internet&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Setting Up MongoDB Stitch&lt;/h2&gt;Currently, MongoDB Stitch uses MongoDB Atlas as its cloud backend. An on-premise database support may be in the works. Your MongoDB Stitch account is the same as your MongoDB Atlas account, from now on, we simply refer to it as MongoDB Cloud account.&lt;br /&gt;
&lt;h4&gt;Creating your first cluster&lt;/h4&gt;Login to your MongoDB Cloud account. If you have not created your cluster, go ahead and create one. A detailed steps on how to create a cluster can be found on &lt;a href=&quot;https://docs.atlas.mongodb.com/create-new-cluster/&quot;&gt;MongoDB Atlas documentation&lt;/a&gt;. Here&#39;s a view of my cluster, it is a free tier M0 cluster with 3 nodes replica set. As I have mentioned, for free tier, you only have access to the primary node using the SDK. You can use the Connect button to get the connection string needed to access the cluster via your MongoDB Compass or MongoDB Shell&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHaLcw5_aeANpywg1VcIWYUmFjRnRphuwyvqtWvGhEsD0BdBkGA9mwSi6reaS6C8cixU7DCUe2zThsGa5J_sGySS5ypUCtebFmDX60WLfM2-cxGkWeL2IyBBONnAo0c36EvQ9t3g/s1600/cluster.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h4&gt;Create your Stitch app&lt;/h4&gt;Click Stitch Apps in your MongoDB Atlas console and then click Create New Application. Name your application, it my case I used i-lodi-fy. Wait for your application to initialize. Once initialized, you will be taken to the Stitch Admin page.&lt;br /&gt;
&lt;h4&gt;Configuring your security&lt;/h4&gt;For our application, we want to allow anonymous users to access our data. Turn on Anonymous Login.&lt;br /&gt;
&lt;h4&gt;Setup your collection&lt;/h4&gt;Create the collection/s needed by our application. In our example, we will use &quot;lodi&quot; as the database name and our dictionary collection as &quot;dict&quot;.&lt;br /&gt;
&lt;br /&gt;
Configure the access rules for our collection.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;On the AtlasCluster section on the admin sidebar, click on mongodb-atlas.&lt;/li&gt;
&lt;li&gt;Under the Rules tab, select the collection that we created ( i.e. &quot;lodi.dict&quot; ). You can also add new collections here.&lt;/li&gt;
&lt;li&gt;Click on the collection to view the &lt;a href=&quot;https://docs.mongodb.com/stitch/rules/mongodb-rules-read/&quot;&gt;read rules&lt;/a&gt;, &lt;a href=&quot;https://docs.mongodb.com/stitch/rules/mongodb-rules-write/&quot;&gt;write rule&lt;/a&gt;, the &lt;a href=&quot;https://docs.mongodb.com/stitch/rules/mongodb-validation/&quot;&gt;validation rule&lt;/a&gt;, and the &lt;a href=&quot;https://docs.mongodb.com/stitch/rules/mongodb-filters/&quot;&gt;filter rule&lt;/a&gt;.&lt;/li&gt;
&lt;div style=&quot;width: 100%;&quot;&gt;&lt;pre class=&quot;important_note&quot;&gt;MONGODB AUTHORIZATION

MongoDB Stitch rules do not override the read and write access (i.e. authorization) that may have been set up separately in MongoDB. That is, MongoDB Stitch rules determine whether the fields are 
readable or writable; not whether the client has the authorization to read or write to a particular 
database or collection.

Similarly, MongoDB Stitch validation rules do not override document validation rules set up 
separately in MongoDB.
&lt;/pre&gt;&lt;/div&gt;&lt;li&gt;For our app, anyone must be able to read and write into the database. There fore we set the Read, Write and Validation rule to {}. To read more about these rules, refer to &lt;a href=&quot;https://docs.mongodb.com/stitch/rules/mongodb-rules/&quot;&gt;this document&lt;/a&gt;.&lt;/li&gt;
&lt;div style=&quot;width: 100%;&quot;&gt;&lt;pre class=&quot;important_note&quot;&gt;NOTE

This setup is not recommended for production ready application. It is best to define more granular
rules to control the reads and writes. Especially the write operations.
&lt;/pre&gt;&lt;/div&gt;&lt;li&gt;Delete any pre-existing filters on the Filter tab.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Our stitch application is now good to go. The next step is creating our front-end app.&lt;br /&gt;
&lt;h2&gt;Let us Build The Web App&lt;/h2&gt;If you prefer to look at the actual source to follow the discussion, download the source code &lt;a href=&quot;https://github.com/trashvin/lodify-front-end&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
For this example, I used Visual Studio Code as code editor. &lt;a href=&quot;https://webpack.js.org/&quot;&gt;Webpack&lt;/a&gt; is used as the module bundler, however, it was setup to bundle only our JS and CSS file.&lt;br /&gt;
&lt;h4&gt;Setting up our INDEX.HTML&lt;/h4&gt;To access the MongoDB Stitch library, we are going to use the hosted library file at Amazon. Add the following entry inside your Head tag.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&amp;lt;script src=&quot;https://s3.amazonaws.com/stitch-sdks/js/library/stable/stitch.min.js&quot;&amp;gt;&lt;/pre&gt;&lt;span class=&quot;label&quot;&gt;index.html&lt;/span&gt;Webpack does the bundling of our CSS and JS files, make sure that they are properly referenced by our page.&lt;br /&gt;
&lt;h4&gt;Lets begin coding&lt;/h4&gt;Let us begin by setting up Webpack to point to our entry JS file, index.js. This done on the webpack.config.js.If you intend to make use of a different file, make sure it is updated. Notice the output value, this is the file that should be referenced by our HTML page.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;entry: &quot;./app/js/index.js&quot;,
  output: {
    filename: &quot;./app/dist/bundle.js&quot;
  },&lt;code&gt;&lt;span class=&quot;label&quot;&gt;webpack.config.js&lt;/span&gt;&lt;/code&gt;
&lt;/pre&gt;On our index.js file, make sure that all file we need to place in abundle are imported. In our case, the SCSS file and two additional JS file.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #009933;&quot;&gt;&quot;../styles/styles.scss&quot;&lt;/span&gt;;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;*&lt;/span&gt; as lodifier from &lt;span style=&quot;color: #009933;&quot;&gt;&quot;./lodifier&quot;&lt;/span&gt;;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;*&lt;/span&gt; as localDB from &lt;span style=&quot;color: #009933;&quot;&gt;&quot;./data&quot;&lt;/span&gt;;&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Then we begin building our code by setting up connection to our MongoDB Stitch app and declaring the needed variables for the client and database.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;let stitch;
let client;
let db;
&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; connect &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; () &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: blue;&quot;&gt;try&lt;/span&gt; {
    stitch &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;window&lt;/span&gt;.stitch;
    client &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; stitch.StitchClient(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;i-lodi-fy-uhhdc&quot;&lt;/span&gt;);
    db &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; client.service(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;mongodb&quot;&lt;/span&gt;, &lt;span style=&quot;color: #009933;&quot;&gt;&quot;mongodb-atlas&quot;&lt;/span&gt;).db(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;lodi&quot;&lt;/span&gt;);
    &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #9700cc;&quot;&gt;true&lt;/span&gt;;
  } &lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt; ( err) {
    &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #9700cc;&quot;&gt;false&lt;/span&gt;;
  }
}&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/pre&gt;We created our client object via the call to the StitchClient function. The function takes a parameter, the App ID. This is the generated ID from the service when you created the application in the Stitch Admin. If you forgot the value, just log in to the Stitch Admin, it should be there. Then we created the database object, db, by creating a service that eventually calls the db function accepting the name of the database (i.e lodi). Optionally, we can create an object for the dict collection by calling the collection method of db similar to the code below:&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; dict_collection &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; db.collection(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;dict&quot;&lt;/span&gt;);
&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;To be able to use the Stitch Application, we need to log in. Even if we have turned on the Anonymous Login support, a login process is still to be done. This is to track individual access to the database via their generated &quot;authed id&quot;. For our application, that information is not being used by our collection, The anonymous login is being done by calling the login() function of the client. This will return a promise which should be handled by our code.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; stitchLogin &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; () &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; client.login();
}&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Now that we have created a way to login to the Stitch App, lets create the method to retrieve the collection. We have configured our collection to be read-accessible by any user, thus, calling the &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.find/&quot;&gt;find&amp;nbsp;&lt;/a&gt;function&amp;nbsp;will return all entries. The function returns a promise, thus, it should be properly handled by the code.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; getTerms &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; () &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  db.collection(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;dict&quot;&lt;/span&gt;).&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;find&lt;/span&gt;()
    .then(result &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      &lt;span style=&quot;color: #0066ff; font-style: italic;&quot;&gt;// ..process data here&lt;/span&gt;
    })
    .&lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt;(err &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      &lt;span style=&quot;color: #0066ff; font-style: italic;&quot;&gt;// .. do some error handling&lt;/span&gt;
    });&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;important_note&quot;&gt;IMPORTANT

Retrieving the whole collection for large system is not recommended. Add some filters and 
implement some form of paging.&lt;/pre&gt;Before moving on with the write operations, lets take a look at the schema and sampla data.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;&lt;span class=&quot;comment&quot;&gt;// Schema&lt;/span&gt;
{
    _id: string,
    approved: int32,
    count: int32,
    example: string,
    flagged: int32,
    lodi: string,
    type: int32
}
&lt;span class=&quot;comment&quot;&gt;// Sample Data&lt;/span&gt;
{
    _id: &quot;kain&quot;,
    lodi: &quot;enka&quot;,
    example: &quot;Tara enka na tayo.&quot;,
    count: 12,
    approved: 1,
    flagged: 0,
    type: 0
}&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;Document Fields
&lt;li&gt;The &lt;i&gt;&lt;b&gt;_id &lt;/b&gt;&lt;/i&gt;field is the primary key for the document. The actual formal acceptable term or word serves as the key, this ensures that it is unique.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;lodi&lt;/b&gt;&lt;/i&gt; field is the slang term.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;example&lt;/b&gt;&lt;/i&gt; field contains an example phrase where the slang can be used.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;count&lt;/b&gt;&lt;/i&gt; field holds the number of time the slang has been used.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;approved&lt;/b&gt;&lt;/i&gt; field distinguishes an approved term from the admin and suggested terms from users. Initially, all terms or slangs submitted by users are marked as suggestions. The admins review these and approved them if need be. This avoids polluting an already polluted slang dictionary&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;flagged&lt;/b&gt;&lt;/i&gt; field will be used in a future enhancement.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;&lt;b&gt;type&lt;/b&gt;&lt;/i&gt; field will be used in a future enhancement&lt;/li&gt;
&lt;/ul&gt;One feature of Lodify is to accept suggestions of terms from the user. Suggestions are terms that were submitted but is yet to be approved. To implement this, we use Stitch &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/&quot;&gt;insertOne&lt;/a&gt; function of the collection.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; addTerm &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; (term, lodi) &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; db
    .collection(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;dict&quot;&lt;/span&gt;)
    .insertOne({ _id: term, lodi: lodi, example: &lt;span style=&quot;color: #009933;&quot;&gt;&quot;&quot;&lt;/span&gt;, approved: &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;, count: &lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt;,flagged:&lt;span style=&quot;color: #0066ff;&quot;&gt;0&lt;/span&gt; });
};
&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Again, this call to Stitch returns a promise which should be handled by our code. A sample code to do just this can be seen below.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; add &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;() &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: #0066ff; font-style: italic;&quot;&gt;// .. codes here&lt;/span&gt;
  stitchLogin()
    .then(() &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      addTerm(term.&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;toLowerCase&lt;/span&gt;(), lodi.&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;toLowerCase&lt;/span&gt;())
        .then(() &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
          console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;Adding Done&quot;&lt;/span&gt;);
          &lt;span style=&quot;color: #0066ff; font-style: italic;&quot;&gt;// ..additonal codes here&lt;/span&gt;
        })
        .&lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt;(err &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
          console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;Failed&quot;&lt;/span&gt;, err);
       });
    })
    .&lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt;(err &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(err);
   });
};&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/pre&gt;Ok, so we can add a new slang. How about counting the instances a slang is used and display the commonly used slang to the users? The &lt;i&gt;&lt;b&gt;count&lt;/b&gt;&lt;/i&gt; field on our document is there to support this feature. The idea is that each time the slang or its equivalent term is encountered during parsing, we increment the count by one. To update our database, we use Stitch &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/&quot;&gt;updateOne&lt;/a&gt; function of the collection. And as always, it promises a return :)&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; updateCount &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; () &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; counts &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; lodifier.getCounter();
  stitchLogin().then(()&lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
    counts.forEach(word &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      update(word).then(res &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
        console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(`&lt;span style=&quot;color: blue;&quot;&gt;$&lt;/span&gt;{word} count updated :`,res);
      }).&lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt;(err &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
        console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;Failed Update&quot;&lt;/span&gt;, err);
      });
    },this);
  });
}
&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; update &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; (term) &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; db
    .collection(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;dict&quot;&lt;/span&gt;)
    .updateOne({_id:term},{&lt;span style=&quot;color: blue;&quot;&gt;$&lt;/span&gt;inc:{count:&lt;span style=&quot;color: #0066ff;&quot;&gt;1&lt;/span&gt;}},{upsert:&lt;span style=&quot;color: #9700cc;&quot;&gt;false&lt;/span&gt;});
};&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/pre&gt;So there you go. Basically thats a CRUD operation on MongoDB Stitch without a D. I did not see any delete operation necessary for the front-end. The Admin Console is a different story, when I get the chance to build it. Right now, Im just using a console app running on top of NodeJS to manage my collections. But to quench your curiosity, here is what a delete function looks like. To delete a single term, I used the &lt;a href=&quot;https://docs.mongodb.com/manual/reference/method/db.collection.deleteOne/&quot;&gt;deleteOne&lt;/a&gt; function.&lt;br /&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;font-weight: 700;&quot;&gt;const&lt;/span&gt; deleteOne &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt; (collection, filter) &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
  db.collection(collection).deleteOne(filter)
    .then(res &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(&lt;span style=&quot;color: #009933;&quot;&gt;&quot;Success :&quot;&lt;/span&gt;, res);
    })
    .&lt;span style=&quot;color: blue;&quot;&gt;catch&lt;/span&gt;(err &lt;span style=&quot;color: blue;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt; {
      console&lt;span style=&quot;color: #3333ff; font-weight: 700;&quot;&gt;.log&lt;/span&gt;(err);
    });
};&lt;span class=&quot;label&quot;&gt;index.js&lt;/span&gt;&lt;/pre&gt;Integration with MongoDB Stitch is, rather, straight forward. It is the setting up of the service that is somewhat tricky for beginners. The app did not require much of configuration.&lt;br /&gt;
&lt;h2&gt;Some Developer Notes&lt;/h2&gt;This tutorial have MongoDB Stitch as the main subject. However, it was also my first application built with ES6 and Webpack. Thus, there are some additional learnings along the way.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Using ES6 features can cause your app to not work on older browsers. Most of the new features are not transpiled bt Babel out of the box, you need to install additional mpm packages.&lt;/li&gt;
&lt;ul&gt;Additional Packages I Needed
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/babel-plugin-transform-es2015-arrow-functions&quot;&gt;babel-plugin-transform-es2015-arrow-functions&lt;/a&gt; - I love arrow functions in JS!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/babel-plugin-transform-es2015-for-of&quot;&gt;babel-plugin-transform-es2015-for-of&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Webpack is confusing at first, I am using 3.6.0. The webpack-dev-server transpiled JS used the &quot;const&quot; and somehow Safari my old iPad Mini running iOS 9+ complains about not supporting the keyword in strict mode. After research, or sya stack overflowing, for solutions, I decided to use Phyton&#39;s ( God I miss Python!) &lt;a href=&quot;http://www.pythonforbeginners.com/modules-in-python/how-to-use-simplehttpserver/&quot;&gt;SimpleHTTPServer&lt;/a&gt; to serve the site when testing it on mobile.&lt;/li&gt;
&lt;li&gt;I have trouble downloading the source map of the Stitch SDK hosted in Amazon S3 Server. I already raised &lt;a href=&quot;https://github.com/mongodb/stitch-js-sdk/issues/72&quot;&gt;this bug&lt;/a&gt; on their GitHub repo. While it did not cause me delays,I put it up just in case.&lt;/li&gt;
&lt;li&gt;GitHub is great hosting the app. Easy to setup. Then again, you can always drag and drop your site to &lt;a href=&quot;https://www.bitballoon.com/&quot;&gt;BitBalloon&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;So before I summarize this lenghty post, here is the app in action.&lt;br /&gt;
&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirMzeJdVM5t_PPYFpN5bsS3Hbb42EWGEkjJ8nQmaLHEkbF0-ybaEOmT0rNz0VoKqYYbjZZQGnOW5FzVxLkvwOiZACe4C0yngFrPHqa-v-mwngqD5IRviyI0ZJyJ-hvd0R6phISFg/s1600/demo3.gif&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : trashvin.github.io/lodify&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;In Closing&lt;/h2&gt;The new product offerring from MongoDB looks promising. Though I failed to utilize its other more complex features in this post, I believe theres plenty the developers would love. It is still in Beta phase, expect more improvement. In this time where a lot of solutions are moving towards the serverless approach, MongoDB Stitch is an option that you need to keep in your arsenal as a developer.&lt;br /&gt;
&lt;h2&gt;References&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://medium.com/@nparsons08/mongodb-stitch-your-application-backend-delivered-as-a-service-7cf21d979ed&quot;&gt;MongoDB Stitch — Your Application Backend Delivered as a Service &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.mongodb.com/stitch/&quot;&gt;MongoDB Stitch Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/stitch-examples&quot;&gt;MongoDB Stitch Example on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;table class=&quot;tr-caption-container image&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9YuIZZg9ntuOyod9jpdzedJf6K6mgh8EWwuvQsPDUynn5_YlZIFejPHuVvwrslnTe11VfoG9Lg_SlxTe0w_wum8dlCVCu9YhP2SrYtjsCmdA-7e8RMNQn7h-Mn5-VAMo4Ea4IXw/s1600/happycode.jpg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;font-size: 8pt; text-align: center;&quot;&gt;Source : happycode.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;Feel free to leave your comments, suggestions, or questions below!&lt;br /&gt;
&lt;center&gt;&lt;h3&gt;Happy Coding!&lt;/h3&gt;&lt;/center&gt;</description><link>http://trashvin.blogspot.com/2017/11/mongodb-stitch-tutorial-1.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinRrUQMqDKGk0lcaXJFoi8nC68jeOkszWFUjIDmqsPXX60CKmTMW6tNoPfP4RHqLNwu3sTyBe8ic8TcTl9t2qFBXIKBdCc3YyHm9d9sUJvUTAaIIrR2_WFn0Z8wa79ZtW9IXTDWA/s72-c/goingserverless.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-3365450740582949436</guid><pubDate>Fri, 13 Oct 2017 13:45:00 +0000</pubDate><atom:updated>2017-11-06T03:14:29.137-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><category domain="http://www.blogger.com/atom/ns#">VBScript</category><title>Good Old HTTP Test on Windows with VBScript</title><description>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkTX2UlAswLImtuiReQ4-3A4L-A5Z65Lx963NhE98edXG-U-km6JPaf13B9tYyrR_tDZGMdPiWG2IMg66vrdCibxcqrBIrM-SP3qOTDKCOfg4y-wBRGBltcPngHKsuXPvW4_7L0A/s1600/LSBAWS_HTTP_request_response.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;span style=&quot;color: #2457a0; float: left; font-size: 75px; font-weight: 600; line-height: 1; padding-left: 3px; padding-right: 8px; padding-top: 4px;&quot;&gt;D&lt;/span&gt;eploying a Point-Of-Sale system on a large store with existing security protocols is not a walk in the park. Processes that can be easily done in a test environment can be prohibitive in the actual production setup. ( TL;DR Scroll further down for the script)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Scenario&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;You are implementing a new electronic payment system in store ABC. Hardware replacement went well, installation went well, then its time to test. That easy, just run a few transactions and you will be out of the site in no time. Then it hits, the PINPad system had an issue downloading the configuration file from the server across the internet. The device routes its request to the POS so it will be easy testing the connection. The lengthy documentation tells you to just send a get request to a URL address in the Internet Explorer. Great! What Windows machine doesn&#39;t have IE? None you know of! But the system administrator is wise enough to disable it, avoiding possible vulnerabilities that might jeopardize their accreditation. Possible solutions:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Wish that your friend &quot;curl&quot; from MacOS is in Windows. Unfortunately, none.&lt;/li&gt;
&lt;li&gt;Download curl&lt;a href=&quot;http://www.confusedbycode.com/curl/&quot;&gt; for Windows&lt;/a&gt;. Ooops !&amp;nbsp; They don&#39;t allow you to install new software on the machine.&lt;/li&gt;
&lt;li&gt;Well, let us just call the IT support and make them watch our network traffic. Must have been the best resort, but there&#39;s a bureaucracy-like system in place, it will take you days to get this going.&lt;/li&gt;
&lt;li&gt;Do you know VBSCRIPT and sure that it will run on the system with no issues?&amp;nbsp; You can follow the steps below if you answered yes.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Create a VBSCRIPT file (e.g. httptest.vbs) with the content below and save it.&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;pre class=&quot;source_code&quot;&gt;&lt;code class=&quot;actionscript language-actionscript&quot;&gt;Dim request
Set request = CreateObject(&quot;MSXML2.XMLHTTP&quot;)
request.open &quot;GET&quot;, &quot;http://your.url.com&quot;, False
request.send
Wscript.Echo request.responseText
&lt;script&gt;&lt;/script&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;Then, run the following on the command prompt.&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;source_code&quot;&gt;&lt;code&gt;C:\&amp;gt;yourdirectory\ start httptest.vbs&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Windows will alert you with a message box showing the response text. Mine is a little expressive, your systems prompt may not.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1u4wLDNwAbhPur5lBcUA-vc55y6rl3rWBchGCeHW4nsBGYcbLoVn7fqU7srplEyueykl6FqTVXNxuWmIQGr4gPlvVjb9HY85v1Cplnt0r2HztbKH8gtv6lGJigsLVcPagdg0kZg/s1600/res.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;377&quot; data-original-width=&quot;696&quot; height=&quot;173&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1u4wLDNwAbhPur5lBcUA-vc55y6rl3rWBchGCeHW4nsBGYcbLoVn7fqU7srplEyueykl6FqTVXNxuWmIQGr4gPlvVjb9HY85v1Cplnt0r2HztbKH8gtv6lGJigsLVcPagdg0kZg/s320/res.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;I guess your fate will depend on what the system will tell you. Good luck!&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgejlx07I0SzK9KuZIfDPYJhQ69loWTQ8k-98o4CeTAkqPt8zwMojsV9vrxO1bCAthRAcjI_CTEwl-FrLWsPjKg_SDIY99FxhdgYO6Mjwwi4ypg7BhZi9gXxqUJ_jWPyaUgZ-dIPw/s1600/happy.jpeg&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</description><link>http://trashvin.blogspot.com/2017/10/good-old-http-test-on-windows-with.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkTX2UlAswLImtuiReQ4-3A4L-A5Z65Lx963NhE98edXG-U-km6JPaf13B9tYyrR_tDZGMdPiWG2IMg66vrdCibxcqrBIrM-SP3qOTDKCOfg4y-wBRGBltcPngHKsuXPvW4_7L0A/s72-c/LSBAWS_HTTP_request_response.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-5930172504994634397</guid><pubDate>Thu, 05 Oct 2017 11:11:00 +0000</pubDate><atom:updated>2017-10-13T07:21:57.397-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.Net</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">State Machine</category><category domain="http://www.blogger.com/atom/ns#">Stateless</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><title>Getting Started with Stateless : A Lightweight Workflow Library Alternative for .NET</title><description>&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; data-image-caption=&quot;Image Credit : https://www.pioneerrx.com&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTzsPVfFyc94nUm-nC5OWbZOe32MzaXEbsxsATvbJTrGLEtod8rUOgUPDTRp94kzKH3xZtgiVV17vHwPwY39fFi8AturWhJ4LVJt4zRRFazLoWK1ieSjK8tCP7vejlLoKeaXIEig/s9999/wf_01.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;1024&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Image Credit: https://www.pioneerrx.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;span style=&quot;color: #2457a0; float: left; font-size: 75px; font-weight: 600; line-height: 1; padding-left: 3px; padding-right: 8px; padding-top: 4px;&quot;&gt;A&lt;/span&gt; year ago, I was looking for a simple workflow manager for a project I was working. Its a medium sized application that involves tracking the state of assets in the system. Back in 2008, Microsoft (MS) introduced new technologies along with the release of Visual Studio 2008: &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/framework/wpf/&quot;&gt;Windows Presentation Foundation&lt;/a&gt; (WPF), &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/framework/wcf/whats-wcf&quot;&gt;Windows Communication Foundation&lt;/a&gt; (WCF), and&amp;nbsp;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/jj684582.aspx&quot; target=&quot;_blank&quot;&gt;Windows Workflow Foundation&lt;/a&gt;(WF). Having worked in a company utilizing mostly MS products for development, my first option was to go with WF. After doing some time reading and studying the library, I paused and decided it was too complex for my requirement. Using WF would be an overkill and the fact that it has, a rather, steep learning curve, there has to be another option. My mind toyed with the idea of developing a simple workflow library myself. It would be a learning experience but it might end up consuming a lot of time.&lt;br /&gt;
&lt;br /&gt;
Why reinvent the wheel? So I started querying the internet for a better solution. I stumbled upon &lt;a href=&quot;https://github.com/dotnet-state-machine/stateless&quot; target=&quot;_blank&quot;&gt;Stateless&lt;/a&gt;, an open source project. A library that lets developer create state machines and lightweight state machine-based workflow directly inside .NET code. Sweet, just what I need.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;
The projects GitHub page is informative, comprising the necessary details to kickstart a developer. It has sample projects included to see the actual code in action. You can clone the repository and include the project in your solution, or, a simpler and better way, used the &lt;a href=&quot;https://www.nuget.org/packages/stateless&quot; target=&quot;_blank&quot;&gt;NuGet package&lt;/a&gt;. Instructions are also included on how to add it to your solution using Visual Studio’s &lt;a href=&quot;https://docs.microsoft.com/en-us/nuget/tools/package-manager-console&quot;&gt;Package&amp;nbsp; Console Manager &lt;/a&gt;or the &lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/core/tools/?tabs=netcore2x&quot;&gt;.Net CLI&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
To get started, we will look into a simple workflow and implement a solution using the traditional ‘if-then-else’ construct followed by the Stateless approach.&lt;/div&gt;
&lt;h2&gt;
The Light Switch Scenario&lt;/h2&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; data-image-caption=&quot;Light Switch Scenario&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVQeEuwJgbBUBGfMU4ACs8TSKJBsYpxurjnzNEBGlw7Ou3_z5QetF5iVfzXvhzM1XM0xqoGrAQojW9-iz10Vz04xvq_i_dkJLGoZod4imerAkMCTsS1qw7OJl_IzRQFd3HbAqP8A/s9999/sw1_1.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;836&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Light Switch Scenario&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;
A straightforward scenario with an added conditional criteria. In this example, we assume a time controlled switch is used. During the day, say from 06:00AM to 06:00PM, lights would remain in off state to conserve electricity.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
The traditional solution is to use the ‘if-then-else’ approach. In this case, I have to admit, this approach is the best option. No additional library needed. For an analogy, we will implement also the solution using Stateless.&lt;/div&gt;
&lt;h3&gt;
Traditional Approach&lt;/h3&gt;
&lt;div dir=&quot;ltr&quot;&gt;
The code is straightforward. No explanation needed basic C# coding. Just in case you are wondering, the variable &lt;i&gt;_enforceTimeConstraint&lt;/i&gt; enables/disables the time controlled feature.&lt;/div&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (CurrentState == State.ON)
{
    CurrentState = State.OFF;
}
&lt;span style=&quot;color: blue;&quot;&gt;else&lt;/span&gt;
{
    &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt;(_enforceTimeConstraint)
    {
        &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (IsLightNeeded()) CurrentState = State.ON;
    }
    &lt;span style=&quot;color: blue;&quot;&gt;else&lt;/span&gt;
    {
        CurrentState = State.ON;
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;h5&gt;
Stateless Approach&lt;/h5&gt;
&lt;div&gt;
First, add the Stateless package to your project. Enter the following on Visual Studio&#39;s package console manager.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;Install-Package Stateless -Version 3.1.0&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
If you are using VS Code or VS 2017 for Mac, you might need to use the CLI for this. The instruction can be seen on this&lt;a href=&quot;https://www.nuget.org/packages/Stateless/&quot;&gt;&amp;nbsp;site&lt;/a&gt;. The latest version is at 4.0.0, version 3.1.0 was used in my example.&lt;br /&gt;
Reference the package in your code.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; Stateless;&lt;/pre&gt;
&lt;/div&gt;
Declare a&amp;nbsp; new &lt;i&gt;Trigger&lt;/i&gt; of type enum. This is a list of trigger that causes a change of state. Then declare a &lt;i&gt;StateMachine&lt;/i&gt; of type &lt;i&gt;State&lt;/i&gt; and &lt;i&gt;Trigger&lt;/i&gt;. &lt;i&gt;State&lt;/i&gt; is an enum comprising the list of states possible in our state machine.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;enum&lt;/span&gt; Trigger { TOGGLE };
&lt;span style=&quot;color: blue;&quot;&gt;enum&lt;/span&gt; State { ON, OFF };
StateMachine&amp;lt;State, Trigger&amp;gt; _machine;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Configure your state machine inside your code. In this example, I did the initialization on the class constructor.&lt;/div&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;_machine = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; StateMachine&amp;lt;State, Trigger&amp;gt;(() =&amp;gt; CurrentState, s =&amp;gt; CurrentState = s);

_machine.Configure(State.ON)
        .Permit(Trigger.TOGGLE, State.OFF);

_machine.Configure(State.OFF)
        .PermitIf(Trigger.TOGGLE, State.ON, () =&amp;gt; IsLightNeeded(), &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Toggle allowed&quot;&lt;/span&gt;)
        .PermitReentryIf(Trigger.TOGGLE, () =&amp;gt; !IsLightNeeded(), &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Toggle not allowed&quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
Some points worth explaining :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;CurrentState&lt;/i&gt; is a variable of type State, it stores the current state.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Configure&lt;/i&gt; is a method of our state machine. It takes the &lt;i&gt;State&lt;/i&gt; that we want to set up. In our first &lt;i&gt;Configure&lt;/i&gt; statement, we are setting up &lt;i&gt;State.ON&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Permit &lt;/i&gt;is a method that lets us specify a valid state transition based on a trigger. When we configure &lt;i&gt;State.ON&lt;/i&gt;, we are permitting it to transition to &lt;i&gt;State.OFF&lt;/i&gt; when the trigger, &lt;i&gt;Trigger.TOGGLE,&lt;/i&gt; is fired.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;PermitIf&lt;/i&gt; method is similar to &lt;i&gt;Permit &lt;/i&gt;and an additional condition that must be met to permit the transition. In the code above, notice the method &lt;i&gt;IsLightNeeded()&lt;/i&gt;. This method act as a guard method to either allow or prevent the transition. Translating the &lt;i&gt;PermitIf&lt;/i&gt; call to lay mans sentence: Permit the transition from OFF to ON when&amp;nbsp; TOGGLE is fired if, and only if,&amp;nbsp; light is needed.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Reentry&lt;/i&gt; to the state is also allowed. In this case, reentry is allowed if a certain condition is met. Thus, the &lt;i&gt;PermitReentryIf&lt;/i&gt; method was used. The condition is, reentry is only allowed if &lt;i&gt;IsLightNeeded() &lt;/i&gt;method returns false.&lt;/li&gt;
&lt;/ul&gt;
To start any transition, a trigger must be fired. This is done by calling the &lt;i&gt;Fire &lt;/i&gt;method.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;_machine.Fire(Trigger.TOGGLE);&lt;/pre&gt;
&lt;/div&gt;
Whew! That was a lot to go through for implementing a light switch. Again, as I have mentioned a while back, this is a simple example to get your feet wet with Stateless.&amp;nbsp; You can go ahead and do some coding to try or you can try cloning the &lt;a href=&quot;https://github.com/trashvin/Tutorial_UsingStateless&quot;&gt;code examples in GitHub&lt;/a&gt;. The solution contains two projects, the one discussed above is the Lightswitch project.&lt;br /&gt;
&lt;h2&gt;
The Asset Workflow Scenario&lt;/h2&gt;
We won&#39;t be using Stateless for projects as simple as Lightswitch. When the traditional approach of using the &#39;if-then-else&#39; or even the &#39;switch-case&#39; construct is too confusing to use, enter Stateless. Consider the following state diagram below.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;img data-image-align=&quot;middle&quot; data-image-caption=&quot;Asset Flow Scenario&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV8xUmZLTDGEWfRVBReYPgywlcogByCb83fMDHIw5Yc0oed5sxGO7eVx6JFHoRXMUHXXi0iKH5mdHSRaMwWG8YlB9_Z7fWEE0U6QkKcINfg4_IxwCDzSsHjNGUOEcmzW6_QxCrOw/s1600/AssetWorkflow.png&quot; style=&quot;max-width: 100%;&quot; width=&quot;836&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Asset Flow Scenario&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
I&#39;m not doing &#39;if-then-else&#39; with that. I need a more elegant way of implementing and managing the flow. Stateless can be used in this scenario, simple and readable. Codes integrated inside your code, no external tool to design the workflow.&lt;br /&gt;
&lt;h3&gt;
The Implementation&lt;/h3&gt;
Let us begin by describing our workflow in terms of States and Triggers.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;enum&lt;/span&gt; State { New, Available, Allocated, UnderMaintenance,
                    Unavailable, Decommissioned };
&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;enum&lt;/span&gt; Trigger { Tested, Assigned, Released, RequestRepair, 
                    RequestUpdate,Transferred, Repaired, Lost, 
                    Discarded, Found };&lt;/pre&gt;
&lt;/div&gt;
Now we initialize the State Machine. I included the whole method, well go through each unfamiliar lines.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; InitializeStateMachine()
{
    _state = State.New;
    _machine = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; StateMachine&amp;lt;State, Trigger&amp;gt;(() =&amp;gt; AssetState, s =&amp;gt; AssetState = s);

    _assignTrigger = _machine.SetTriggerParameters&amp;lt;Person&amp;gt;(Trigger.Assigned);
    _transferTrigger = _machine.SetTriggerParameters&amp;lt;Person&amp;gt;(Trigger.Transferred);

    _machine.Configure(State.New)
            .Permit(Trigger.Tested, State.Available)
            .OnEntry(()=&amp;gt;OnEntry())
            .OnActivate(() =&amp;gt; OnActivate())
            .Permit(Trigger.Lost, State.Unavailable)
            .OnDeactivate(()=&amp;gt;OnDeactivate())
            .OnExit(() =&amp;gt; OnExit());

    _machine.Configure(State.Available)
            .OnEntry(() =&amp;gt; OnEntry())
            .OnActivate(() =&amp;gt; OnActivate())
            .Permit(Trigger.Assigned, State.Allocated)
            .Permit(Trigger.Lost, State.Unavailable)
            .OnExit(() =&amp;gt; OnExit())
            .OnEntryFrom(Trigger.Found,()=&amp;gt; ProcessFound())
            .OnEntryFrom(Trigger.Released,() =&amp;gt; ProcessDecommission())
            .OnDeactivate(() =&amp;gt; OnDeactivate());

    _machine.Configure(State.Allocated)
            .OnEntry(()=&amp;gt;OnEntry())
            .OnEntryFrom(_assignTrigger, owner =&amp;gt; SetOwner(owner))
            .OnEntryFrom(_transferTrigger, owner =&amp;gt; SetOwner(owner))
            .OnActivate(()=&amp;gt; OnActivate())
            .OnExit(()=&amp;gt;OnExit())
            .OnDeactivate(()=&amp;gt;OnDeactivate())
            .PermitReentry(Trigger.Transferred)
            .Permit(Trigger.Released, State.Available)
            .Permit(Trigger.RequestRepair, State.UnderMaintenance)
            .Permit(Trigger.RequestUpdate, State.UnderMaintenance)
            .Permit(Trigger.Lost, State.Unavailable);

    _machine.Configure(State.UnderMaintenance)
            .OnEntry(() =&amp;gt; OnEntry())
            .OnActivate(() =&amp;gt; OnActivate())
            .OnExit(() =&amp;gt; OnExit())
            .OnDeactivate(() =&amp;gt; OnDeactivate())
            .Permit(Trigger.Repaired, State.Allocated)
            .Permit(Trigger.Lost,State.Unavailable)
            .Permit(Trigger.Discarded, State.Decommissioned);

    _machine.Configure(State.Unavailable)
            .OnEntry(() =&amp;gt; OnEntry())
            .OnActivate(() =&amp;gt; OnActivate())
            .OnExit(() =&amp;gt; OnExit())
            .OnDeactivate(() =&amp;gt; OnDeactivate())
            .PermitIf(Trigger.Found, State.Available,()=&amp;gt;(_previousState != State.New))
            .PermitIf(Trigger.Found,State.New,()=&amp;gt;(_previousState == State.New));

    _machine.Configure(State.Decommissioned)
            .OnEntry(() =&amp;gt; ProcessDecommission())
            .OnActivate(() =&amp;gt; OnActivate())
            .OnExit(() =&amp;gt; OnExit())
            .OnDeactivate(() =&amp;gt; OnDeactivate());

}&lt;/pre&gt;
&lt;/div&gt;
The usual stuff.&amp;nbsp; We instantiated a new state machine with the triggers and states we created. Then we configured each state. Oh wait! Our configuration is now more complex with new methods coming out of nowhere. Here we go again. We have been introduced to &lt;i&gt;Configure, Permit, PermitIf, &lt;/i&gt;and &lt;i&gt;PermitReentryIf&lt;/i&gt; so far.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;i&gt;OnEntry&lt;/i&gt; method allows the state to call a method during state entry.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;OnActivate &lt;/i&gt;method is almost similar to &lt;i&gt;OnEntry&lt;/i&gt;, it allows the state to call the specified method &lt;i&gt;OnActivate&lt;/i&gt;. You can play around with the codes to see the difference.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;OnExit&lt;/i&gt; and &lt;i&gt;OnDeactivate &lt;/i&gt;are almost similar methods too, they enable calling of a method before the state transitions to a new one.&lt;/li&gt;
&lt;li&gt;The &lt;i&gt;OnEntryFrom &lt;/i&gt;method enables a state to perform a specific method upon entry based on the trigger the initiated the transition. Take this call,&amp;nbsp; &lt;i&gt;OnEntryFrom(Trigger.Found,()=&amp;gt; ProcessFound())&lt;/i&gt;, the method &lt;i&gt;ProcessFound()&lt;/i&gt; will only be called upon entry it was initiated by the &lt;i&gt;Trigger.Found&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
A trigger can also be fired with a parameter. You can pass an object with the trigger. To do that, we need to declare a &lt;i&gt;Trigger&lt;/i&gt; with parameter of type object. Then we assign it to the specific &lt;i&gt;Trigger&lt;/i&gt; enum value fro our code. The code below creates a trigger of type &lt;i&gt;Person&lt;/i&gt;, then it is assigned to the specific &lt;i&gt;Trigger&lt;/i&gt; value.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; StateMachine&amp;lt;State, Trigger&amp;gt;.TriggerWithParameters&amp;lt;Person&amp;gt; _assignTrigger;
&lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; StateMachine&amp;lt;State, Trigger&amp;gt;.TriggerWithParameters&amp;lt;Person&amp;gt; _transferTrigger;

_assignTrigger = _machine.SetTriggerParameters&amp;lt;Person&amp;gt;(Trigger.Assigned);
_transferTrigger = _machine.SetTriggerParameters&amp;lt;Person&amp;gt;(Trigger.Transferred);&lt;/pre&gt;
&lt;/div&gt;
Note that you don&#39;t have to do something special when configuring a state using these triggers, just reference the trigger value ( e.g&amp;nbsp; &lt;i&gt;Trigger.Assigned, Trigger.Transferred&lt;/i&gt; ). To call these triggers, however, we call the overload of Fire method accepting an object as a parameter.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;_machine.Fire(_assignTrigger, owner);&lt;/pre&gt;
&lt;/div&gt;
So there, the building blocks of using Stateless. Below is a sample code how the trigger is called to initiate state transition on an asset.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;Asset asset = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; Asset(assInfo);
asset.Assign(GetOwner()); &lt;span style=&quot;color: green;&quot;&gt;//with parameter&lt;/span&gt;
asset.RequestRepair();
asset.Release();&lt;/pre&gt;
&lt;/div&gt;
The samples GitHub repository include an interactive CLI to simulate asset movement using Stateless. Go ahead and download it &lt;a href=&quot;https://github.com/trashvin/Tutorial_UsingStateless&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
As an added information, the code created is unit testable. I have used Xunit in this example. NUnit was my initial choice but I was having issues setting it up on VS2017 for Mac. Here is a simple Fact testing the transition of asset state from New to Available by firing&amp;nbsp; Trigger.Finished.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;[Fact]
&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; FinishedTestingTriggerTest()
{
        LoadTestData();

        Asset toTest = _assets[0];

        toTest.AssetState = Asset.State.New;
        toTest.FinishedTesting();

        Assert.Equal(Asset.State.Available, toTest.AssetState);
}&lt;/pre&gt;
&lt;/div&gt;
And here&#39;s a sample Theory testing for some invalid state transitions. Note that the test asserts if there was no state transition, which, in the case of State.New, can only happen if the trigger fired is not supported by the current state.&lt;br /&gt;
&lt;div style=&quot;overflow: auto; width: auto;&quot;&gt;
&lt;pre class=&quot;source_code&quot;&gt;[Theory]
[InlineData(Asset.State.New, Asset.Trigger.Released)]
[InlineData(Asset.State.New, Asset.Trigger.Discarded)]
[InlineData(Asset.State.New, Asset.Trigger.Found)]
[InlineData(Asset.State.New, Asset.Trigger.Repaired)]
[InlineData(Asset.State.New, Asset.Trigger.RequestRepair)]
[InlineData(Asset.State.New, Asset.Trigger.RequestUpdate)]
[InlineData(Asset.State.New, Asset.Trigger.Transferred)]
&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; InvalidTriggerTest(Asset.State initialState, Asset.Trigger trigger)
{
        LoadTestData();

        Asset toTest = _assets[0];
        toTest.AssetState = initialState;
        toTest.Fire(trigger);

        Assert.True(toTest.AssetState == initialState);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;h2&gt;
Whats Next?&lt;/h2&gt;
&lt;div&gt;
Stateless provides a simple way of implementing state machines and state machine based workflow in an elegant and readable manner. This adds to the flexibility and maintainability of the workflow in the code. Currently, I am using Stateless in implementing an Asset Workflow web API using .NET Core. I plan to extend the library to make the configuration task much easier, perhaps by creating a Designer UI to generate the initialization code.&lt;br /&gt;
&lt;br /&gt;
The discussion on this post is just an introduction on what Stateless can bring as a library. Their GitHub page also contains additional examples for you to further your reading.&amp;nbsp; If you think the Stateless library deserves a star, you can do it &lt;a href=&quot;https://github.com/dotnet-state-machine/stateless&quot;&gt;here&lt;/a&gt;. While you are at it, you may as well extend some love to &lt;a href=&quot;https://github.com/trashvin/Tutorial_UsingStateless&quot;&gt;the example on this blog&lt;/a&gt;, if it deserves one.&lt;br /&gt;
&lt;br /&gt;
For comments, questions, or suggestions to improve this post, hit the comment area.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2017/10/getting-started-with-stateless.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTzsPVfFyc94nUm-nC5OWbZOe32MzaXEbsxsATvbJTrGLEtod8rUOgUPDTRp94kzKH3xZtgiVV17vHwPwY39fFi8AturWhJ4LVJt4zRRFazLoWK1ieSjK8tCP7vejlLoKeaXIEig/s72-c/wf_01.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-7158909056095353326</guid><pubDate>Fri, 05 May 2017 13:31:00 +0000</pubDate><atom:updated>2017-11-10T03:26:24.427-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GitHub</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><title>Integrating GitHub on Visual Studio 2017 :  Your First Repo, Commit, Push, and Pull</title><description>Lets get started publishing our VS2017 code to GitHub. If &amp;nbsp;your IDE is not yet configured to use GitHub, &lt;a href=&quot;http://trashvin.blogspot.com/2017/05/integrating-github-on-visual-studio.html&quot;&gt;read this article as a starter.&lt;/a&gt;&amp;nbsp;There are two ways to start contributing to the open source community via GitHub : clone or fork &amp;nbsp;an existing repository and start contributing and publish a new repo on GitHub.  &lt;h3&gt;Creating a New Repository in GitHub&lt;/h3&gt;Create a new blank solution. &amp;nbsp;Make sure the Create New Git Repository option is checked.Once created, this will only reside on your local machine until we publish it online. &amp;nbsp;Go ahead and add&amp;nbsp;a simple console app and test before start committing. &amp;nbsp;Note that VS2017 will automatically add a&amp;nbsp;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;em&gt;.gitignore&lt;/em&gt;&lt;/span&gt; file for the project.  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTezEhb54SOU0d1CzrPNYST_UaTNDXPrpxiSdgQsRgkvatdFB0bScCB88EfA3X8_pBzLRh8d9_oF8d_PIr1JUiPBrApXaTvBp7AvnRZxRDGbdO0mlIRn0XdlUlU1c7h8gOmf-LaQ/s1600/11.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTezEhb54SOU0d1CzrPNYST_UaTNDXPrpxiSdgQsRgkvatdFB0bScCB88EfA3X8_pBzLRh8d9_oF8d_PIr1JUiPBrApXaTvBp7AvnRZxRDGbdO0mlIRn0XdlUlU1c7h8gOmf-LaQ/s640/11.png&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;414&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;The Team Explorer pane should be displaying the new repo on the Local Repositories section. Double click on the repo to access the available actions.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCY5dC_vnLGg6B_Ip5IadlsnzbX6LJC-ZbOd5jyPnyRXSV6dV5Wq41Kg8D4PvZmIDy_0MpYILDQH0tVFMGiPIwMmlQ-IXPQCDwoMZlhr0-A-gep2VBEkQAlUjpLXZ5Gh7SzRcUGA/s1600/14.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCY5dC_vnLGg6B_Ip5IadlsnzbX6LJC-ZbOd5jyPnyRXSV6dV5Wq41Kg8D4PvZmIDy_0MpYILDQH0tVFMGiPIwMmlQ-IXPQCDwoMZlhr0-A-gep2VBEkQAlUjpLXZ5Gh7SzRcUGA/s320/14.png&quot; alt=&quot;&quot; width=&quot;320&quot; height=&quot;232&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Changes - Use this to view code changes you have made in the project.&lt;/li&gt;
&lt;li&gt;Sync - Use these to initiate syncing between repositories. Such as fetching, pulling or pushing changes to GitHub.&lt;/li&gt;
&lt;li&gt;Branches - Let you manage the branches in your repo.&lt;/li&gt;
&lt;li&gt;Settings - Let you manage global and repository settings.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Lets view the changes on the repo. The pane will display all new files added to the project but is not yet part of the repo. The UI also allows us to commit these changes right away.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl6wTO9EjbzijFgYRF0rn_8-x5K8U4z0RVyCxcMd0YlmP8sqafMjNWXiGwmEr0O9ELdmQEPiUpnNin1XygJxoCiFXl_LoM5kYWqYvAZyGciHME6iiBUtfSj1dc9_tszHVEvRJJhw/s1600/15.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl6wTO9EjbzijFgYRF0rn_8-x5K8U4z0RVyCxcMd0YlmP8sqafMjNWXiGwmEr0O9ELdmQEPiUpnNin1XygJxoCiFXl_LoM5kYWqYvAZyGciHME6iiBUtfSj1dc9_tszHVEvRJJhw/s320/15.png&quot; alt=&quot;&quot; width=&quot;291&quot; height=&quot;320&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;There are three options provided when committing changes : Commit All, Commit All and Push and Commit All and Sync.&amp;nbsp;&lt;/div&gt;&amp;nbsp;  &lt;ol style=&quot;background-color: white; border: 0px; color: #242729; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 15px; margin: 0px 0px 1em 30px; padding: 0px;&quot;&gt;&lt;li style=&quot;border: 0px; margin: 0px 0px 0.5em; padding: 0px; word-wrap: break-word;&quot;&gt;Commit will simply make record of your changes that you have made on your local machine. It will not mark the change in the remote repository.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px 0px 0.5em; padding: 0px; word-wrap: break-word;&quot;&gt;Commit and Push will do the above and push it to the remote repository. This means that any changes you have made will be saved to the remote repository as well.&lt;/li&gt;
&lt;li style=&quot;border: 0px; margin: 0px; padding: 0px; word-wrap: break-word;&quot;&gt;Commit and Sync does three things. First, it will commit. Second, it will perform a pull (grabs the updated information from the remote repo). Finally, it will push.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;A discussion on StackOverflow regarding this can be found on this &lt;a href=&quot;http://stackoverflow.com/questions/30038999/differences-between-commit-commit-and-push-commit-and-sync&quot;&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;For this tutorial, lets do simple Commit All. To publish the repo to GitHub, click on the Sync option and select Publish to GitHub. You may need to enter your credentials.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-DWJKiESQfrOEyODjXTOd8pThFAnki1tP82YXRqGKuzD-O_LdeAjMLPXVDzHa9VoEXFaZpAlkKsAyu-Uy8MvHnCUlPnuMYNNKjEXTc3FJAel4gMHi-BJ0bi10_CEbKSKGavX_rw/s1600/16.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-DWJKiESQfrOEyODjXTOd8pThFAnki1tP82YXRqGKuzD-O_LdeAjMLPXVDzHa9VoEXFaZpAlkKsAyu-Uy8MvHnCUlPnuMYNNKjEXTc3FJAel4gMHi-BJ0bi10_CEbKSKGavX_rw/s400/16.png&quot; alt=&quot;&quot; width=&quot;276&quot; height=&quot;400&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&amp;nbsp;  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Once the repo is published, the Home page on the Team Explorer pane will be updated to display the link to the online repo and new available actions.&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg95uPaPBlH3z2_Utub42AkC6PujZiqOYcZloD6FAZz8htcnxkAbhIF6m6O0NMq9WiB5cFJXQF7VpOu9UX7m9AvsJrWOeTBR8XudLVzyL_lRP8HcUfKyYzxhPTtQ6jbOSe9H8OeSA/s1600/18.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg95uPaPBlH3z2_Utub42AkC6PujZiqOYcZloD6FAZz8htcnxkAbhIF6m6O0NMq9WiB5cFJXQF7VpOu9UX7m9AvsJrWOeTBR8XudLVzyL_lRP8HcUfKyYzxhPTtQ6jbOSe9H8OeSA/s320/18.png&quot; alt=&quot;&quot; width=&quot;294&quot; height=&quot;320&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Your GitHub page will now include your new repo. By default, this is a public repo, thus, anyone can fork or clone it.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpo-pRgVgNhN4qHR7hf2UVqoBioQYXzBl2GptJsqTBm3ddjVzxagdT9NnopuoF70pCap4surzLRmpvj3deekFUKR7npP78lgXj19iwnrYh0rtCEMqltAaKlUfXe98vXYehzlsmgQ/s1600/19.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpo-pRgVgNhN4qHR7hf2UVqoBioQYXzBl2GptJsqTBm3ddjVzxagdT9NnopuoF70pCap4surzLRmpvj3deekFUKR7npP78lgXj19iwnrYh0rtCEMqltAaKlUfXe98vXYehzlsmgQ/s640/19.png&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;339&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;h3&gt;Pushing your changes to GitHub&lt;/h3&gt;&lt;div&gt;The first section discussed the initial phase of the process. Now that the repo is available online, we can continue adding functionality to our app and push changes to GitHub as needed. For this section, we assume that no other changes on the online repo and we are pushing our fist update. Go ahead and make some changes to our app. You should notice that the IDE marks those changes on the source code view as well as on the files view. The Changes view will display those changes and for this time we can do Commit All and Push. Once Push is completed, the update will be reflected on GitHub.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;h3&gt;Pulling changes from GitHub&amp;nbsp;&lt;/h3&gt;&lt;div&gt;For simple changes without any conflicts, a Sync operation will do the trick on the Synchronization page. But for clarity, we will do a Fetch and a Pull to show the changes.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV_nR4P_xMwWhjaFoMJqh6os2I7VfEMQLt36pQhXSnEhnAGMT5tIF4uoRKSwiMDg2iPazDRzDZwTWz3BY1hGsksBFRUI5rZlpz30azVSdWFeY7IyyznDHxPFQiui3dA3yN_oBt7Q/s1600/20.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV_nR4P_xMwWhjaFoMJqh6os2I7VfEMQLt36pQhXSnEhnAGMT5tIF4uoRKSwiMDg2iPazDRzDZwTWz3BY1hGsksBFRUI5rZlpz30azVSdWFeY7IyyznDHxPFQiui3dA3yN_oBt7Q/s400/20.png&quot; alt=&quot;&quot; width=&quot;276&quot; height=&quot;400&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Fetch operation updates only your remote-tracking branches. It does not update the codes you are working on. A pull operation is a Fetch followed by Merge action. This will automatically bring your codes up to date with the remote branch. For this sample, we do Fetch first to show the changes. The Synchronization page will display incoming commits from the remote repo.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY-KE6osKYlEZvgnobfEoyDoD_n6VGk3AxBY92poS1q-c00pn9mHEk3hAe4Eqh1HXml9MXNIzarSFtP18O82R-HRxWmKb8atETCXw7A5oG_Jq7NVTRexC_POnxQAWw9PHPftvPcA/s1600/21.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY-KE6osKYlEZvgnobfEoyDoD_n6VGk3AxBY92poS1q-c00pn9mHEk3hAe4Eqh1HXml9MXNIzarSFtP18O82R-HRxWmKb8atETCXw7A5oG_Jq7NVTRexC_POnxQAWw9PHPftvPcA/s320/21.png&quot; alt=&quot;&quot; width=&quot;320&quot; height=&quot;268&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;To view the changes related to the incoming commit , right click the commit entry and select View Commit Details.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWr_45Teo6mZxH4era_dLN-5Aosirn-7ZvNB3U6qxF9mkZXbVF9bPqJ198d2Xc6bR3LDlKKGYjxf5LgzskdmCaFp8okYguy1NJm0dKeLkt8BSUmE_wqsiaIZ7BNHxGDB1W5kqMqg/s1600/22.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWr_45Teo6mZxH4era_dLN-5Aosirn-7ZvNB3U6qxF9mkZXbVF9bPqJ198d2Xc6bR3LDlKKGYjxf5LgzskdmCaFp8okYguy1NJm0dKeLkt8BSUmE_wqsiaIZ7BNHxGDB1W5kqMqg/s640/22.png&quot; alt=&quot;&quot; width=&quot;640&quot; height=&quot;337&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Once everything is ok, you can select Pull action to update your working code.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;This tutorial discussed simple git operations. This may not be enough once the project get big and a number of developers is added.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&amp;nbsp;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;&amp;nbsp; </description><link>http://trashvin.blogspot.com/2017/05/integrating-github-on-visual-studio_5.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTezEhb54SOU0d1CzrPNYST_UaTNDXPrpxiSdgQsRgkvatdFB0bScCB88EfA3X8_pBzLRh8d9_oF8d_PIr1JUiPBrApXaTvBp7AvnRZxRDGbdO0mlIRn0XdlUlU1c7h8gOmf-LaQ/s72-c/11.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-8110669104233913333</guid><pubDate>Wed, 03 May 2017 13:33:00 +0000</pubDate><atom:updated>2017-11-10T03:24:10.312-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">GitHub</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><title>Integrating GitHub on Visual Studio 2017 : Getting Started</title><description>For developers working on personal open source projects, &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; has become the choice repository. &amp;nbsp;Sure we do love the geekiness of doing all our git related actions on the terminal ( command prompt for Windows ), but for productivity and efficiency, other developers would prefer an intuitive UI to save them from typing lengthy git commands. Luckily, there is a GitHub desktop app available for this. Yet, we developers, some times doesn&#39;t want to go out of our favorite IDE just to do a simple commit or pull while our mind is engaged on cranking the code that will save the world. Good thing, our friends are Microsoft are generous enough providing third party developers to create extensions or add-ins for their beloved Visual Studio. GitHub, thus, gave us a GitHub extension that can be integrated to Visual Studio 2017. The extension does not offer us out of this world features, just a way to do the git processes within Visual Studio. The good thing about it is it integrates seamlessly with the existing flow for managing processes with TFS. If you are familiar with these, then you are good to go.&lt;br /&gt;
&lt;h3&gt;Installation and Configuration&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Download the Visual Studio for GitHub extension &lt;a href=&quot;https://visualstudio.github.com/&quot;&gt;here&lt;/a&gt;. Note that Visual Studio 2015 or newer is required.&lt;/li&gt;
&lt;li&gt;Install the extension. This requires that Visual Studio is closed.&lt;/li&gt;
&lt;li&gt;Open Visual Studio 2017. Go to &lt;b&gt;&lt;u&gt;TEAM -&amp;gt; Manage Connection&lt;/u&gt;&lt;/b&gt;. &amp;nbsp;The Team Explorer pane should include GitHub on the list of Hosted Service Providers.&lt;/li&gt;
&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSjegh69m6oozTUZIjBgzw9yb0ioO5ntzkU6zecBOjETwk6lhmMSZ5K8-yBec5Bo7-xrGTXSX9dPgdeGmWbED9ofvu17rGUPNNFMLJcjjphQGUw65N95kG9H0vZZZQ2PO_kCYF3g/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSjegh69m6oozTUZIjBgzw9yb0ioO5ntzkU6zecBOjETwk6lhmMSZ5K8-yBec5Bo7-xrGTXSX9dPgdeGmWbED9ofvu17rGUPNNFMLJcjjphQGUw65N95kG9H0vZZZQ2PO_kCYF3g/s320/10.png&quot; width=&quot;264&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;li&gt;If you don&#39;t have existing GitHub account, choose &lt;u&gt;&lt;b&gt;Sign up&lt;/b&gt;&lt;/u&gt;. Otherwise, go ahead and sign in by selecting &lt;b&gt;&lt;u&gt;Connect&lt;/u&gt;&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Once connected, the Team Explorer pane will display all GitHub repositories that you previously cloned or created under the GitHub section. All local repositories are available in your system will be listed under Local Repositories.&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipinMk0G28nuYcaj3O1oJUgTTLDQRu2cn8HkpU1SzeDqn0Y2nkCTnHu8zF9tM-UWI_jtFiBKH5IZoeiFb8pM8hGZ5_uXv1-zizJ4eb0n3upVR89DbF0M2St_NcEXDWxy465MxAyw/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipinMk0G28nuYcaj3O1oJUgTTLDQRu2cn8HkpU1SzeDqn0Y2nkCTnHu8zF9tM-UWI_jtFiBKH5IZoeiFb8pM8hGZ5_uXv1-zizJ4eb0n3upVR89DbF0M2St_NcEXDWxy465MxAyw/s320/6.png&quot; width=&quot;227&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Your VS2017 is now ready to be used as a tool to work with GitHub repositories.&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
</description><link>http://trashvin.blogspot.com/2017/05/integrating-github-on-visual-studio.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSjegh69m6oozTUZIjBgzw9yb0ioO5ntzkU6zecBOjETwk6lhmMSZ5K8-yBec5Bo7-xrGTXSX9dPgdeGmWbED9ofvu17rGUPNNFMLJcjjphQGUw65N95kG9H0vZZZQ2PO_kCYF3g/s72-c/10.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-5615130000551316213</guid><pubDate>Mon, 24 Apr 2017 12:45:00 +0000</pubDate><atom:updated>2017-11-10T03:23:19.911-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio Code</category><title>Hiding Unwanted Python Folders and Files in Visual Studio Code</title><description>Visual Studio Code is a universal editor and pretty good at it. However, the explorer view maybe cluttered with the automatically generated folders and files confusing developers. Python is no different. Below are example files and folders generated by Python.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhAV-iqf07z9dUytsc1loUFbH9Vd_EE0atjgsiyXe08_XoRNsLruo90N-luE6zXjN5ur9UNZv7M6k1THWU2YssFaP6BxNDKCajXJurKKNWkdYoa9CJKwOEkgp9KhbH2oz7T1_YmA/s1600/pyvs1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;237&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhAV-iqf07z9dUytsc1loUFbH9Vd_EE0atjgsiyXe08_XoRNsLruo90N-luE6zXjN5ur9UNZv7M6k1THWU2YssFaP6BxNDKCajXJurKKNWkdYoa9CJKwOEkgp9KhbH2oz7T1_YmA/s320/pyvs1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The __pycache__ folder and *.pyc files &amp;nbsp;are totally unnecessary to the developer. To hide these files from the explorer view, we need to edit the settings.json for VSCode. Add the folder and the files as shown below:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvKX_v3vFbwlxzwzoLJtnh0AnoR6D-jxhKOcibY53FYzRVPxgV9yJeYqjMii_R50oGMIH7CaT96TZbJuIx48OKT1IHIvW4gzeLBUlyiVSxLaJFMTEsStQ2T2CXN5bIzzrh75kF3w/s1600/pyvs3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvKX_v3vFbwlxzwzoLJtnh0AnoR6D-jxhKOcibY53FYzRVPxgV9yJeYqjMii_R50oGMIH7CaT96TZbJuIx48OKT1IHIvW4gzeLBUlyiVSxLaJFMTEsStQ2T2CXN5bIzzrh75kF3w/s320/pyvs3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Copy and paste the lines below :&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f8f8f8; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #4e9a06;&quot;&gt;&quot;**/*.pyc&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #4e9a06;&quot;&gt;&quot;when&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #4e9a06;&quot;&gt;&quot;$(basename).py&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;},&lt;/span&gt;
  &lt;span style=&quot;color: #4e9a06;&quot;&gt;&quot;**/__pycache__&quot;&lt;/span&gt;&lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;true&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
</description><link>http://trashvin.blogspot.com/2017/04/hiding-unwanted-python-folders-and.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhAV-iqf07z9dUytsc1loUFbH9Vd_EE0atjgsiyXe08_XoRNsLruo90N-luE6zXjN5ur9UNZv7M6k1THWU2YssFaP6BxNDKCajXJurKKNWkdYoa9CJKwOEkgp9KhbH2oz7T1_YmA/s72-c/pyvs1.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-7440476842871663379</guid><pubDate>Fri, 14 Apr 2017 08:43:00 +0000</pubDate><atom:updated>2017-11-10T03:27:19.082-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Angular</category><category domain="http://www.blogger.com/atom/ns#">AngularJS</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><category domain="http://www.blogger.com/atom/ns#">TypeScript</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio Code</category><title>Hiding JS and Related Files While Working with TypeScript : Visual Studio Code</title><description>While I was exploring &lt;a href=&quot;https://angular.io/&quot;&gt;Angular 2&lt;/a&gt;, following their &lt;a href=&quot;https://angular.io/docs/ts/latest/tutorial/&quot;&gt;Tour of Heroes&lt;/a&gt; tutorial, I was excited to see it is using &lt;a href=&quot;https://www.typescriptlang.org/&quot;&gt;TypeScript&lt;/a&gt;. As we know, TypeScript is not directly supported by browsers. It has to be transpiled into JS code for it to work. Good thing, the guys at Google has come up with a startup kit when developing Angular application ( &lt;a href=&quot;https://angular.io/docs/ts/latest/quickstart.html&quot;&gt;instruction how to get it here&lt;/a&gt; ). Now you dont have to worry about manually transpiling TypeScript codes to JS, the package will do that for you and a lot more ( &lt;a href=&quot;https://www.browsersync.io/&quot;&gt;BrowserSync&lt;/a&gt;, yeah). With that being taken care of, you only have to worry about your TS code. Because the transpiled files reside on the same folder, these files may cloud up your Visual Studio Code file list. I asked StackOverflow ( Google for devs haha ) and got a working solution, pronto!&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;FileList Before the Fix&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsCrsyQUP3Eh7k9dHrqOXwQJMFV6eK9RdfFu5PjpiOollQCR_pGvu0oO3I14G7aQrny6XWSNhUt6peV0TabFu9kS9L55nSxmMgnLnqnuHbNTNsIGUb5N8DRTQ7zdWgHMU_Rna3TA/s1600/angVSTip.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsCrsyQUP3Eh7k9dHrqOXwQJMFV6eK9RdfFu5PjpiOollQCR_pGvu0oO3I14G7aQrny6XWSNhUt6peV0TabFu9kS9L55nSxmMgnLnqnuHbNTNsIGUb5N8DRTQ7zdWgHMU_Rna3TA/s320/angVSTip.png&quot; width=&quot;247&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;The Fix&lt;/h3&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Edit VSCode Preferences.&lt;/li&gt;
&lt;li&gt;Edit Settings. This will open the settings.json file. You can either edit the User Setting or the Workspace Setting.&lt;/li&gt;
&lt;li&gt;Search for the &quot;files.exclude&quot;&lt;/li&gt;
&lt;li&gt;Add the following values : &lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&quot;**/*.js.map&quot;&lt;/span&gt;&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;,&lt;/span&gt;
 &lt;span style=&quot;font-style: italic;&quot;&gt;&quot;**/*.js&quot;&lt;/span&gt;&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;:&lt;/span&gt; {&lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;when&quot;&lt;/span&gt;: &lt;span style=&quot;font-style: italic;&quot;&gt;&quot;$(basename).ts&quot;}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Note : The extra arguments on the last entry make sure that we only hide JS files when a file with the same base name but with a TS extension is present.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;The Resulting List&lt;/h3&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvbzsC5apKiT9eConkG9Tb8OgxUb8btq1Q3IaJ4nAbZkKDB_Vzdv7SsA6nztyzFFh25ej0DGmS4vtXRMZqbS-XW2DAF8x53xU9QzHVAgOwwkWbW4mDGF7F-l1JgYGSafYWu-mdg/s1600/AngVSCode2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvbzsC5apKiT9eConkG9Tb8OgxUb8btq1Q3IaJ4nAbZkKDB_Vzdv7SsA6nztyzFFh25ej0DGmS4vtXRMZqbS-XW2DAF8x53xU9QzHVAgOwwkWbW4mDGF7F-l1JgYGSafYWu-mdg/s320/AngVSCode2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Now you can concentrate on the TypeScript files. Enjoy coding!&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;References&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://stackoverflow.com/questions/31587949/hide-js-map-files-in-visual-studio-code&quot;&gt;StackOverflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
</description><link>http://trashvin.blogspot.com/2017/04/hiding-js-and-related-files-while.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsCrsyQUP3Eh7k9dHrqOXwQJMFV6eK9RdfFu5PjpiOollQCR_pGvu0oO3I14G7aQrny6XWSNhUt6peV0TabFu9kS9L55nSxmMgnLnqnuHbNTNsIGUb5N8DRTQ7zdWgHMU_Rna3TA/s72-c/angVSTip.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-1442656821754546260</guid><pubDate>Tue, 04 Apr 2017 12:24:00 +0000</pubDate><atom:updated>2017-11-10T03:27:50.799-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Software</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><category domain="http://www.blogger.com/atom/ns#">TDD</category><category domain="http://www.blogger.com/atom/ns#">Tutorial</category><title>Unit Testing in Python : A Primer</title><description>Automated unit testing has been around for more than a decade now. I remember back in 2008, a colleague introduced to our team the concept of MVP pattern and in the process the advantage of using the pattern in unit testing. The concept of automated testing using &lt;a href=&quot;https://www.nunit.org/&quot;&gt;NUnit&lt;/a&gt; and mocking using &lt;a href=&quot;http://nmock.sourceforge.net/&quot;&gt;NMock&lt;/a&gt; was also discussed. That is where I began to see the advantage of implementing &lt;a href=&quot;https://www.google.com.ph/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=13&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwiZvsDTtIzTAhVGPrwKHTFuBMsQFghTMAw&amp;amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FTest-driven_development&amp;amp;usg=AFQjCNFZufFp2tltrj4dLnD-km9G9wSGPw&amp;amp;sig2=TNxo9wj3bKjwSP_gxtDMDA&quot;&gt;Test Driven Development&lt;/a&gt;&amp;nbsp;methodology to developers. Unfortunately, the company where I moved don&#39;t see it as such. Thus, I was only able to practice it on my learning time. With the recent events in my life , I now have more time exploring this concept a little further. A series of post will concentrate on this concept using Python and C#. Lets begin with &lt;a href=&quot;https://www.python.org/&quot;&gt;Python&lt;/a&gt;.&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Directory Structure&lt;/h3&gt;&lt;div&gt;Lets begin with simple unit test using &lt;i&gt;unittest&lt;/i&gt;. For the code samples, we will use the following directory structure :&lt;/div&gt;&lt;div&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;+UnitTestingSample\
+---+Modules\
+-------+Calculator\
+------------__init__.py
+------------main.py
+--------_init__.py
+---+UnitTest\
+--------__init__.py
+--------test_calculator.py
+----setup.py
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div&gt;I organized my codes in such a way that the actual application code is separated from the unit test codes. &amp;nbsp;For this to work unit test discovery will be used if you are to run it on the terminal. In my case, I run the tests inside PyCharm.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;The Application&lt;/h3&gt;&lt;div&gt;To make this as simple as possible, &amp;nbsp;I will use a simple Calculator application with the following methods to be tested :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;add(num1, num2) - Add two numbers&lt;/li&gt;
&lt;li&gt;subtract(num1,num2) - Subtraction&lt;/li&gt;
&lt;li&gt;multiply(num1,num2) - Multiplication&lt;/li&gt;
&lt;li&gt;divide(num1,num2) - Division&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;The Unit Test&lt;/h3&gt;&lt;div&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;unittest&lt;/span&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;from&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;Modules.Calculator.main&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;import&lt;/span&gt; Calculator


&lt;span style=&quot;font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;MyTestCase&lt;/span&gt;(unittest.TestCase):

    &lt;span style=&quot;font-weight: bold;&quot;&gt;def&lt;/span&gt; setUp(self):
        self.app = Calculator()

    &lt;span style=&quot;font-weight: bold;&quot;&gt;def&lt;/span&gt; test_add(self):
        expected = 5
        result = self.app.add(3,2)
        self.assertEqual(result,expected)

    &lt;span style=&quot;font-weight: bold;&quot;&gt;def&lt;/span&gt; test_subtract(self):
        expected = 5
        result = self.app.subtract(10,5)
        self.assertEqual(result,expected)

    &lt;span style=&quot;font-weight: bold;&quot;&gt;def&lt;/span&gt; test_multiply(self):
        expected = 5
        result = self.app.multiply(5,1)
        self.assertEqual(result,expected)

    &lt;span style=&quot;font-weight: bold;&quot;&gt;def&lt;/span&gt; test_divide(self):
        expected = 5
        result = self.app.divide(10,2)
        self.assertEqual(result,expected)

&lt;span style=&quot;font-weight: bold;&quot;&gt;if&lt;/span&gt; __name__ == &lt;span style=&quot;font-style: italic;&quot;&gt;&#39;__main__&#39;&lt;/span&gt;:
    unittest.main()
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
If you are accustomed on creating unit test in .Net, the names of the test file as well as test methods are insignificant . Aside from the general rules in naming files and method names, theres nothing special to be considered. In Python, however, its more strict. Below are the two rules that are significant for the tests to be discovered:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The file name of the test file should start with &quot;test: (i.e. &amp;nbsp;test_calculator.py)&lt;/li&gt;
&lt;li&gt;The method names should start with test ( i.e. &amp;nbsp;test_add)&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Since we are using unittest, all test classes should inherit from unittest.TestCase. For the example, the assertEqual is used. Complete documentation on Python 3 regarding unittest can be found in this &lt;a href=&quot;https://docs.python.org/3/library/unittest.html&quot;&gt;link&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;h3&gt;Running the Test&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;To run the script, we can use the terminal or command prompt to run discovered unit test using the following command :&lt;/div&gt;&lt;div&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;TrashvinMBP:UnitTestingSample Trashvin&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;$&lt;/span&gt; python -m unittest discover -v 
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;Successful Test&lt;/h4&gt;&lt;div&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;TrashvinMBP:UnitTestingSample Trashvin&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;$&lt;/span&gt; python -m unittest discover -v      
test_add (UnitTests.test_calculator.MyTestCase) ... ok
test_divide (UnitTests.test_calculator.MyTestCase) ... ok
test_multiply (UnitTests.test_calculator.MyTestCase) ... ok
test_subtract (UnitTests.test_calculator.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 4 tests &lt;span style=&quot;font-weight: bold;&quot;&gt;in&lt;/span&gt; 0.000s

OK
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;&lt;/h4&gt;&lt;h4&gt;Failed Test&amp;nbsp;&lt;/h4&gt;&lt;div&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;TrashvinMBP:UnitTestingSample Trashvin&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;$&lt;/span&gt; python -m unittest discover -v
test_add (UnitTests.test_calculator.MyTestCase) ... ok
test_divide (UnitTests.test_calculator.MyTestCase) ... FAIL
test_multiply (UnitTests.test_calculator.MyTestCase) ... ok
test_subtract (UnitTests.test_calculator.MyTestCase) ... ok

======================================================================
FAIL: test_divide (UnitTests.test_calculator.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File &lt;span style=&quot;font-style: italic;&quot;&gt;&quot;/Users/Trashvin/Dev/Codes/Python/UnitTestingSample/UnitTests/test_calculator.py&quot;&lt;/span&gt;, line 30, &lt;span style=&quot;font-weight: bold;&quot;&gt;in&lt;/span&gt; test_divide
    self.assertEqual(result,expected)
&lt;span style=&quot;font-weight: bold;&quot;&gt;AssertionError&lt;/span&gt;: 6 != 5

----------------------------------------------------------------------
Ran 4 tests &lt;span style=&quot;font-weight: bold;&quot;&gt;in&lt;/span&gt; 0.001s

FAILED (failures=1)
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
Running test in the command line / terminal is far less aesthetically appealing that its Visual Studio equivalent but some Python editors such as &lt;a href=&quot;https://www.jetbrains.com/pycharm/&quot;&gt;PyCharm&lt;/a&gt; can provide such experience too.&lt;br /&gt;
&lt;h3&gt;&lt;br /&gt;
Conclusion&lt;/h3&gt;Automated unit testing provide developers tool of easily testing their code without actually using the application. While writing unit test seems to add time at the start, on the long run, it helps the developer maintain checks on the codes that they write. For a continuously developing application, this provides a way to make sure that old codes are not broken. Unit testing, however, is not a complete solution. &amp;nbsp;On the next related post, I will discuss the concept of mocking.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Resources&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.dropbox.com/s/u3u4twt5kp9ffzq/UnitTestingSample%20Code%20Sample.zip?dl=0&quot;&gt;Download UnitTest Sample Source Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/trashvin/Tutorial_Python_UnitTestSample&quot;&gt;Clone the Sample Source Code from GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><link>http://trashvin.blogspot.com/2017/04/unit-testing-in-python-101.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-5847801285328071489</guid><pubDate>Mon, 23 Jan 2017 03:55:00 +0000</pubDate><atom:updated>2017-11-10T03:30:02.476-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Angular</category><category domain="http://www.blogger.com/atom/ns#">AngularJS</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio Code</category><title>Enabling Intellisense for AngularJS in Visual Studio Code </title><description>Visual Studio Code is a feature-rich code editor developed by Microsoft. &lt;a href=&quot;https://marketplace.visualstudio.com/VSCode&quot;&gt;Extensions&lt;/a&gt; can be added to the application to make it more usable. Intellisense is a developer feature that is present n almost all modern code editors and VSCode supports it. However, it does not support it out of the box. Follow the steps below to install &lt;a href=&quot;https://angular.io/&quot;&gt;Angular&lt;/a&gt; intellisense on VSCode Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Prerequisites:&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://nodejs.org/en/&quot;&gt;NodeJS&lt;/a&gt;&amp;nbsp;to be able to install the needed packages through &lt;i&gt;npm&lt;/i&gt;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Steps&amp;nbsp;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Install the typings package through &lt;a href=&quot;https://www.npmjs.com/&quot;&gt;npm&lt;/a&gt;. Install it globally.&lt;/li&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;npm install -g typings
&lt;/pre&gt;&lt;/div&gt;&lt;li&gt;Install the Angular specific typings on the directory of your project.&lt;/li&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;typings install dt~angular --save
&lt;/pre&gt;&lt;/div&gt;&lt;li&gt;The typigs folder and files will be created on your projects folder.&lt;/li&gt;
&lt;li&gt;The typings.json file will be created too. Eventually this will be filled up by configuration entries but since we are just starting out and we are only interested in intellisense, this is blank.&lt;/li&gt;
&lt;li&gt;Create the jsconfig.json file in the projects root directory&#39;&lt;/li&gt;
&lt;li&gt;Validate that the AngularJS intellisense is working.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Update&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;With the release of Angular 2 and 4, the VSCode Marketplace has plenty of extensions are available to help developers. Check out the marketplace &lt;a href=&quot;https://marketplace.visualstudio.com/&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;</description><link>http://trashvin.blogspot.com/2017/01/enabling-intellisense-for-angularjs-in.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-2440384486024494714</guid><pubDate>Wed, 21 Oct 2015 05:17:00 +0000</pubDate><atom:updated>2015-10-20T22:17:08.121-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Back to the future</category><category domain="http://www.blogger.com/atom/ns#">Hollywood</category><category domain="http://www.blogger.com/atom/ns#">MLB</category><category domain="http://www.blogger.com/atom/ns#">Movies</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">Red Sox</category><title>October 21, 2015 : Baseball and Hollywood Connection</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Hofsa2bNxpCmTuH2lBepHvJFTB8j2lCRGwEuIna9f0K3Fr8O70oZktSd0a6q5v27NttWTQF6e0MvZmhYdaLe45VUTwiFIs6zVy-g5oIhaqvzczzFe1QLzJcMyfkN4b_BM0zEfw/s1600/timecircuits.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Hofsa2bNxpCmTuH2lBepHvJFTB8j2lCRGwEuIna9f0K3Fr8O70oZktSd0a6q5v27NttWTQF6e0MvZmhYdaLe45VUTwiFIs6zVy-g5oIhaqvzczzFe1QLzJcMyfkN4b_BM0zEfw/s320/timecircuits.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Image from www.october212015.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
October 21, 2015, Major League Baseball, Hollywood. What is the connection? If you have a great childhood and grew up in the 80&#39;s when new wave and disco music was the thing, you must have watch a bunch of futuristic movies from Hollywood. I remember a bunch of them and Star Wars and Back To The Future made the top of my list. Before I&#39;ll skip Star Wars for now, have you seen the trailer for the new movie due by December? If not, check it out on this &lt;a href=&quot;https://www.youtube.com/watch?v=sGbxmsDFVnE&quot;&gt;link&lt;/a&gt; after reading this post.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Back to the Future is a series of futuristic comic action movie released by Universal Studios. As the title implies, the main plot of the movie is to , well, go back to the future. In the 1989 sequel, Back to the Future II, after repairing the damage to history done by his previous time travel adventures, Marty McFly and his friend Dr. Emmett &quot;Doc&quot; Brown &amp;nbsp;travel to 2015 to prevent McFly&#39;s future son from ending up imprisoned. So the famous line goes : &quot;We&#39;re descending toward Hill Valley, California, at 4:29 pm, on Wednesday, October 21st, 2015.&quot;. The succeeding scene gave us a glimpse of what 2015 be like in 1989 point of view.&amp;nbsp;According to the time-bending sci-fi flick, by October 21 2015, we would be living in a world of hover boards, flying cars, self-tying shoelaces, video calling and virtual reality among other else. As we all know by now, some of the predictions are now a reality. There is one prediction, however, &amp;nbsp;that we may have to find out today or in a couple of weeks from now: the fate of Chicago Cubs as it tries to end the 107 years drought of a world series championship in baseball.&lt;br /&gt;
&lt;br /&gt;
If you are a baseball fanatic, you know now that the odds of getting this prediction right has gone down to almost impossible. &amp;nbsp;The Chicago Cubs are now down 0-3 against the New York Mets in a 7 game National League Conferences Series. &lt;a href=&quot;https://en.wikipedia.org/wiki/Game_seven&quot;&gt;History&lt;/a&gt; will tell us that only one MLB team has went on to win the best of seven series after being down 0-3. Currently, there are only six teams from among all professional sports that was able to do it. &amp;nbsp;Cubs losing Game 3 is more of a death sentence to the chase. The only MLB team to do this is the 2004 Boston Red Sox. Down 0-3 against the New York Yankees, they were also down by a run on the 9th inning of Game 4. After an equalizer, they went on to win Game 4 in an extra inning, went on to win the ALCS series and eventually the 2004 World Series. So yes, it can be done. And the Red Sox connection is strong with the Cubs : Theo Epstein, John Lester, David Ross and even Yoenis Cespedes whos playing for the New York Mets &amp;nbsp;was once a Red Sox during the 2014 season, he was taken in a trade that let John Lester go. Oh by the way, they are playing New York ( Mets that is). So if they pull off a 2004 Red Sox feat and eventually win the World Series, that would be the biggest story of the year.&lt;br /&gt;
&lt;br /&gt;
The story will not only be a big hit in baseball world and the entire sports community but will also be a big hit in Hollywood. Yeah, Hollywood! Which gets us back to the unrealistic world of Hollywood. You know the movie, I mentioned it a while back. &quot;Back To The Future II : The movie that made the Chicago Cubs the World Series champion for 2015 after 107 years of waiting&quot;. &amp;nbsp;Imagine the story on how the Cubs would start winning on October 21, 2015 and eventually winning the World Series! That is a sell out story. Hollywood, are you reading this article? Go ahead make some phone calls, do your magic and make it happen. And if in fact this thing do happen, this would be one of the conspiracy theory that tied MLB and Hollywood.&lt;br /&gt;
&lt;br /&gt;
Today is October 21,2015. The Cubs are on a must win situation. Lets wait and see if the magic of Hollywood do exist. </description><link>http://trashvin.blogspot.com/2015/10/october-21-2015-baseball-and-hollywood.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-Hofsa2bNxpCmTuH2lBepHvJFTB8j2lCRGwEuIna9f0K3Fr8O70oZktSd0a6q5v27NttWTQF6e0MvZmhYdaLe45VUTwiFIs6zVy-g5oIhaqvzczzFe1QLzJcMyfkN4b_BM0zEfw/s72-c/timecircuits.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-6290131707976652515</guid><pubDate>Wed, 16 Sep 2015 10:17:00 +0000</pubDate><atom:updated>2015-09-20T13:07:31.576-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Amazon</category><category domain="http://www.blogger.com/atom/ns#">AWS</category><category domain="http://www.blogger.com/atom/ns#">Cloud Computing</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><title>AWS Developer Day in Manila : Why we need more  events like this?</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQgYN-8Q6Sow5IDQnuUHEkRFVYxSkNQuAMoFdzQfyhPGUMpxCN_oiGSjXpABkGtTaH7TQ8WqaXr94PCeazQuZOgXp832vbWTwyOJ-Yv1LUvh5cMgFRCmSUMFfvPMN3uAnn9SCu0Q/s1600/aws11.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQgYN-8Q6Sow5IDQnuUHEkRFVYxSkNQuAMoFdzQfyhPGUMpxCN_oiGSjXpABkGtTaH7TQ8WqaXr94PCeazQuZOgXp832vbWTwyOJ-Yv1LUvh5cMgFRCmSUMFfvPMN3uAnn9SCu0Q/s200/aws11.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Not everyday that you get to attend a great informative talk from subject matter experts. Last saturday, I attended the Amazon Web Services Developer Day organized by the Developers Connect Philippines (DevConPH) and hosted by iAcademy in Makati, PH. A free event that far exceeded my expectation. Information overload, so to speak. With the ever changing phase of technology and innovations, talks like these are very much welcome and much needed. Collaborations between solution providers and developers can pave way to innovations. Read on to find what made this event a fulfilling one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Unlike some of the product-centric seminars that I have been into in the past, I was surprised to find superb speakers &amp;nbsp;glazing this event. Disregard the fact that this is a free event, there was nothing boring hour in this event. &lt;a href=&quot;https://www.linkedin.com/pub/markku-lepist%C3%B6/a/179/470&quot;&gt;Markku Lepisto&lt;/a&gt; and &lt;a href=&quot;https://www.linkedin.com/in/kleinolivier&quot;&gt;Olivier Klein&lt;/a&gt;&amp;nbsp;, both AWS experts, &amp;nbsp;gave &amp;nbsp;much information to digest. The delivery technique was above average and it kept us interested through live demos and lively discussions.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaoua9CGHcMMe5NfWjmJSEAajqIrneI_2XDWKbs2swY1s-XVzU20eR5Y6o8DdCd4lo3Y3Vq5EzhWBjCkH7yuQCfSkIexXQuhJoi4coBylLAC9hzaN51abewh2TebKu8s5F1sgw1A/s1600/awspic4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaoua9CGHcMMe5NfWjmJSEAajqIrneI_2XDWKbs2swY1s-XVzU20eR5Y6o8DdCd4lo3Y3Vq5EzhWBjCkH7yuQCfSkIexXQuhJoi4coBylLAC9hzaN51abewh2TebKu8s5F1sgw1A/s1600/awspic4.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Markku Lepisto and Olivier Klein (image from DevConPH FB)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Ill save you from all the technicalities that went through the room ( I may have them on a separate post later ). &amp;nbsp;Markku set the stage by giving a great introduction on Cloud Computing and Amazon Web Services. &amp;nbsp;From there the discussion lift off &amp;nbsp;and the two speakers take &amp;nbsp;their turns discussing several interesting topics relating to &lt;a href=&quot;https://aws.amazon.com/&quot;&gt;Amazon Web Services&lt;/a&gt;. Topics from disaster recovery, &amp;nbsp;mobile analytics , machine learnings, push notifications to internet-of-things. There were no shortage on introducing the attendees the different cloud services being offered by Amazon. Awesome services like &lt;a href=&quot;https://aws.amazon.com/ec2/?hp=tile&quot;&gt;Amazon EC2&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/s3/?hp=tile&quot;&gt;Amazon S3&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/dynamodb/?nc2=h_l3_db&quot;&gt;Amazon DynamoDB&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/iam/?nc2=h_l3_dm&quot;&gt;IAM&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/kinesis/?nc2=h_l3_al&quot;&gt;Amazon Kinesis&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/sns/?nc2=h_l3_ms&quot;&gt;Amazon SNS&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/api-gateway/?nc2=h_l3_as&quot;&gt;Amazon API Gateway&lt;/a&gt;, &lt;a href=&quot;https://aws.amazon.com/cognito/?nc2=h_l3_ms&quot;&gt;Amazon Cognito&lt;/a&gt; &amp;nbsp;and &lt;a href=&quot;https://aws.amazon.com/iot/?nc2=h_l3_bh&quot;&gt;Amazon SDKs for IoTs&lt;/a&gt;. The discussions were &amp;nbsp;full of substances, not just plain talks on the products. They showed interesting demos, from source codes to actual configuration of services. The disaster recovery and IoT demo really stand out. All in all, these guys know their stuff and made sure that all questions were answered.&lt;br /&gt;
&lt;br /&gt;
Events like this are important for &amp;nbsp;developers across the board. &amp;nbsp;It does not matter if you know cloud, do mobile apps , web apps or you are , just like me, old school coders. Events like this will not teach you how to code, I mean, they cant do that in a day. What it gives you are insights and options. The fact that it opens you to the idea that you have all these tools and technologies at your disposal to create the next big thing is enlightening. You may not be able to use these today on your current work, but, who knows next year or on your job you will need these stuff at your disposal.&lt;br /&gt;
&lt;br /&gt;
The event was far from ideal, there are still rooms for improvement. The speakers were amazing. Registration was great, &amp;nbsp;the one that you can expect from &lt;a href=&quot;http://www.eventbrite.com/&quot;&gt;Eventbrite&lt;/a&gt;. &amp;nbsp;The venue was fitting, it was big enough to accommodate the participants and the amenities was satisfactory. The food was great and yes, unlimited coffee. However, there are some things that can improve :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I would have loved to pay an extra if a workshop is included. I know there are a lot of reasons why this is not possible but a workshop with a simple project output would have been awesome.&lt;/li&gt;
&lt;li&gt;Without any workshop in the plan, I still don&#39;t get the reasoning behind the &quot;No Laptop, No Entry&quot; in their confirmation email.It was not even checked during registration.&lt;/li&gt;
&lt;li&gt;It could have been more interactive if twitter was used not just a ticket to winning the raffle draw. Questions sent via twitter could have been filtered and relayed by DevConPH to the speakers. All in all, the activities on the social media is &amp;nbsp;a little underwhelming. Then again its the learning thats more important and I guess everyone got a lot of it.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Lastly, I was a bit annoyed by a few participants who were showing a little interest &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
and either chatting away or watching youtube. Some never went pass lunch and left the venue after the fact. &amp;nbsp;It would be a disappointment to learn that some hopeful registrants were whitelisted because the number of participants were limited&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ8203GwsyrB4Tx3bVPM0L0vsSArehcMjSUPiRS9J94rSrdTiwc1rVWbrqBJyHDTKQmsplrwekmiuyePT4kz79f7R4WhaO_ibkvsqg_GE-qN6oonCrstvipvU007xnxloTt3YdFQ/s1600/awstwit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ8203GwsyrB4Tx3bVPM0L0vsSArehcMjSUPiRS9J94rSrdTiwc1rVWbrqBJyHDTKQmsplrwekmiuyePT4kz79f7R4WhaO_ibkvsqg_GE-qN6oonCrstvipvU007xnxloTt3YdFQ/s400/awstwit.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
All in all, the event was a success.&amp;nbsp;My craving for information &amp;nbsp;leaves me wanting for more events like this. The partnership of product and solution providers with some of the active developer/user groups is really a great thing for the community. Its one of the way to introduce and push technology to the developers &amp;nbsp;and for the developers to have the opportunity to add these to their set of arsenals. Looking forward for more of &amp;nbsp;this, tech talks from &amp;nbsp;Google and Microsoft would be a must-attend. How about you, any workshop or tech events in your bucket list? &amp;nbsp;Comment away. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2015/09/aws-developer-day-in-manila-why-we-need.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQgYN-8Q6Sow5IDQnuUHEkRFVYxSkNQuAMoFdzQfyhPGUMpxCN_oiGSjXpABkGtTaH7TQ8WqaXr94PCeazQuZOgXp832vbWTwyOJ-Yv1LUvh5cMgFRCmSUMFfvPMN3uAnn9SCu0Q/s72-c/aws11.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-4077161256149569698</guid><pubDate>Sat, 29 Aug 2015 11:57:00 +0000</pubDate><atom:updated>2015-08-29T04:57:36.064-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cyberbullying</category><category domain="http://www.blogger.com/atom/ns#">personal</category><title>Cyber-bullying : The &quot;good&quot;, the bad and the ugly</title><description>&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; margin-right: 1em; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRjroZbOoYXLnF-IQ0dtnbq1rsya0BJyjSZTyp89-ybY-EaESoW-qnuGxVnpqJfSwpMunEMqktrtL-ivSMTyfIw8sQgBQmbeNLUwaeoFnAjPq1T0AExpuKaMEQWRI82fLiQXimhQ/s1600/cyberbully.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRjroZbOoYXLnF-IQ0dtnbq1rsya0BJyjSZTyp89-ybY-EaESoW-qnuGxVnpqJfSwpMunEMqktrtL-ivSMTyfIw8sQgBQmbeNLUwaeoFnAjPq1T0AExpuKaMEQWRI82fLiQXimhQ/s320/cyberbully.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Image courtesy of&amp;nbsp;http://www.digitalesq.com/&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;Cyber-bullying&lt;/b&gt; is defined as&amp;nbsp;&lt;span style=&quot;text-align: justify;&quot;&gt;the willful and repeated use of cell phones, computers, and other electronic communication devices to harass and threaten others. With the advent of social media, the incidents has increased in numbers and the victims does not even know what is hitting them. For the past years, we have heard of &amp;nbsp;depressions and deaths because of this. Yet, there has never been a strong drive to increase public awareness and promote support groups to help victims outside of the schools. &amp;nbsp;Campaigns and programs has never gained mainstream presence enough to make an impact.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;u&gt;The &quot;Good&quot;&lt;/u&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Does cyber-bullying really have some good to offer? Before you start sharing this post and say &quot;look at this guy promoting cyber-bullying&quot;, let me clear things up. In its real context, there are no good thing that comes from it. It should not be tolerated and it should be stopped. However, in the Philippines, I have seen how this can indirectly bring some &quot;good&quot; results. &amp;nbsp;With all the the corruptions taking place in all corners of the country, the common people found a new way to expose it. Gone were the days when red tapes puts your complaints into a state of being forgotten. The best way to do it now is through social media and Facebook, Instagram and Twitter is leading the way. Heard about a police or traffic officer doing &quot;kotong&quot;? Post it on the social media. How about a government official doing &quot;monkey&quot; business while on the job? Bring out your phone , take a snap and post it. How about guys who belittles someone or flashes a gun while in a heated argument due to traffic? Snap &amp;nbsp;and post. How about thieves and robbers caught on CCTV? Share the video and make it viral. It has been so easy to do this anytime and anywhere. Is this bullying? Indirectly it is, the person in focus never have the chance to air his side before you go ahead and destroy his/her personality. We know for a fact that some of this post may not be totally true and some were misinterpreted. So back to the discussion, in a way, through these actions, we are sending a message to everyone that they could not just do anything they want that can harm others because everyone is watching. Everyone is a witness waiting to snap a photo or record a video of you doing the &quot;deed&quot;. With just a hit to the &quot;share&quot; button, you become the talk of the town. Now, do you ever want that? Hell, no. While I like the idea, these things when done with malicious intent will never yield a good result.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;The Bad&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Everything about cyber-bullying is bad. It causes emotional pain, fear, rejection , shame, guilt , depression and worst, unwanted death. There are many reasons why bullying happens and it does not only happen in school, as some of the articles in the internet would emphasize.Cyber-bullying happens everywhere, in the office, in the neighborhood or even between friends and circles. In fact cyber bullying in the workplace has been a topic of some articles around (see sample articles &lt;a href=&quot;http://www.forbes.com/sites/meghanbiro/2014/07/27/the-real-world-implications-of-workplace-and-cyberbullying/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;, &lt;a href=&quot;http://www.bullyfreeatwork.com/cyber-bullying-in-the-workplace/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.northeastern.edu/securenu/cyberbullying-in-the-workplace/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;) .The effect of it is multiplied by the lack of support systems for some victims. While others are lucky enough to have friends and family&#39;s to talk to. Others simply keep quiet and take it for themselves. &amp;nbsp; As I can see it right now, most of the efforts concentrated on school incidents mainly due to the fact that teens and kids deserves more support on dealing with the issue. However, adults are also subjected to it. They may not be too open to discuss about it or they simply ignore them. While ignoring it sounds encouraging, continuous exposure &amp;nbsp;to &amp;nbsp;cyber-bullying can lead to an eventual breakdown if not mitigated at the start. There is still a long way to go. &amp;nbsp;Schools may have slowly addressing these issues with sets of plans and programs but outside of schools, I don&#39;t see much effort to deal with it.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;The Ugly&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The ugly thing about cyber-bullying is the emergence of &amp;nbsp;the internet and social media coupled with mobility through smartphones. The more we progress with technology, the more we have easy access to information. Information that are true, maybe true and worst of all, untrue. Any one can use it to spread news and lies. There are no dedicated agencies to filter out information on the internet. Policing is never possible, it cant be done. I can make up stories about a man I despise , put up some manipulated images or video to back it up and within minutes the personality of that person is doomed. Cyber-bullying material can spread quickly, be difficult to delete and be created by anonymous users.&amp;nbsp;Worst of all, people are easily swayed by emotions. They easily buy stories and spreads them like its the next big thing. Being bullied by a person or a group of person can be tolerable to some, but being bullied by the so called &quot;netizens&quot;? You can never win.&lt;br /&gt;
&lt;br /&gt;
Most of us may have been a victim, unknowingly. No one is safe from it. Make a false move, someone can just click away and within minutes, you are being harassed by groups of people &amp;nbsp;that you don&#39;t even know. Again, this is &amp;nbsp;not a teen or &amp;nbsp;a kid problem, it can happen to anyone. While the article&#39;s title may be misleading. There is no way I am supporting these kind of activities. Great thing &amp;nbsp;there are some organizations (i.e. &lt;a href=&quot;https://www.cybersmile.org/&quot;&gt;Cybersmile.org&lt;/a&gt;, &lt;a href=&quot;http://www.stompoutbullying.org/&quot;&gt;Stompoutbullying.org&lt;/a&gt;) that are stepping up and we should support their initiatives.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2015/08/cyber-bullying-good-bad-and-ugly.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRjroZbOoYXLnF-IQ0dtnbq1rsya0BJyjSZTyp89-ybY-EaESoW-qnuGxVnpqJfSwpMunEMqktrtL-ivSMTyfIw8sQgBQmbeNLUwaeoFnAjPq1T0AExpuKaMEQWRI82fLiQXimhQ/s72-c/cyberbully.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-139441782655074707</guid><pubDate>Sat, 13 Jun 2015 20:14:00 +0000</pubDate><atom:updated>2015-08-28T09:40:13.532-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">Mobile</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><title>Can you live on a 100MB data allowance for  30 days?</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH37FoGxELQPE3Ep3GwjES7jioQPNAK6uEJlS1iDBH2X7Zgc1zLm63dgm6XCgTyjYh4cYP1PV2gNg2U-RHf87HISd7w9hTRiDJYJiMUNDZySlLwa47qnwQmOE_0GvoLbmcdQQCGw/s1600/wp_ss_20150614_0001.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH37FoGxELQPE3Ep3GwjES7jioQPNAK6uEJlS1iDBH2X7Zgc1zLm63dgm6XCgTyjYh4cYP1PV2gNg2U-RHf87HISd7w9hTRiDJYJiMUNDZySlLwa47qnwQmOE_0GvoLbmcdQQCGw/s320/wp_ss_20150614_0001.jpg&quot; width=&quot;265&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
If you are a smartphone user relying only on WiFi connectivity to connect to the internet then you are lucky. Unfortunately, a lot of users wanted the extra mobility to access the internet on the go for quick browsing, traffic and weather updates, instant messaging and &amp;nbsp;to access their social networks. &amp;nbsp;However, &amp;nbsp;data has become a prime commodity and being online 24/7 can be expensive. Fortunately in the Philippines, service providers have been offering special deals and promotions on data connectivity. Gone were the days where unlimited call and text is all you need. Most offers now include data allowances. Some are generous and some are just too little to be usable. Are these offerings enough to get you through a month?&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
To find out if I can live on a 100MB paid data for a month, I registered to one of my service providers offer. &amp;nbsp;The offer is 100MB data for 30 days for only PHP 99.00. &amp;nbsp;For 30 days, I went on with my usual surfing habits, &amp;nbsp;I used my phone to check for traffic, access &lt;a href=&quot;http://www.nba.com/&quot; target=&quot;_blank&quot;&gt;NBA&lt;/a&gt;&amp;nbsp;, &lt;a href=&quot;http://www.espn.com/&quot; target=&quot;_blank&quot;&gt;ESPN&lt;/a&gt;&amp;nbsp; and &lt;a href=&quot;http://www.mlb.com/&quot; target=&quot;_blank&quot;&gt;MLB&lt;/a&gt; score updates, do occasional search, listen to music, instant messaging and visit my social network. For the first 2 weeks I have also my &amp;nbsp;background data enabled to support push notifications. After 30 days, I still have at least 5MB of free data remaining.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So does this answer my initial question? Literally a resounding yes! However, I have to disagree. Using Microsoft&#39;s Data Sense on Windows Phone &amp;nbsp;( yes I&#39;m on WP baby!), I listed my &amp;nbsp;data consumption per application as shown in the table.&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjRSTFdWUHvMQzrG5IIyMSqb4MJauOnyRGcUXdw-i3PoaGcD9KlrrU6banu3zTD1ZyVL-GYWx4wAE_i2BX3Jvfvta4UD5T9wJEv8UEeO3Reh4-yaciF3p5mMq5lLfoAzM8iCJEJw/s1600/Datasense.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjRSTFdWUHvMQzrG5IIyMSqb4MJauOnyRGcUXdw-i3PoaGcD9KlrrU6banu3zTD1ZyVL-GYWx4wAE_i2BX3Jvfvta4UD5T9wJEv8UEeO3Reh4-yaciF3p5mMq5lLfoAzM8iCJEJw/s400/Datasense.png&quot; width=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Data per application via Data Sense&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;In total, my consumption reached almost 1 GB of data in 30 days. How come I have still at least 5MB remaining out of the 100MB when my subscription expired? What I failed to tell you at the start is that the data promo offered by my service provider includes the following:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;100 MB of Data&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;1 Gigabytes of &lt;a href=&quot;http://www.spotify.com/&quot; target=&quot;_blank&quot;&gt;Spotify&lt;/a&gt; Access&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;Unlimited &lt;a href=&quot;http://www.facebook.com/&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;Unlimited Viber&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;Thus, without those other freebies , the 100 MB data allocation should have been gone on the first week of my subscription.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
While the idea of being able to live on a 100MB data allowance for 30 days seems not too possible for me, the exercise taught me three important things:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I became more aware of what applications on my phone is consuming data and how much are they consuming. This knowledge will give you a better plan on how to allocate your allowance for the month. &amp;nbsp;In my part, the information that I got lead me to uninstall some apps that were data hungry.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;It highlighted the importance of switching off the Background Data at your phone. While this disables push notifications and you wont be able to receive emails or instant messages unless you open and refresh the apps, this also saves you from unnecessary data downloads. Take note that SMS and phone calls will still be received in real time.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;It showed me the importance of knowing how to switch ON/OFF your mobile data. This will give you the ability to easily turn it off when not needed. For those going out of the country, it is also a good thing to know how to disable mobile data while on roaming.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
I still remember the days when all I have to worry about is the number of remaining calling minutes or SMS in my mobile phone. Times have changed and with the emergence of smartphones and mobile internet connections, the usage has shifted from regular call and SMS to &amp;nbsp;browsing, data calling, music and video streaming, social networks and instant messaging. &amp;nbsp;Thus, managing you data consumption is also becoming a necessity to avoid unwanted charges from your service provider.&lt;br /&gt;
&lt;br /&gt;
How much data do you consume in a month and do you monitor your data consumption on your mobile phone? If you have tips and tricks that you may want to share, feel free to visit the comments section.</description><link>http://trashvin.blogspot.com/2015/06/can-you-live-on-100mb-data-allowance.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH37FoGxELQPE3Ep3GwjES7jioQPNAK6uEJlS1iDBH2X7Zgc1zLm63dgm6XCgTyjYh4cYP1PV2gNg2U-RHf87HISd7w9hTRiDJYJiMUNDZySlLwa47qnwQmOE_0GvoLbmcdQQCGw/s72-c/wp_ss_20150614_0001.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-6409540316733419858</guid><pubDate>Thu, 25 Apr 2013 22:31:00 +0000</pubDate><atom:updated>2017-04-04T06:08:25.640-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><title>How to Kill a Slow Process using DOS Batch File Script with TaskKill and TaskList</title><description>&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPR6J17d0ozb9pdcu-Dlx3mlOtol_uRh56zs2aIDhyp2chtgo4Rs2w2Nc3O6RdBUyvInqHhExaa8NWFbxcRA3e8lnW34YqZSf4Hgpqw3wT_rZaK3A4L0zZgKVbbmL737xQFce4nw/s1600/images.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPR6J17d0ozb9pdcu-Dlx3mlOtol_uRh56zs2aIDhyp2chtgo4Rs2w2Nc3O6RdBUyvInqHhExaa8NWFbxcRA3e8lnW34YqZSf4Hgpqw3wT_rZaK3A4L0zZgKVbbmL737xQFce4nw/s1600/images.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPR6J17d0ozb9pdcu-Dlx3mlOtol_uRh56zs2aIDhyp2chtgo4Rs2w2Nc3O6RdBUyvInqHhExaa8NWFbxcRA3e8lnW34YqZSf4Hgpqw3wT_rZaK3A4L0zZgKVbbmL737xQFce4nw/s1600/images.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPR6J17d0ozb9pdcu-Dlx3mlOtol_uRh56zs2aIDhyp2chtgo4Rs2w2Nc3O6RdBUyvInqHhExaa8NWFbxcRA3e8lnW34YqZSf4Hgpqw3wT_rZaK3A4L0zZgKVbbmL737xQFce4nw/s200/images.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;If you are still trapped in the era of batch files and command lines in Windows environment, here is something you can add to your DOS cheat codes.&amp;nbsp; Lucky for us here, we are still using DOS batch file to implement installation of some updates to our system. Here is a simple batch file script that is designed for slow systems that requires a significant amount of time to kill a particular process. The requirement is simple,&amp;nbsp; do not start any copying or moving of files until&amp;nbsp; the process ( i.e. MyProcess.exe) is totally killed by DOS. The simplest solution would be to use TASKKILL to kill the process, wait for a few seconds&amp;nbsp; then start copying/ moving of files there after. Unfortunately, while we were testing this simple step on a slow machine, DOS would take an awful lot of minutes to kill the process in question. Thus, when our delay is reached, we would encounter error on copying/moving files that is currently used by the unkilled process causing a failure on the installation. So instead of increasing our delay to God-Knows-How-Much , we went for another approach. That is to continuously try to kill the process ( after a certain&amp;nbsp; delay ) until it is actually out of the task list. This would mean&amp;nbsp; a:) continuously monitoring the task list to see if the process is still alive b:) create a loop that will do the monitoring of the task list, try to kill the process, delay for some time and repeat again.&amp;nbsp; &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Here is a simple script that my friend came out to solve the issue. She used TASKKILL to kill the process, TASKLIST to list the currently running process, a temporary file to dump the task list result, PING command to add delay and some FOR and IF statements. This worked on XP machines and also tested on Win2003 machines.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;color: red; display: inline; float: none; font-family: &amp;quot;verdana&amp;quot; , sans-serif; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;:&lt;span style=&quot;color: red;&quot;&gt;Loop&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TASKKILL&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt; /F /T /IM &lt;/span&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;strong&gt;MyProcess.exe&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;/span&gt; delaying for 35sec...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ping&lt;/span&gt; 1.1.1.1 -n 1 -w 35000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TASKLIST /FI &quot;IMAGENAME eq &lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;MyProcess.exe&lt;/span&gt;&lt;/strong&gt;&quot; &lt;/span&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;/NH&lt;/span&gt;&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt; &amp;gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;strong&gt;tmp.txt&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; font-family: inherit; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR /F %%A IN (&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;tmp.txt&lt;/span&gt;&lt;/strong&gt;) DO (&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; font-family: inherit; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IF /I &quot;%%~A&quot;==&quot;&lt;span style=&quot;color: blue;&quot;&gt;&lt;strong&gt;MyProcess.exe&lt;/strong&gt;&lt;/span&gt;&quot; (&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GOTO&lt;span style=&quot;color: red;&quot;&gt; Loop&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; font-family: inherit; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; font-family: inherit; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: black; display: inline; float: none; letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; del&lt;/span&gt; /F /Q &lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;tmp.txt&lt;/span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;color: purple;&quot;&gt;REM&lt;/span&gt; Continue the installation process here, after &lt;span style=&quot;color: blue;&quot;&gt;&lt;strong&gt;MyProcess.exe&lt;/strong&gt;&lt;/span&gt; has been killed.&lt;/span&gt;&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/04/how-to-kill-slow-process-using-dos.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPR6J17d0ozb9pdcu-Dlx3mlOtol_uRh56zs2aIDhyp2chtgo4Rs2w2Nc3O6RdBUyvInqHhExaa8NWFbxcRA3e8lnW34YqZSf4Hgpqw3wT_rZaK3A4L0zZgKVbbmL737xQFce4nw/s72-c/images.jpg" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-2591512457196389728</guid><pubDate>Sun, 07 Apr 2013 01:53:00 +0000</pubDate><atom:updated>2013-04-06T19:02:49.247-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Software</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><title>Create and Use Profiles in Android Using Profile Scheduler</title><description>&lt;div align=&quot;justify&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjSAKhIlxuQxWCPcG3q28VDAzPKLEWgyz9rWhfs-RjUWGlPSY9uOaTyBbEy2vQCIZluamv0GoOuv8U8r_ZejHsS_qRg0az6aRg45akIrW680DQYp8rOXjztQeKNF6XuT7pxFG5RQ/s1600-h/pscheduler%25255B9%25255D.png&quot;&gt;&lt;img alt=&quot;pscheduler&quot; border=&quot;0&quot; height=&quot;275&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlLNKHdmX3nW54eDSQW5DpzvS6D1VOmysJjmcZxVz8SXYzlI06d5xqP_S4dPtp69ggANNZzLzadAW9n91wEYE4gjMPiruz-tWnrs5LtrvyZ_K_GSM6_nXV_HcecCbg9wpnnvnUrg/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;pscheduler&quot; width=&quot;590&quot; /&gt;&lt;/a&gt; &lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;
Did you miss your old reliable Nokia 2G phones running on Symbian OS? It was always simple back then, keypads are easy to use, you could create SMS message blindfolded or while looking at some lovely ladies passing by. You could even go for days without running out of juice. Snake was the best game to kill your time. Over-the-air updates and fragmentation are non-issues and we have the profiles. &lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
Profiles are ways to control some settings like ringtones and volumes to match the environment. This was a basic feature of phones back then. Profiles are easily accessible through the power button or one of the home keys on the keypad. However, with the introduction of more intuitive OS to power these new generation of smartphones, this simple feature fade away. I have used&amp;nbsp; TouchWiz on top of Gingerbread and the stock Jelly Bean but have not seen this on the core features. The again, there seems to be an app for just about everything.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
While some NFC advocates promotes the use of NFC tags to accomplish this simple tasks, I prefer a simpler solution using Profile Scheduler, an app to do just that developed by WetPalm.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
The interface is relatively simple, you can set the profile you want from the notification bar and configure everything else on the application main interface. Yes, automatic scheduling is supported. &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
Download and install the app&amp;nbsp; from the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.wetpalm.ProfileScheduler&quot; target=&quot;_blank&quot;&gt;Google Play Store&lt;/a&gt;. Once installed, the application can be launched through the application drawer or from the&amp;nbsp; notification bar as shown below:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0POqJHksWD1NQbiBo5BV4gzsq4pAXnaAQwX8b8DcWDONpJ61MGpzf4WT8KpX1UJ2inqniXnLfssZFoRMgEND-dxEQoUqWfGcP6dji0n5EaQ_H1Wa5v_UqDMS3Joqkwzx0St_ClQ/s1600-h/Screenshot_2013-04-06-20-33-37%25255B16%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-33-37&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5bB3iKlYBgLJY4d6pqGXLNeh5unE_xTuBw15sP5c8-VPOnsck4kmQGD1F5dGt_BYozrRUgrBPLQKVjLCIV_ngoAPJEGKrAegr31Io720V7A5c56PgRQlGovwY8h6KxIdiQ6j15w/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-33-37&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
The main interface is very simple. It simply list the default profiles that came with the app. An option to add a custom profile is also supported. Pressing the profile name will activate that particular app, a long press on the particular profile will launch another selection box. The selection box allows you to perform several functions.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 590px;&quot;&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEN3emsCN5fjUHBEWWHfgJ8EqHzOUwPA37vIBmBm_VOShQ2-H3xOX6lzhG7k_46WgkXYrzkwFxUkDdPJUbGcfobKS1Df4zcM9nIz7o9HQC0mBmrkQNF2pHSLo35vpsyXNO7XkV4g/s1600-h/Screenshot_2013-04-06-18-23-47%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-18-23-47&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFXc_da7cKQib_OMHAxAiouRlnS8TgZx8mfzm8G9ZR_diGdJlxRLvckPa4HkoI1sm_SN2T35rTCfXJMZmljQkG2xhV7CzWomX6GQ2ym-LnfftRKF60PBCpvDv7jwvqgyMYYLnNCA/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-18-23-47&quot; width=&quot;167&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMApPtkeQp-ZTrwm3BkGo7UkB2hrE2w2BSmZsTLKPFXymcTW5jt-sims5cVsMQA01f1cuUIo7yhX9wqleolnsxcdfE__Phyphenhyphentb8usuESOzCrRAKpteqirX04NIgLkktPvtLmK9PLA/s1600-h/Screenshot_2013-04-06-18-24-14%25255B8%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-18-24-14&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9FTTGRmV44frpNrnoaB1-jvhlPhAlem46XXaAWNvB3BlvJNorhBYR-gEHc8ECAXIMdMFm9n1DfkowU1kJW6ug00HFN9xWcU1YiRkA1FGDYadW3jTdOLcMBU6RndyvOiPk5eBAfQ/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-18-24-14&quot; width=&quot;166&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;center&quot;&gt;
The Main UI.&lt;/div&gt;
&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;center&quot;&gt;
Long Press displays this selection box.&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
To edit a particular profile, we simply select the Edit button. The edit screen allows the user to set&amp;nbsp; the following settings:&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 590px;&quot;&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;justify&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
The General settings let you configure the basic properties of the profile.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;justify&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
The Sound settings is the one you would probably modify to meet the requirements of a particular environment/setting where the profile will be used.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR4NlHKsM5YVtHLszPVSwJu8kQixotFkH69HL32SKKyMZE-hiLECi4FowvA1qE4o15QgQwcRfb9tNwmFeAcFFFESpkof48v6aW70pIBx2FwoSzurcRQBKgEsUtITdtl4NGmZFOmw/s1600-h/Screenshot_2013-04-06-20-54-11%25255B6%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-54-11&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVb8qWv7prX2CBu2PFSKU41MCkWRmUuEXdPF3hVlrAOQBWiWlpTUtH4mTEXbE9dOA-0asJiVWunPSi5vwfdgrXD_4YhrHe936xnavHBPoZlNNSaMEBbedoXPd9RHHISR8DtBC_JQ/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-54-11&quot; width=&quot;148&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBNbCb8DgOIdthlz5f8rv1trXg2LLLRAPtQgQPJ9zJjNtpC6617OIl3FhdZPk6_8kG7CWg9fL9KDv_qX6n1eZYGv6wgTV-7EJLe8kzKYvmPWWHcnwX57WXROdqrS5NKkewF_NIug/s1600-h/Screenshot_2013-04-06-20-54-20%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-54-20&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTQGGlgWc8q1rtBLKJQx5oUIWDQYavuNOQIGIMNxpqzISspx2girQwG0fTAIsNpA8L8796udXWvbM11tz4GlNMAGw7BILV95g7FUQumDypgr1NEOFMNUzqetJyYzFE-aOr-KF7Vw/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-54-20&quot; width=&quot;148&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
The Wireless and Network settings allow you to define the state of the available connections once the profile is activated. A good example would be to disable WiFi when the Office profile is selected.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
The Display settings is straight forward.&amp;nbsp; The synchronization setting lets you turn on/off auto sync when the profile is selected.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXsMsRcpXbs_hUsK34yDc8osMHshDu2GASJgSBjxR9vkoOmUZrhDDG9zJ_x4qcloS5HUaVlxMSRrSSNlqx6SyYWQVk51arYGGwpGlXMlyxx3MQmjypHmrz442dGdpgiFSh-QNyRQ/s1600-h/Screenshot_2013-04-06-20-54-29%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-54-29&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiupGFh5Q66h60Ua9dMvuT-eQ9rCxyWLVbyoZfShYpCqYSp6VmLQ4ElQr-2tTFH-y93o5c5S7enY7zWNAtZywFcdMvnbHSzk0GG5VxdOG7hustAofqR9ut9mmoxD4Kd7yQdAvLICw/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-54-29&quot; width=&quot;148&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL4qP3e1s7_IEzDBKONvfnNV7FtPFaiW1qOsr5D823KZ8ss5gHpiYSLwnriW1UDlmNYWOUFzg8C4LrGZ7xvufyEe9QfC3RM2dsFjGEIMG2yyQp7P-uQJzYS4Dk3hE04vv6X497DQ/s1600-h/Screenshot_2013-04-06-20-54-41%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-54-41&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnijWV2jOnYvf_zRAC6MwIevK97yjBhSrLa8VgjXE_068kHmHwigRvEBUAPyCGXsjiYAG69f5IEZ-bYrfD4JHxTJoKQJM5D1_5n-5a8sYCZVCMJf3fQ1DOABDv-NrOCwIsyTMGXA/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-54-41&quot; width=&quot;148&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
The Application settings let you launch or close a particular application once the profile is selected. A good example would be to close all Instant Messaging apps when the Office Profile is selected. Honestly, this setting has not been successful so far in my testing.&lt;/blockquote&gt;
&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh6Na4lwGGDoDNm-GOTkSduGdDud39pDfNat5fzw0BNFUTUVeaazmEOVA0lSsIenReYrLSvwh43wmmZoGPSV32Y1Hbnd8s9tiFb_OBGjinl0ozIYiHkDK6NQrh4_daD7ILnJ_VSg/s1600-h/Screenshot_2013-04-06-20-54-48%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-20-54-48&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_SlKi2HOP6qehF24HjpAMk0Jar3q4Pn-SzwmEcm6PP0Sy1YCVTkhOsC1X17GcscCjY10tLCPfDeoZLX-_GUOEcdEsnqrk6kfwz-qEE9oKm1u9mOIKlYWiDtP1RinaEARxzo6RaA/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-20-54-48&quot; width=&quot;148&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Rules can also be configured to automatically activate a profile when a condition is met. Simply select the Rule Tab in the main UI and add your own rules. In my case, I have added 2 simple rules :&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Office Time – This activates the Office Profile every 9:30 AM to 7:00 PM from Monday to Friday. My Office profile include settings like using a different notification sound, reducing the volume and turning off the WiFi.  &lt;/li&gt;
&lt;li&gt;Night Time – This activates my Night Profile every 11:00PM to 7:00AM everyday.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 590px;&quot;&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8tjK2pXcleTS8oDH9HEdVL2L-fX5A3JLLRcwmAU3773egBSxVoDLeXcx384WrbjuzMlPO_3ZaKEqOLrWLRxGZU7I7pZliDReezsPWsWj-EbVlUctO2QB9T_Rj4cBgZTwIdNquMA/s1600-h/Screenshot_2013-04-06-18-24-54%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-18-24-54&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdhuUiv_gHylhFS3i0C-idhur_0iglphVzSEw-Mm_mcUG4HvUTMEnKagWskxOb18IQNsEo-1vyoyK3A0hJnZZLXwh2T519EIMF5dm9hK7aIcQ9z4ebRIGUTlWuVHBBwEtNM7o4Kw/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-18-24-54&quot; width=&quot;166&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;295&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV2uG0iP4u1hAr4mz-jsRYqyIu0dctgz5_gAmyIHSeXDRlz13yvq5Ly0NFmliRqlUBY9N9ojbMzNtI9nWDQR_ZEERTPGScR9DIwV21LEZjCnnnM7gHjjddvUuMYoQcqYbmdxNMNw/s1600-h/Screenshot_2013-04-06-18-25-26%25255B2%25255D.png&quot;&gt;&lt;img alt=&quot;Screenshot_2013-04-06-18-25-26&quot; border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK97P4k1FCOV9ZH51dT7ylN-R5O2FtLZ__GPlFXmnwOhX7Sss-k584vnYu3wsFpo-Zjn18Z8TByyTm4r7cw0Q_JIHVnGfaN8M3l8Q1aZgDBiIGtsmGQUzE4GbzqwMc0eTfEcgk0w/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Screenshot_2013-04-06-18-25-26&quot; width=&quot;167&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;
Other advance settings can be accessed on the settings button. All of this functionalities are documented on their&amp;nbsp; &lt;a href=&quot;https://sites.google.com/site/profileschedulermobile/home&quot; target=&quot;_blank&quot;&gt;ONLINE HELP PAGE&lt;/a&gt;.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;
All in all, if you want to implement profiles on your android phone to easily control your phone settings based on some conditions, the Profile Scheduler is a very simple application to do just that.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;http://i47.photobucket.com/albums/f196/m3lles/blogs/4.jpg&quot;&gt;&lt;img alt=&quot;4&quot; border=&quot;0&quot; height=&quot;47&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4Riltvk0-vPfmi8f3KwSWcZHptIbW_A7eTS6lH7BIOolnmXshDlkxycNlkNo2PyzgHnpeeg_5g3BvDuQUIRTLNXfH8au44YAfSgZghOETD0nqZo2lJUnDMvbSPtK4tT_zFt3vA/?imgmax=800&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;4&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Download link for&amp;nbsp; Profile Scheduler&lt;br /&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.wetpalm.ProfileScheduler&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;playstore&quot; border=&quot;0&quot; height=&quot;52&quot; src=&quot;http://i47.photobucket.com/albums/f196/m3lles/playstore.jpg&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline;&quot; title=&quot;playstore&quot; width=&quot;141&quot; /&gt;&lt;/a&gt;</description><link>http://trashvin.blogspot.com/2013/04/manage-your-android-phone-profile-using.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlLNKHdmX3nW54eDSQW5DpzvS6D1VOmysJjmcZxVz8SXYzlI06d5xqP_S4dPtp69ggANNZzLzadAW9n91wEYE4gjMPiruz-tWnrs5LtrvyZ_K_GSM6_nXV_HcecCbg9wpnnvnUrg/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-2096207229239255723</guid><pubDate>Fri, 05 Apr 2013 17:51:00 +0000</pubDate><atom:updated>2017-04-04T06:09:01.492-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Software</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><title>Visual Studio 2012 Update 2 is Now Available!</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQvzOG-jrHSmoDItt5wDHKqosn_pEJqvnpq1LafsVAIn_0CQCJI5Ke1d6SAToX8NsGO6AJk_PbflnT71BK3EGN5tSfNiM0qMHtokUZZMp6iI17ufJxjjHY7RAI1OquvMmfYVzNJA/s1600/2013-04-05_133917.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQvzOG-jrHSmoDItt5wDHKqosn_pEJqvnpq1LafsVAIn_0CQCJI5Ke1d6SAToX8NsGO6AJk_PbflnT71BK3EGN5tSfNiM0qMHtokUZZMp6iI17ufJxjjHY7RAI1OquvMmfYVzNJA/s640/2013-04-05_133917.jpg&quot; width=&quot;590&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Good news to all Microsoft Visual Studio users,&amp;nbsp; MSDN has sent email notifications to all subscribers about the availability of update 2 today. Here is the rest of the information from the email.&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The updates provide continuous value, adding new capabilities year-round to Visual Studio. These releases are aligned with the core software development trends in the market and feedback received from the community, ensuring&amp;nbsp;the users&amp;nbsp;always have access to the best solution for building modern applications. In addition, the update process makes it easier for&amp;nbsp;users to locate and deploy bug fixes, and keep Visual Studio up-to-date with regard to&amp;nbsp;Microsofts hosted cloud offerings. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The key features available with this update include: &lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;strong&gt;Quality enablement&lt;/strong&gt;: author test cases through the web portal and execute test cases on your code through the cloud with web test case management. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;strong&gt;Agile planning&lt;/strong&gt;: work item and Kanban Board enhancements, enabling further customization to meet your team’s unique characteristics. &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;strong&gt;Line of business development&lt;/strong&gt;: create line of business applications that are rendered using HTML5 with LightSwitch support for HTML clients and SharePoint. &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Take note that Update2 is cummulative and will install Update 2 if not yet installed.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To start updating your system, please go to &lt;a href=&quot;http://www.microsoft.com/visualstudio/eng#downloads+d-visual-studio-2012-update&quot; target=&quot;_blank&quot;&gt;THE DOWNLOAD LINK&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/04/visual-studio-2012-update-2-is-now.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQvzOG-jrHSmoDItt5wDHKqosn_pEJqvnpq1LafsVAIn_0CQCJI5Ke1d6SAToX8NsGO6AJk_PbflnT71BK3EGN5tSfNiM0qMHtokUZZMp6iI17ufJxjjHY7RAI1OquvMmfYVzNJA/s72-c/2013-04-05_133917.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-6354586944978406494</guid><pubDate>Fri, 05 Apr 2013 05:23:00 +0000</pubDate><atom:updated>2013-04-05T07:05:12.127-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">city life</category><category domain="http://www.blogger.com/atom/ns#">Directions</category><category domain="http://www.blogger.com/atom/ns#">Manila</category><title>Lost in Metro Manila ? Here’s a site for you</title><description>&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot; style=&quot;width: 574px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td valign=&quot;top&quot; width=&quot;248&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiydUC4Xa0L3ae518VfZRogtrbXTGX1HC5cUvij2_RFD9rhnhsFJxuhsseoVABNnYfaoNSIgognRSYexHnl0RSh47F_fXEMyIpPuNmwpjmuoXWCTeWGs-hk-_OeW5vb29QJtFSNOw/s1600-h/directionsDM1501_228x177%25255B5%25255D.jpg&quot;&gt;&lt;img alt=&quot;directionsDM1501_228x177&quot; border=&quot;0&quot; height=&quot;181&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4Cio75Wf0q8wna_B_-zFoyG1BHlWH4cBtjJcu3QgG0l6lP-TZoSod2Rc7FmcNo8Rzc6-pr-VmIzoerklGIawd8mTWmviFLZ91GPKCWx-C5jQZiiBj9gDgpgy_TZ8bVf37ORm5g/?imgmax=800&quot; style=&quot;border-width: 0px; display: inline;&quot; title=&quot;directionsDM1501_228x177&quot; width=&quot;232&quot; /&gt;&lt;/a&gt; &lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;324&quot;&gt;&lt;div align=&quot;justify&quot;&gt;
Have you ever been lost in the concrete jungle of Metro Manila ? I have to admit, I was lost many times and I have written some &lt;a href=&quot;http://trashvin.blogspot.com/2007/11/trying-to-be-street-smart.html&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt; on how to get to particular places in the past. Unfortunately, I don’t really travel around that much to be an expert. Good thing, some one decided to put his street smart direction-junkie self into writing.&amp;nbsp; The site is simply named “Directions On Web : Commute Fast and Drive Smart in Metro Manila”. &lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
The site contains vast amount of driving directions as well as commuting directions that will definitely help any lost soul. Alternate routes are listed as well. Some may be outdated, just be responsible enough to verify if the roads mentioned are still accessible and passable if you are driving. Commuters need not to worry, just ask around if you got lost following the direction. My technique: If I know a way to go to EDSA or Quiapo, there’s a great chance that I will find my way :-)
&lt;/div&gt;
&lt;br /&gt;
Here is the link to the site : &lt;a href=&quot;http://directionsonweb.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Directions On Web&lt;/a&gt;.&amp;nbsp; Be safe and drive safely.   </description><link>http://trashvin.blogspot.com/2013/04/lost-in-metro-manila-heres-site-for-you.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4Cio75Wf0q8wna_B_-zFoyG1BHlWH4cBtjJcu3QgG0l6lP-TZoSod2Rc7FmcNo8Rzc6-pr-VmIzoerklGIawd8mTWmviFLZ91GPKCWx-C5jQZiiBj9gDgpgy_TZ8bVf37ORm5g/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-1403265233840982515</guid><pubDate>Fri, 29 Mar 2013 03:21:00 +0000</pubDate><atom:updated>2013-03-29T13:58:10.385-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Google</category><category domain="http://www.blogger.com/atom/ns#">Software</category><category domain="http://www.blogger.com/atom/ns#">Wifi File transfer</category><title>WiFi File Transfer : Access your phone/tablet storage via WiFi</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizdYQ66UeEV4u8mUCmZ2gw4pB7y_yKtCOybItXLb3njtzSu78eN0hQcc5MoqikFvSRauFuX8ykqRvQ9VYC4WPz9aP_ePYv66Z2BI4MolCIinEzFNnvGvfCh1YCWnGsuA2UbVU5Og/s1600/WiFiFile.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizdYQ66UeEV4u8mUCmZ2gw4pB7y_yKtCOybItXLb3njtzSu78eN0hQcc5MoqikFvSRauFuX8ykqRvQ9VYC4WPz9aP_ePYv66Z2BI4MolCIinEzFNnvGvfCh1YCWnGsuA2UbVU5Og/s320/WiFiFile.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Have you tried transferring files from your phone or tablet to your PC but just could not get hold of that micro USB cable? If you are the type of person that needs file transfer every now and then but always forget the cables, as long as you have WiFi access, this application can make your life better. The WiFi File Transfer apps allows shares your phone or tablets drive over the air allowing you to transfer data to and from the device through a simple web interface.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
To start transferring files, open the application in your mobile device. The start screen will show a basic interface that will let you touch the START button to enable sharing.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiow5H2Yi2M_7orWD-VAishs6BiRpH4B5i3BP_EbN8VoPAnQ02vWFwrSOS_OqdLwV6K0cwNvXeV-pF8NydoXvrERDvnSCiDP24Ec0y5G12uXtwBThzR8BTvN2RdrYi02t8LQNLavw/s1600/Screenshot_2013-03-28-22-57-49.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiow5H2Yi2M_7orWD-VAishs6BiRpH4B5i3BP_EbN8VoPAnQ02vWFwrSOS_OqdLwV6K0cwNvXeV-pF8NydoXvrERDvnSCiDP24Ec0y5G12uXtwBThzR8BTvN2RdrYi02t8LQNLavw/s320/Screenshot_2013-03-28-22-57-49.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After selecting START , the app will display the IP address that you can use to access your phone or tablets drive in a web browser.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6g_-umde3N7hdhjLALxuX7S1Pb-10rZ5IPsVc1IsG8FcQG9bxt7Ny5HQrA6GwIi4f5Zurtf3WQ8PD18kgN8CJGOxb01A2bpRlAJfU6NejZSZVaD4B9Tai_cUUIC0B4HX8xkVxQ/s1600/Screenshot_2013-03-28-22-58-12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir6g_-umde3N7hdhjLALxuX7S1Pb-10rZ5IPsVc1IsG8FcQG9bxt7Ny5HQrA6GwIi4f5Zurtf3WQ8PD18kgN8CJGOxb01A2bpRlAJfU6NejZSZVaD4B9Tai_cUUIC0B4HX8xkVxQ/s320/Screenshot_2013-03-28-22-58-12.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
In this example, to access my device drive I have to type the address http://10.0.0.19:1234 &amp;nbsp;on my web browser. This &amp;nbsp;may vary depending on how your network is setup. The PORT NUMBER used can also be configurable. You can also protect the share with a password. All of these settings can be accessed via the apps setting page.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizBgKflqLvKmTvNz6mwaDM9ECCLLMIjU9hWnmnOLTM-u5BFZzYHQcylp93KC0cXLvQ8fpdGsZBgLeT7dD0gRXRPbE5e7TmI2SK9QamYqKPl78eZuJfEYeYcnM47bwuJzkzSCgmHw/s1600/Screenshot_2013-03-28-22-58-45.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizBgKflqLvKmTvNz6mwaDM9ECCLLMIjU9hWnmnOLTM-u5BFZzYHQcylp93KC0cXLvQ8fpdGsZBgLeT7dD0gRXRPbE5e7TmI2SK9QamYqKPl78eZuJfEYeYcnM47bwuJzkzSCgmHw/s320/Screenshot_2013-03-28-22-58-45.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
After typing the access address at your favorite browser, the page will ask for a password ( if set ) to continue.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Gc3BbJ8lOsg-hjy4JpU3I8idUUaNXDxrHrJGxp_2Ft8JONE8x471EagyMBlaV63ifS3GiNrBjfbzD81R47ATDG6h0cZcqCPl-Chx3clfCQdEjGvb4oLHAZlmTFcceMZ5sob5yQ/s1600/webpassword.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;155&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Gc3BbJ8lOsg-hjy4JpU3I8idUUaNXDxrHrJGxp_2Ft8JONE8x471EagyMBlaV63ifS3GiNrBjfbzD81R47ATDG6h0cZcqCPl-Chx3clfCQdEjGvb4oLHAZlmTFcceMZ5sob5yQ/s400/webpassword.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
The web interface is easy to use, the folders are listed similar to windows file explorer. Music, photos , videos have their own tab. Users has the option to download, delete, move , make a zip file, create new folder. As an added bonus, the drives memory usage and current battery level is also displayed.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQlIf57jeVmGURLE-7CG7LI6vfNTHiROOQ93Ut5Ciqq7pje6HiXt_iek24vC0W0_KPiWUA8Qust-UGxTkO3_kFcrJ2M0tb-Bsvbs5A6BzvSq59YwpzZmdekGeMy6umOn0vACN9kw/s1600/explorer.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQlIf57jeVmGURLE-7CG7LI6vfNTHiROOQ93Ut5Ciqq7pje6HiXt_iek24vC0W0_KPiWUA8Qust-UGxTkO3_kFcrJ2M0tb-Bsvbs5A6BzvSq59YwpzZmdekGeMy6umOn0vACN9kw/s400/explorer.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Overall, the application is simple and straight forward to use. It has features for security and the web interface is not bad. You can download the app at the &lt;a href=&quot;http://play.google.com/&quot; target=&quot;_blank&quot;&gt;Google Play Store&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
Download this&amp;nbsp;application&amp;nbsp;at &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.smarterdroid.wififiletransfer&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5zbWFydGVyZHJvaWQud2lmaWZpbGV0cmFuc2ZlciJd&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://i47.photobucket.com/albums/f196/m3lles/playstore.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/03/wifi-file-transfer.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizdYQ66UeEV4u8mUCmZ2gw4pB7y_yKtCOybItXLb3njtzSu78eN0hQcc5MoqikFvSRauFuX8ykqRvQ9VYC4WPz9aP_ePYv66Z2BI4MolCIinEzFNnvGvfCh1YCWnGsuA2UbVU5Og/s72-c/WiFiFile.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-3920236710778753538</guid><pubDate>Thu, 28 Mar 2013 05:30:00 +0000</pubDate><atom:updated>2017-04-04T06:10:18.052-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">Programming</category><category domain="http://www.blogger.com/atom/ns#">Software Development</category><category domain="http://www.blogger.com/atom/ns#">SQL Error</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><title>&quot;Login failed for user &#39;&#39;. The user is not associated with a trusted SQL Server connection. (.Net SqlClient Data Provider)&quot;</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;
&lt;div style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzBDyzKHf4KrAlhybXVOsZWWkKEhNq7SapU1FLwioSjpBQ9yezMFj2jzQWqnQt1zKRtZY1WmeZI_94ra7fJxIBHDaYY9jcXqdtqPwAOgBaAA8Wf1NBdPvcC00SZJGbo7I1g8R_Q/s1600/imagesCAZ78VPI.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzBDyzKHf4KrAlhybXVOsZWWkKEhNq7SapU1FLwioSjpBQ9yezMFj2jzQWqnQt1zKRtZY1WmeZI_94ra7fJxIBHDaYY9jcXqdtqPwAOgBaAA8Wf1NBdPvcC00SZJGbo7I1g8R_Q/s200/imagesCAZ78VPI.jpg&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;Microsoft error messages are sometimes cryptic and in some cases, misleading. This morning I was working on a client server setup at work when I encountered one. So I have two fresh image drive, one for the client and the other for the server.&amp;nbsp;For redundancy, each have their own MS SQL Server installed. The client uses its local database in case of disconnect. After a little configuration, all is almost ready to go. However, final test would reveal its not ready at all. &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;/div&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;u&gt;The Issues&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
1.&amp;nbsp; Accessing a shared folder in the client always locks the account I used to login.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
2. Connecting to the clients database in the server, gives the &quot;Login failed for user &#39;&#39;&quot; error. The actual message is &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&quot;Login failed for user &#39;&#39;. The user is not associated with a trusted SQL Server connection. (.Net SqlClient Data Provider)&quot;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
3. Replication is not working.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
4. Event viewer indicates exceptions from System.Data.SqlClient.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;u&gt;The Solution &lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
1. Check if the account you are using to access the client is a valid account.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
2. Check if the password used is correct.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
3. If all looks ok, follow the following test :&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; a. Verify that name resolution is working correctly. &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;From a command prompt at the client, ping the server by name and verify that it returns the correct IP address: PING {ServerName}&lt;/li&gt;
&lt;li&gt;From a command prompt at the client, ping the server by IP address, and verify that it returns the correct server name: PING -a {ServerIP}&lt;/li&gt;
&lt;li&gt;From a command prompt at the server, ping the client by name and verify that it returns the correct IP address: PING {ClientName}&lt;/li&gt;
&lt;li&gt;From a command prompt at the server, ping the client by IP address and verify that it returns the correct client name: PING -a {ServerIP}&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp; b. If the above steps does not reveal any problem, verify that we can access&amp;nbsp; the logon server:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Open a command prompt on the client machine&lt;/li&gt;
&lt;li&gt;Type &quot;SET logonserver&quot; (without the quotes) and press Enter. &lt;/li&gt;
&lt;li&gt;On the server, open the command prompt and type &quot;dir \\[ValueReturned]\etlogon&quot; and press Enter. ValueReturned = the value from the SET statement above. The directory listing should not return an error. If it does, troubleshoot that error. &lt;/li&gt;
&lt;/ul&gt;
The last step gave an error for me,&amp;nbsp; it indicated that I could not logon to the logonserver at the client. The username and password was not correct. A little googling lead me to one common reason why this happens,&lt;u&gt; the time on each machine are not the same&lt;/u&gt;. Knowing that they are fresh images and that the&amp;nbsp;client time always synchronize with the server time, I hesitantly checked both machines and what did you know, the time and date are different. So I changed the time at the client to match the server. Restarted the machine and the system just ran smoothly as if nothing happened. &lt;br /&gt;
&lt;br /&gt;
Source : &lt;a href=&quot;http://www.microsoft.com/products/ee/transform.aspx?ProdName=Microsoft+SQL+Server&amp;amp;EvtSrc=MSSQLServer&amp;amp;EvtID=18452&quot; target=&quot;_blank&quot;&gt;Microsoft Help Page&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
﻿&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/03/login-failed-for-user-user-is-not.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCzBDyzKHf4KrAlhybXVOsZWWkKEhNq7SapU1FLwioSjpBQ9yezMFj2jzQWqnQt1zKRtZY1WmeZI_94ra7fJxIBHDaYY9jcXqdtqPwAOgBaAA8Wf1NBdPvcC00SZJGbo7I1g8R_Q/s72-c/imagesCAZ78VPI.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-210997844994486173</guid><pubDate>Sat, 23 Mar 2013 04:29:00 +0000</pubDate><atom:updated>2013-03-22T21:29:58.366-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Gmail</category><category domain="http://www.blogger.com/atom/ns#">Google</category><category domain="http://www.blogger.com/atom/ns#">How to</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><title>How to Manage Your GMAIL with Labels and Filters</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO1qVhJXzabSwn3OydR2DbPpJVRDioo0V70WXDDd1MZHXxGi7EgIOYgJtGYAeByJmMHjG84srdbbrqUV8cQpr8i0MA0kAWGUkC7uDXEq6SYBts8GmK8RyOde-8wiy3J5Sx5NdiIg/s1600/gmail.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO1qVhJXzabSwn3OydR2DbPpJVRDioo0V70WXDDd1MZHXxGi7EgIOYgJtGYAeByJmMHjG84srdbbrqUV8cQpr8i0MA0kAWGUkC7uDXEq6SYBts8GmK8RyOde-8wiy3J5Sx5NdiIg/s320/gmail.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We like receiving emails, but opening your inbox and finding a hundred of unread emails just listed in front of your eyes can be a sore sight . The emails we receive can be organized based on the sender , the topic, the&amp;nbsp;domain name where the email was sent and other flexible rules and criteria. I love playing with rules and filters in Microsoft outlook, unfortunately, i&amp;nbsp; don&#39;t use it for personal emails. Personal emails can be cumbersome to manage since all types of junk can just come right at you. Good thing GMAIL from Google supports the ease of management through filters and labels.&amp;nbsp; Labels are like tags or folders, they are used to group emails based on common categories. Filters&amp;nbsp; are rules that makes&amp;nbsp;label management automatic . How cool it is to have an inbox that automatically arrange your email as it comes, either by placing it to a special folder or just sending it directly to the trash. This blog entry will give you the basic idea on how to do just that in GMAIL.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;&lt;strong&gt;Creating Labels&lt;/strong&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;&lt;/u&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Let us start by creating labels. As mentioned above, label is a way to organize emails based on some categories.&amp;nbsp; My personal inbox, for example, has separate labels for emails about shopping deals, emails from the running community and other significant categories. Labels can be found on the left side of your GMAIL screen.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf88tWQfv8DYegr-pLcZV78-fkep2uIp3IsAWtkQILa5aczzxm2OwA91Zd-8Or8meq7XI32lyIcVHCz043Max3VAPFyfLFOE5RVo71D9jl7uIEwlZ_pIrVKSwgxDSkW0s2xKDHaA/s1600/labels.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjf88tWQfv8DYegr-pLcZV78-fkep2uIp3IsAWtkQILa5aczzxm2OwA91Zd-8Or8meq7XI32lyIcVHCz043Max3VAPFyfLFOE5RVo71D9jl7uIEwlZ_pIrVKSwgxDSkW0s2xKDHaA/s1600/labels.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To create a new label, open the mail settings window by clicking on the gear icon on the upper right of the mail interface and select &quot;Settings&quot; from the menu.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVRLQzLlGpSWidJICxG-vruT-gf3u_KWpHkCwmjt4FfSDoVKv7JeA92MYB7J2kGgsoDhyphenhyphenaWVmIpLu4lPS1e-JbUSaB674LTHk41-1VGnwVWmm01otFwVDtNNSASDBo11URxRmaXw/s1600/mailsettings.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;150&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVRLQzLlGpSWidJICxG-vruT-gf3u_KWpHkCwmjt4FfSDoVKv7JeA92MYB7J2kGgsoDhyphenhyphenaWVmIpLu4lPS1e-JbUSaB674LTHk41-1VGnwVWmm01otFwVDtNNSASDBo11URxRmaXw/s320/mailsettings.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will take you to the Mail Settings screen. Go to the Labels tab. This tab will display all the labels currently active and all the options that can be configured. Go ahead and click on the Create New Label button.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWrFUl2mxrwxWNGoFxp8x16cCAouB3yCpMM-RAy3yW4BLbCoqvhTfwj9bOMRUvCgYrhRiXqtfWzAkCFQz06gZ0EPVo9CfbNMwpjRT45Sit5gjRhz6DelAuDfjfTIuz0kMXjqPntw/s1600/createlabel.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWrFUl2mxrwxWNGoFxp8x16cCAouB3yCpMM-RAy3yW4BLbCoqvhTfwj9bOMRUvCgYrhRiXqtfWzAkCFQz06gZ0EPVo9CfbNMwpjRT45Sit5gjRhz6DelAuDfjfTIuz0kMXjqPntw/s320/createlabel.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Go ahead and fill in the label names, for this example we will just use the generic &quot;Test&quot; names. Just leave the &quot;Nest label under&quot; empty. Go ahead and create additional labels if you need them.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfH6Hn9GMn4IBl2JFCFmx05_6d8YID3WQlHnumHe18rTuUJ3qbqEaKkhNxUiSInYpZJJlsLGEK9978EZLIgDDf0zrQiD5LGqHsExC78PqQipiFBMk5dxZq-_tsToeR3BPKL2tj1A/s1600/createlabel111.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;144&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfH6Hn9GMn4IBl2JFCFmx05_6d8YID3WQlHnumHe18rTuUJ3qbqEaKkhNxUiSInYpZJJlsLGEK9978EZLIgDDf0zrQiD5LGqHsExC78PqQipiFBMk5dxZq-_tsToeR3BPKL2tj1A/s320/createlabel111.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;Your GMAIL screen should now be showing the new labels you created.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiwxoS5BzhASK3y4e94vGkorB0pzraJJOd_z5nU712up6xkT2shTL4KIGRaGTTWEKJSIzyevSXIUMBszMHNp_a2FU9F5f3xhtHs-kH6a3tEUB0jdy6R-2V8CLTiUkLilEigKsyxg/s1600/main1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiwxoS5BzhASK3y4e94vGkorB0pzraJJOd_z5nU712up6xkT2shTL4KIGRaGTTWEKJSIzyevSXIUMBszMHNp_a2FU9F5f3xhtHs-kH6a3tEUB0jdy6R-2V8CLTiUkLilEigKsyxg/s320/main1.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;&lt;strong&gt;Creating Filters&lt;/strong&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Filters are rules, email rules that you can create to manage incoming emails. You can create as many filters as you want. Filters can be of varied functions such as automatically marking a particular email as read, sending a particular email to a folder and bypassing the inbox, sending the particular email automatically to the trash folder or automatically forwarding a new email to another recipient. There are a lot of possibilities with filters.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To create a filter, open the Mail Settings screen ( see above for the steps ) and go to the Filters tab.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYaYIxjLNEpVVVYIruSlyXPSWKw-V3h1JFOwRzxfuXbHX9zCcxMKtakpenM9CxtCQjouSLmdi2EYPgeYAcIqWmJugEMTxWTGY8hDhl_LtzkmLTM4tl1hsL15dEq9hJxzBCDnbApg/s1600/filtermain.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYaYIxjLNEpVVVYIruSlyXPSWKw-V3h1JFOwRzxfuXbHX9zCcxMKtakpenM9CxtCQjouSLmdi2EYPgeYAcIqWmJugEMTxWTGY8hDhl_LtzkmLTM4tl1hsL15dEq9hJxzBCDnbApg/s320/filtermain.png&quot; width=&quot;420&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As you can see, I have a bunch of filters working for me right now. To add a new one, go ahead and select the &quot;Create a new filter&quot; link. This will open up a series of dialog box to configure the filter. As an example, assuming that we need to create a new filter that will automatically place an incoming email from &lt;a href=&quot;mailto:m3lles@gmail.com&quot;&gt;m3lles@gmail.com&lt;/a&gt; to label Test1 if it has a&amp;nbsp;subject of &quot;test1&quot;. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizTF4gsFxHKvVpSI5SHDtq8I8gyL-Qz0S7kUS-3TM7jmKmCXJFgKP5WTH3-dSgvagSWdMUAY396IKfuEUXINHemJPWfSz9P2OwuMN-gYSIFuyqgo63Eu7AcE1-X9DKEXW2VUQ8Bg/s1600/test1filter.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizTF4gsFxHKvVpSI5SHDtq8I8gyL-Qz0S7kUS-3TM7jmKmCXJFgKP5WTH3-dSgvagSWdMUAY396IKfuEUXINHemJPWfSz9P2OwuMN-gYSIFuyqgo63Eu7AcE1-X9DKEXW2VUQ8Bg/s320/test1filter.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1HH7yvpedFNzT-P3a7n06dEx7ZSVARsgG2PiOZAgI87b2vGYO73E74j9VLD3Oydf9ewrfflZlHyyzH0XA0vpPyeznlaBF-p6nDAqNUeQcJ7uLHc3rkxz_Tw-gJJXpkndV2R70FA/s1600/test1filter1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1HH7yvpedFNzT-P3a7n06dEx7ZSVARsgG2PiOZAgI87b2vGYO73E74j9VLD3Oydf9ewrfflZlHyyzH0XA0vpPyeznlaBF-p6nDAqNUeQcJ7uLHc3rkxz_Tw-gJJXpkndV2R70FA/s320/test1filter1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The example above created a filter that will forward any email coming from &lt;a href=&quot;mailto:m3lles@gmail.com&quot;&gt;m3lles@gmail.com&lt;/a&gt; with a subject of &quot;test1&quot; to the Test1 label.&amp;nbsp; I have also created another filter to forward any emails from &lt;a href=&quot;mailto:m3lles@gmail.com&quot;&gt;m3lles@gmail.com&lt;/a&gt; with subject of &quot;test2&quot; to the label Test2. &lt;br /&gt;
&lt;br /&gt;
Once a new email will arrive that meets the above mentioned criterias, GMAIL will automatically apply the filter and send the new emails to their designated folders. Cool! &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEn71dB02J-2NFUtsi0hXeReTuTEN_Jsujp-xMX9uOdnBOzyF8e3RvhoUcdH-3BrkSFU2o7sQkt-Gs02HvxuCn-RY0eTf4mPdIbq-XMNaOV3_U_CxN7NCMpg8IAq_h3nbyx_7Fkw/s1600/filterexample1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;89&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEn71dB02J-2NFUtsi0hXeReTuTEN_Jsujp-xMX9uOdnBOzyF8e3RvhoUcdH-3BrkSFU2o7sQkt-Gs02HvxuCn-RY0eTf4mPdIbq-XMNaOV3_U_CxN7NCMpg8IAq_h3nbyx_7Fkw/s320/filterexample1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;strong&gt;Organizing the Labels&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
Creating a label and filter is not the end of our goal to organize our inbox, we need to manage the labels and create a hierarchy when possible. &lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Configuring the Label Properties.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
To configure the labels, we need to open the label management screen by opening the Mail Setting screen and selecting the label tab.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBZxrUzbxEMD_I6477L4iqN8wRs7R5Pr9JgHKYU8456TuHuRdfTXoud5cpCPxDrxVy_IzrV1sDt_J9XazryxLWGjeTEbQJhjOFnMjrO9LWzUXbcZbj8OkBcwJksQYZ5pVxmsq0tg/s1600/managelabel7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBZxrUzbxEMD_I6477L4iqN8wRs7R5Pr9JgHKYU8456TuHuRdfTXoud5cpCPxDrxVy_IzrV1sDt_J9XazryxLWGjeTEbQJhjOFnMjrO9LWzUXbcZbj8OkBcwJksQYZ5pVxmsq0tg/s320/managelabel7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The &quot;Show in Label List&quot; column controls how the label will be displayed. By default it is &quot;SHOW&quot; , this means the label will be shown all the time on the screen. The second option &quot;HIDE&quot; will hide the label from the default view, you need to click on the &quot;MORE&quot; link to access it. The third option &quot;SHOW IF UNREAD&quot; is more dynamic, the label will only show on your list if it has received a new email.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The &quot;SHOW IN MESSAGE LIST&quot; option allows you to control the displaying of the label on the message list, by default it is set to &quot;SHOW&quot;. Below is an example showing a label that is displayed on the message list.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvqrzHZBap5CqJrrIUsntgfo-_Zy7f1OKqRmbyqIbNjwDvdZBs9Yo8CgxUOLa0jBbfBTIdQERxfkncuZ2974u_wHzGe5CdU9KwjGVHv0ZAMSW4zP8QmYtIjqwnsJB0dIiYpjO6MA/s1600/sample.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;40&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvqrzHZBap5CqJrrIUsntgfo-_Zy7f1OKqRmbyqIbNjwDvdZBs9Yo8CgxUOLa0jBbfBTIdQERxfkncuZ2974u_wHzGe5CdU9KwjGVHv0ZAMSW4zP8QmYtIjqwnsJB0dIiYpjO6MA/s320/sample.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Structuring you Label List.&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Structuring means organizing your label, this may include&amp;nbsp; placing several related labels under one common main label. This improves organization. Lets assume that we created 4 labels , TestMain, Test1, Test2 and Test3. To move Test1, Test2 and Test3 inside TestMain, we need to edit the label. This can be done easily by clicking the down arrow icon on the right most part of the label name. This will open the edit menu, go ahead and select the &quot;Edit&quot; option.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT6WE002cswPSswPnrQ5S-u7kwKtnd-EKspN4LlAfn0vaqxiWTFepJDyKTktSfSlRsqFfWCpjVcJti1xbELvcl6LZzj7KaoGvogOF_u1DHqiKTbiHwQSU-2KfgpDRv4Q6D0LL4yw/s1600/managelabel4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT6WE002cswPSswPnrQ5S-u7kwKtnd-EKspN4LlAfn0vaqxiWTFepJDyKTktSfSlRsqFfWCpjVcJti1xbELvcl6LZzj7KaoGvogOF_u1DHqiKTbiHwQSU-2KfgpDRv4Q6D0LL4yw/s320/managelabel4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
On the Edit Label screen, just select the main label ( TestMain ) from the list of parent labels. do this for the other labels you want to include in TestMain.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RSinYXF-wJYnfInvID_5pC5I-ViUOt_rHUhdpm03pp1e-zNQIyBEBLvZwiJ5DkNi7rmwE3tVid1a6OBZ-KhzGI3ijyxMA-BgfETWjA4uOqu_sH1RTLR1rd5_K_g3mnZq80tzqA/s1600/managelabel5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RSinYXF-wJYnfInvID_5pC5I-ViUOt_rHUhdpm03pp1e-zNQIyBEBLvZwiJ5DkNi7rmwE3tVid1a6OBZ-KhzGI3ijyxMA-BgfETWjA4uOqu_sH1RTLR1rd5_K_g3mnZq80tzqA/s320/managelabel5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After this, your labels are now much organized and easy to access.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwNOY1_-YKX0m1hFYs2de-rmogpBS1DGeO2GMuUStZoKEf30zXSynQHT05nVp2Tpph55qD1jTb6vJK5kMmf5XMR03UHBpM0_Nqfm9G7yJqUAu6MI5e85g2X32b2nJvfuH0DNumyQ/s1600/show.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwNOY1_-YKX0m1hFYs2de-rmogpBS1DGeO2GMuUStZoKEf30zXSynQHT05nVp2Tpph55qD1jTb6vJK5kMmf5XMR03UHBpM0_Nqfm9G7yJqUAu6MI5e85g2X32b2nJvfuH0DNumyQ/s1600/show.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
That concludes the simple tutorial on how to manage your inbox. Unfortunately, the images seems blur&amp;nbsp;at some point.&amp;nbsp;Feel free to comment.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/03/how-to-manage-your-gmail-with-labels.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO1qVhJXzabSwn3OydR2DbPpJVRDioo0V70WXDDd1MZHXxGi7EgIOYgJtGYAeByJmMHjG84srdbbrqUV8cQpr8i0MA0kAWGUkC7uDXEq6SYBts8GmK8RyOde-8wiy3J5Sx5NdiIg/s72-c/gmail.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-2759815049369310689</guid><pubDate>Thu, 21 Mar 2013 04:07:00 +0000</pubDate><atom:updated>2013-03-29T14:36:26.557-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Google</category><category domain="http://www.blogger.com/atom/ns#">Google Keep</category><category domain="http://www.blogger.com/atom/ns#">Software</category><category domain="http://www.blogger.com/atom/ns#">Tips and Tricks</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><title>Keeping Notes the Google Way : Google Keep</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd0FPsokINna2A_PEMiP8yh5p0qEpbbMhcRmcnXUaC0VkSHoCko18nwyorDPBuiMxsr5ZX5gDTSOtRUDqR-voAs_5CzURpWJabg27U3i7R7g1q9AX61ZofsxLZUti0bh0s8JeY_Q/s1600/Keep.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd0FPsokINna2A_PEMiP8yh5p0qEpbbMhcRmcnXUaC0VkSHoCko18nwyorDPBuiMxsr5ZX5gDTSOtRUDqR-voAs_5CzURpWJabg27U3i7R7g1q9AX61ZofsxLZUti0bh0s8JeY_Q/s1600/Keep.png&quot; width=&quot;570&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Finally, Google has released a note-taking&amp;nbsp;application which syncs through the cloud. This means your note is available across your Google powered devices as well as across the web through their web applications. This morning, &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.keep&quot; target=&quot;_blank&quot;&gt;Google Keep&lt;/a&gt; was released in the Android Play Store and made available to the web through &lt;a href=&quot;https://drive.google.com/keep/&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt;.&amp;nbsp; A few years ago, &lt;a href=&quot;http://en.wikipedia.org/wiki/Google_Notebook&quot; target=&quot;_blank&quot;&gt;Google Notebook&lt;/a&gt; was introduced, unfortunately like many of the Google apps that was discontinued, it had to go. I was waiting for a relaunch, then &lt;a href=&quot;http://evernote.com/&quot; target=&quot;_blank&quot;&gt;Evernote&lt;/a&gt; came and blew me away. Now that it has emerge as Google Keep, lets see if it can satisfy our simple requirements. This is a new app and we should expect improvements and features in a few more weeks. Until then, we can only decide if we go with Google Keep or keep Evernote :-) &lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;u&gt;The Interface&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
I have to commend Google for its simplistic approach on UI design. This one is intuitive and really simple to use. The minimalistic approach always is a win for for me.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMyRlNwmAicSpOAURjwyHb_xQ7bxDE8AlsrQqQeDVWcivfx6lLaY-evhS2zCnxXmtAyKLeFfH-rHXebRqtN9F3oO7afg2ohniEEhnqZm9pA4hWyl5vZtcgEGHApK45fzmu8XIMUw/s1600/UI.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMyRlNwmAicSpOAURjwyHb_xQ7bxDE8AlsrQqQeDVWcivfx6lLaY-evhS2zCnxXmtAyKLeFfH-rHXebRqtN9F3oO7afg2ohniEEhnqZm9pA4hWyl5vZtcgEGHApK45fzmu8XIMUw/s1600/UI.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
By just looking at the available options, you could easily add a text note, a list, a voice memo or a note with an image. further on top you can easily search or change settings. Shown below is the entry interface for each type of notes.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcAnK13xiCZqS7lzTmT3HRpKzycHLg-0cmdzywsu3LYlwKwd03YYYFOyGvyDGWMOmrRWwaq700F8m9Ddtw933CB6go2NCoMI6OX7Ar7UaQGnDT1UjHIz63jj1T6wkpAUmv6GDncA/s1600/Note.png&quot; width=&quot;221&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiWdC3bmoUY4YZ-4s4Q2JQYfzCfu5n_tnNDcTX2ajloKJIQOYUIoRW8jtgeJRJbD7VxCdZxFwYFzg2gEE2klbBDpJ4udOX2_MajRdhPgADet_yec2bm8Ho7thFN41LE22RiunNYg/s1600/Item.png&quot; width=&quot;221&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;
Adding a Note&lt;/center&gt;
&lt;/td&gt;
&lt;td&gt;&lt;center&gt;
Adding a List&lt;/center&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSHgtM0QEoYsKKVWaDdqn7dAxAiMhN2taYzQJne8MUXckwMDC5ljUjmWHqBOTK7uu7oqyWOZC8Y-RMF1-ld6PTWqkYywcKxRQ-W7czb7xrpxMMm1t7CcuP3T8gePTHjxts-ddzBg/s1600/voice+Memo.png&quot; width=&quot;217&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw6VU3xKLSWyyY2tNclKgbLy7YpV3TlzYi6JiEZf2nc320enULmx5ub-hSplUOExorHZEKGVx_9XRZhk4a2kFA8TxcI416VcBxwxoylyKN4lKtdBjsLZ9sotPlLEM-4emgeOj5xw/s1600/Photo.png&quot; width=&quot;223&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;
Adding a Voice Note&lt;/center&gt;
&lt;/td&gt;
&lt;td&gt;&lt;center&gt;
Adding a Photo&lt;/center&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
To make your notes more distinct, you can assign colors to each. The option is easily accessible on the menu strip just on top of the editor.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNr6BvA6on0rQi-wbUmDTVEzi0jfgin-XctKcJG6NEX_X7u2DvHFM7S6vaHfc4PUZPaohQ967h8-Scexyb_gru-JGYA4F8My_JullrUNl17oEWSfZeKJyCQru_WaArnwAsyH3Pcw/s1600/background.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNr6BvA6on0rQi-wbUmDTVEzi0jfgin-XctKcJG6NEX_X7u2DvHFM7S6vaHfc4PUZPaohQ967h8-Scexyb_gru-JGYA4F8My_JullrUNl17oEWSfZeKJyCQru_WaArnwAsyH3Pcw/s1600/background.png&quot; width=&quot;223&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;u&gt;The Layout&lt;/u&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The default&amp;nbsp;layout used to present the list of notes is almost similar to Google+,﻿ however, you can always change it in the settings. There are two layouts, the multi view and single view layout.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUfP5Dii4IuOuPAyDlnMgWE7Hs24AQJpHnPNVtCoJEmIHDEvfqhtCLFqKM_QX79y4L-x2c-wABKlbKgFdkGWV3S27ZvLhWcdLODENZOMvakUJrHknF9iaK4ZiRpVrWyxaa9IrvfQ/s1600/multiv.png&quot; width=&quot;218&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOta75HJQfv2vQgPSzb4F4o38j2NtTAWhWWPx25nd7_cunJZ7N7Rr9JXFoKAnVvPC3vYGd8YRwdMJ6Lcw5BbRLM24eAAlxDnirz9Z9HQ2MU4xJwKdQ4PcZvlD2ukpTklRAeWgxUw/s1600/singlev.png&quot; width=&quot;219&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;
Multi View&lt;/center&gt;
&lt;/td&gt;
&lt;td&gt;&lt;center&gt;
Single View&lt;/center&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;The Archives&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Yes, the application supports archiving. This enables you to hide some notes that you don&#39;t really need at the moment but might need it in the future. Thus, avoiding some cluttering.&amp;nbsp; The good news is that Google Keep implemented the &quot;swipe to&amp;nbsp; archive&quot; feature in GMAIL. User can simply swipe the note either to the left or right to add it to the archive.&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0HkUWpqMh1LlhLX-sJ68bNcnQDnjNJDLpCU3x91HypY8KDbAHmBNsgHRFsmqCrXrt_GRP_ZxM6DvkYzSWeP8AhW0mdZQ_rR7SbgPjyo15hPscWG20U8wWoehDiDkPdFwEfgmjqA/s1600/archive.png&quot; width=&quot;219&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjQafCLBDr3Rx3LOdnySix6_QuXWR4l4-J1guYMpCERoZ_B6G9zUQTsaldPCzu2AfGZjsX94xTHSJ6pnJoLMeEGUuUG8DGy39Z0l1NBYcseBVLXY_OIJXBCuKa1yY6KXXoK6v89w/s1600/archive1.png&quot; width=&quot;320&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;center&gt;
The archive view&lt;/center&gt;
&lt;/td&gt;
&lt;td&gt;&lt;center&gt;
Archive actions&lt;/center&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
&lt;u&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;Note Sharing&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Sharing your notes to your social network, email or any other supported application has never been this easy. The app , just like any android application, gives you the easiest way to share notes through the accessible share menu in the settings.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj87PZYYaSBdJdafcjsT_aN9RVJro_dwTGbVbfOTfzk_cPU3gyEYw9hKfc0O-Uar4-oRcw1wVuBs5p76KmCKKt6NRH0gwK-8UQ2kU2fmuHXNPhYOQwY4CKIkH3r9lP7KRgByAa8tg/s1600/share.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj87PZYYaSBdJdafcjsT_aN9RVJro_dwTGbVbfOTfzk_cPU3gyEYw9hKfc0O-Uar4-oRcw1wVuBs5p76KmCKKt6NRH0gwK-8UQ2kU2fmuHXNPhYOQwY4CKIkH3r9lP7KRgByAa8tg/s1600/share.png&quot; width=&quot;218&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div align=&quot;left&quot; class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Initial Thoughts.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The Google Keep is the simplistic approach to taking down notes.&amp;nbsp; With a lot of note taking apps available in the market, its main selling point is its easy integration to the google workflow. With this application, your data are all available under one large space which can be managed by the various apps Google has to offer.&amp;nbsp; Do take note that you need a google account to use this.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The application, however, is still on its initial phase. I would expect more improvements as it moves along. My &quot;must haves ﻿&quot; includes tag support, notebook style arrangement ( ala Evernote), google drive integration,&amp;nbsp;easy switching from google account to the other ( like GMAIL) &amp;nbsp;and&amp;nbsp;rich formatting options&amp;nbsp;on composing various notes.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
For now, Ill stick with Evernote for my long term note management. But I will definitely use Google Keep to replace&amp;nbsp;the memo application I use for taking down temporary scribble of thoughts.&lt;/div&gt;
</description><link>http://trashvin.blogspot.com/2013/03/keeping-notes-google-way-google-keep.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd0FPsokINna2A_PEMiP8yh5p0qEpbbMhcRmcnXUaC0VkSHoCko18nwyorDPBuiMxsr5ZX5gDTSOtRUDqR-voAs_5CzURpWJabg27U3i7R7g1q9AX61ZofsxLZUti0bh0s8JeY_Q/s72-c/Keep.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-4754494760791532145</guid><pubDate>Sun, 17 Mar 2013 01:34:00 +0000</pubDate><atom:updated>2013-03-16T18:34:26.631-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Events</category><category domain="http://www.blogger.com/atom/ns#">personal</category><title>Tomorrow is Saint Patrick Day</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-efhFmwXTuvEBR9p11NXCusDdHveDJ1LGNtevZFDafW4ZOgkMogsQGfzy1EKGgBSxDGKMdIQKTpE2fz5dKtx-CwiDyj7LgfhL7i8J8RAwM484pDbtCtELhEPN7e_KSwaGiPMxBQ/s1600/StPatrick.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-efhFmwXTuvEBR9p11NXCusDdHveDJ1LGNtevZFDafW4ZOgkMogsQGfzy1EKGgBSxDGKMdIQKTpE2fz5dKtx-CwiDyj7LgfhL7i8J8RAwM484pDbtCtELhEPN7e_KSwaGiPMxBQ/s200/StPatrick.jpg&quot; width=&quot;136&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tomorrow is Saint&amp;nbsp;Patrick&#39;s&amp;nbsp;Day. It is a cultural and&amp;nbsp;religious holiday celebrated every 17th of March. The celebration was named after Saint Patrick, the patron saint of Ireland. Having said that,&amp;nbsp;it is therefore a tradition associated with everything Irish : green and &amp;nbsp;shamrock.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Why on March 17th ? Most of the reading would point us into one logical reason, it is the day that St. Patrick died. &amp;nbsp;Why &amp;nbsp;Irish ? The tradition started in Ireland. The Irish people credit him to bringing&amp;nbsp;Christianity in the country. What about the shamrock ? Shamrock is the national flower of Ireland. The story states that St. Patrick used the flower to explain the concept of Holy Trinity to the pagans. Why green and gold? History says that in Ireland the Catholics are represented by green and Protestants are of orange, being a Catholic Saint green was used. The day is celebrated with a lot of green - green hats, green beers and green leprechauns.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Massachusetts, being a state with a significant population of Irish Americans,celebrates this day with large parades on several locations. The most famous is the parade being held in South Boston, listed as the second largest parade in the country. Aside from the parades, people celebrate the day with good old Irish music, Irish food, Irish beer and Irish whiskey!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Here are some links that may guide you on how Saint. Patrick Day is celebrated here:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.southbostonparade.org/&quot; target=&quot;_blank&quot;&gt;The South Boston Parade&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.wikihow.com/Celebrate-St.-Patrick&#39;s-Day&quot; target=&quot;_blank&quot;&gt;How to celebrate Saint Patricks Day ?&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.massvacation.com/irish.php&quot; target=&quot;_blank&quot;&gt;Saint Patricks Day Boston&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The video of the South Boston Saint Patrick Day celebration last 2012 . The &amp;nbsp;song is titled &lt;a href=&quot;http://en.wikipedia.org/wiki/I&#39;m_Shipping_Up_to_Boston&quot; target=&quot;_blank&quot;&gt;Shipping Up to Boston&lt;/a&gt;&amp;nbsp;performed by the american celtic band &lt;a href=&quot;http://www.dropkickmurphys.com/&quot; target=&quot;_blank&quot;&gt;Dropkick Murphys&lt;/a&gt; formed in Quincy, MA.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/r0JB9J-6ALc?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://trashvin.blogspot.com/2013/03/tomorrow-is-saint-patrick-day.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-efhFmwXTuvEBR9p11NXCusDdHveDJ1LGNtevZFDafW4ZOgkMogsQGfzy1EKGgBSxDGKMdIQKTpE2fz5dKtx-CwiDyj7LgfhL7i8J8RAwM484pDbtCtELhEPN7e_KSwaGiPMxBQ/s72-c/StPatrick.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13229558.post-6342718218007269590</guid><pubDate>Fri, 15 Mar 2013 04:40:00 +0000</pubDate><atom:updated>2013-04-08T12:35:22.657-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Google</category><category domain="http://www.blogger.com/atom/ns#">Software</category><title>Its Never Too Late For Some Good Old  Google Facts</title><description>&lt;div style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jp6KnhKxgV2E8etvSIpjAk__Pv8b8A0up_O5tg-yDQOPtGwAnMbqLRiFOFAZBnTpKu7KK_WMc5OG1gKtZZzb1MkWcyiqRsDhJRy4xmmZgxFQPu-J7O7bH20ncMndASbY13cn-g/s1600/google-sign-9.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;132&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jp6KnhKxgV2E8etvSIpjAk__Pv8b8A0up_O5tg-yDQOPtGwAnMbqLRiFOFAZBnTpKu7KK_WMc5OG1gKtZZzb1MkWcyiqRsDhJRy4xmmZgxFQPu-J7O7bH20ncMndASbY13cn-g/s200/google-sign-9.jpeg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jp6KnhKxgV2E8etvSIpjAk__Pv8b8A0up_O5tg-yDQOPtGwAnMbqLRiFOFAZBnTpKu7KK_WMc5OG1gKtZZzb1MkWcyiqRsDhJRy4xmmZgxFQPu-J7O7bH20ncMndASbY13cn-g/s1600/google-sign-9.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jp6KnhKxgV2E8etvSIpjAk__Pv8b8A0up_O5tg-yDQOPtGwAnMbqLRiFOFAZBnTpKu7KK_WMc5OG1gKtZZzb1MkWcyiqRsDhJRy4xmmZgxFQPu-J7O7bH20ncMndASbY13cn-g/s1600/google-sign-9.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;I must admit, I am a fanatic. My virtual day start with Google and ends with Google. So when I came accross some fun facts about it, I have to share it. So feast on the list taken from different sources (other sources may be unreliable) , I just got those that made me smile.&lt;/div&gt;
&lt;ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
The name &quot;Google&quot; was an accident. A spelling mistake by the original founders who thought they were going for &quot;Googol&quot;. Fellow graduate student Sean Anderson suggested Google creator &lt;a href=&quot;http://en.wikipedia.org/wiki/Larry_Page&quot; target=&quot;_blank&quot;&gt;Larry Page&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Sergey_Brin&quot; target=&quot;_blank&quot;&gt;Sergey Brin&lt;/a&gt; name their site &quot;Googolplex&quot;. Page suggested they shorten it to &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Googol&quot; target=&quot;_blank&quot;&gt;Googol&lt;/a&gt;&quot; , which refers to the number 1 followed by 100 zeroes. Anderson mstyped &quot;Googol&quot; as &quot;Google&quot;, which was an available name.&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
The first Google storeage was made from LEGO. See article &lt;a href=&quot;http://www.modernhoot.com/101/googles-first-server-was-made-of-lego/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;Google originated from the Stanford School of Engineering as an attempt to catalog and analyze the World Wide Web. It first ran at Stanford with the user name&amp;nbsp;&amp;nbsp;&quot;google.stanford.edu&quot;.&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Google&#39;s&amp;nbsp; homepage has been known for its simplicity. The simplicity and minimal design is one of the major reasons why Google became more popular than their competitors like &lt;a href=&quot;http://www.msn.com/&quot; target=&quot;_blank&quot;&gt;MSN&lt;/a&gt;, &lt;a href=&quot;http://www.yahoo.com/&quot; target=&quot;_blank&quot;&gt;Yahooo&lt;/a&gt; and &lt;a href=&quot;http://www.altavista.com/&quot; target=&quot;_blank&quot;&gt;AltaVista&lt;/a&gt;. The minimal design was actually created because of the limited knowledge that Google founders Page and Brin had of&lt;a href=&quot;http://en.wikipedia.org/wiki/HTML&quot; target=&quot;_blank&quot;&gt; HTML&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
According to Justin , writing for &lt;a href=&quot;http://minyanville.com/&quot;&gt;http://Minyanville.com&lt;/a&gt;, later in 1999, two graduate students at Stanford University, Sergey Brin andLarry Page, decided that Google, the search engine they had developed, was taking up time they should have been using to study. They went to Bell and offered it to him for $1 million, but Bell rejected the offer, and later threw Vinod Khosla, one of Excite&#39;s venture capitalists, out of his office after he had negotiated Brin and Page down to $750,000. Excite&#39;s refusal to buy what became a $180 billion company by 2010 was labeled by Rohrlich a&amp;nbsp; &quot;stupid business decision&quot;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Google.com is the most used domain to check if internet connection is working due to its fast loading time and minimal design.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Google&#39;s first ever twitter post was a satisfyingly geeky as you could hope for . The message was sent in February 2009, reads&amp;nbsp;“I’m 01100110 01100101 01100101 01101100 01101001 01101110 01100111 00100000 01101100 01110101 01100011 01101011 01111001 00001010.” which reads : &quot;I&#39;m feeling lucky.&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Most Google users never use the &quot;I&#39;m feeling lucky&quot; button. But trials of removing the button made people feel uncomfortable. People did not like seeing the button removed.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
While&amp;nbsp; all the companies want the users to stay longer on their site, Google search wants its user to stay on it for the minimal amount of time. That is their driving&amp;nbsp;force.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
Google&amp;nbsp; rents out goats. Yes you read that right. It rents goats from a company called &lt;a href=&quot;http://www.californiagrazing.com/&quot; target=&quot;_blank&quot;&gt;California Grazing&lt;/a&gt; to help cut down the amount of weeds and brush at Google HQ.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;
A Google employee is named a “Googler” while a new team member is called a &quot;Noogler&quot;.&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So there you go, something to share to other Google users.&amp;nbsp; To cap it off, I have embedded below the&amp;nbsp;first video that Google made to promote&amp;nbsp;application development&amp;nbsp;using the Android platform. Of course&amp;nbsp;we all&amp;nbsp;know what happened next :-)&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/1FJHYqE0RDg?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&amp;nbsp;
&lt;br /&gt;
﻿</description><link>http://trashvin.blogspot.com/2013/03/google-facts.html</link><author>noreply@blogger.com (MARVIN TRILLES)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7jp6KnhKxgV2E8etvSIpjAk__Pv8b8A0up_O5tg-yDQOPtGwAnMbqLRiFOFAZBnTpKu7KK_WMc5OG1gKtZZzb1MkWcyiqRsDhJRy4xmmZgxFQPu-J7O7bH20ncMndASbY13cn-g/s72-c/google-sign-9.jpeg" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>