Jekyll2020-12-29T21:50:33+00:00https://edpanameno.com/feed.xmlEd Panameno{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}Connecting to a SingalR Group2019-09-28T00:00:00+00:002019-09-28T00:00:00+00:00https://edpanameno.com/blog/connecting-to-signalr-group<p>At work I have been using <a href="https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-3.0" target="_blank">SingalR core</a> for a project that needs to have real time updates to records be shown without any user interaction (i.e. page refresh). But I want these changes to only be consumed by group of users. Reading thru the SignalR <a href="https://docs.microsoft.com/en-us/aspnet/core/signalr/groups?view=aspnetcore-3.0" target="_blank">documentation</a> it looks like you can use groups to do this. The documentation seemed straight forward, but when it came time to actually implement this, I was having a hard time understanding how to join a group.</p>
<p>It turns out that I didn’t read the documentation thoroughly enough. When you connect to a SignalR hub using the Javascript client, you are returned a <code class="language-plaintext highlighter-rouge">Promise</code> object. You can then use this <code class="language-plaintext highlighter-rouge">Promise</code> object to connet to the group. Below is the code that I used to successfully connect to the group:</p>
<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kd">var</span> <span class="nx">connection</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">signalR</span><span class="p">.</span><span class="nx">HubConnectionBuilder</span><span class="p">()</span>
<span class="p">.</span><span class="nx">withUrl</span><span class="p">(</span><span class="dl">"</span><span class="s2">../serviceline-messages</span><span class="dl">"</span><span class="p">)</span>
<span class="p">.</span><span class="nx">build</span><span class="p">();</span>
<span class="nx">connection</span><span class="p">.</span><span class="nx">start</span><span class="p">()</span>
<span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">connection</span><span class="p">.</span><span class="nx">invoke</span><span class="p">(</span><span class="dl">"</span><span class="s2">JoinGroup</span><span class="dl">"</span><span class="p">,</span> <span class="nx">serviceLineID</span><span class="p">)</span>
<span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="dl">"</span><span class="s2">JoinGroup Error: </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">error</span><span class="p">)</span>
<span class="p">});</span>
<span class="p">})</span>
<span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
<span class="p">});</span></code></pre></figure>
<p>So the key to this issue is to make sure that when going thru documentation that you understand what your reading. It’s easy to skim thru documentation and pretend that you know what is being discussed but when you try to implement something and you cannot, then this is a sign that you really didn’t understand the documentation/concepts that you just read. Instead of going forward and try to understand how to solve the problem step back and re-read the documentation (a few times if needed) to make sure you are really following what’s recommended.</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}At work I have been using SingalR core for a project that needs to have real time updates to records be shown without any user interaction (i.e. page refresh). But I want these changes to only be consumed by group of users. Reading thru the SignalR documentation it looks like you can use groups to do this. The documentation seemed straight forward, but when it came time to actually implement this, I was having a hard time understanding how to join a group.My First React App2019-06-06T00:00:00+00:002019-06-06T00:00:00+00:00https://edpanameno.com/blog/my-first-react-app<p>I have been playing around with React for a few months and wanted to create a simple application to put my skills and knowledge to use. I just
published the <a href="http://reddit-react-app.surge.sh">reddit-react-app</a> on <a href="https://surge.sh">surge</a> and was very happy with the results. I am a fan of
Reddit and thought I could use React to build a simple application to show the stories from my saved sub-reddits. The application uses Reddit’s
API to get the list of sub-reddits a user has subscribed to and display the latest stories for each sub-reddit when the user selects
one from the drop down list provided. In addition, I added a button at the bottom of the list of stories that allows the user to load up the next set of
stories! Below you will find a summary of the architecture and decisions I made while building the application.</p>
<h3 id="general-structure">General Structure</h3>
<p>The application is composed of just a few class/functional components. The state of the application is kept in one class-based component
called <code class="language-plaintext highlighter-rouge">AppContent</code>. Once the user has logged in to the application, I show the sub-reddits that he/she has subscribed to in a drop down list. Once the
user selects a sub-reddit, the stories from it are then shown. To help with navigation at the bottom of the page a button is available that will show
the user the next 100 stories. I am using the Reddit API to make calls to the appropriate <a href="https://oauth.reddit.com">end point</a> to show the stories. Each
story also has a link that can show the user the list of comments for each story. The comments show up in a modal built using the great semantic-ui for react
library.</p>
<p>I was originally thinking that the react components used during Reddit’s OAuth workflow should be class based components. There was a bit of hesitation on
my part to do this as I had read a lot of articles and tutorials that said that you should limit your class based components in react (or at least use them
sparingly). This put me in what I called <em>analysis paralysis</em> because I was trying to decide whether or not I should use functional based components instead
of classed based components. I did way too much reading on this subject and it was driving me nuts! Security is an important part of any application
that I build and I wanted to make sure I used the <em>correct</em> react feature to store Reddit’s OAuth access token securely. I always strive to make applications by using
what I call the ‘optional solution’ so that any future issues can be avoided as much as possible. After wrestling with what was the best type of
component to use, I decided to just bite the bullet and use class-based components. Although class-based components should be used as little as
possible in react, don’t worry about using them if it’s the best way to solve a problem in the most efficient way possible! It’s also something
I can easily change later on in the development of the application! Once I decided on using class based components, the development of this application
continued at a very good pace!</p>
<h3 id="http-requests">HTTP Requests</h3>
<p>The application uses <a href="https://github.com/axios/axios" target="_blank">Axios</a> for all http requests sent to Reddit’s API! Axios is a library that I used in another react project I was working on so it was the natural choice to use it for this project as well. I wanted to use something that I knew
would help me to build out the features I needed for this application quickly and Axios is the library that does the job I need! From my previous experience using this library, I was able
to setup common headers (such as the Authorization header) and URL’s to submit requests to Reddit’s OAuth endpoint. There are other
things that I’ll also need to build in Axios that deal with renewing expired access tokens but for now Axios is doing a great job with what I need to take care of
with this small application.</p>
<h3 id="user-interface">User Interface</h3>
<p>For the User Interface I wanted to build something that had a simple, clutter free and easy to navigate feeling to it! Whenever I create a web application
I tend to gravitate to use <a href="https://getbootstrap.com/" target="_blank">Bootstrap</a> as it’s something I am very familiar with having used it for other personal/work projects.
But for this project I decided to use <a href="https://react.semantic-ui.com/" target="_blank">Semantic UI (for reactjs)</a> as I found the look and feel of it to meet the needs of
this project. I also choose this UI framework to get some experience under my belt with different UI libraries other than Bootstrap! I have to say that the team behind this library has some really great documentation that allowed me to install and configure it very quickly for this application! I have also gotten exposed to some react concepts/patterns that will no
doubt become useful later on! I’ll definetely use this library for other projects as well!</p>
<h3 id="deployment">Deployment</h3>
<p>The application is currently deployed to <a href="https://surge.sh" target="_blank">surge.sh</a> as this was the easiest and fastest way to get the application to be hosted
on the internet. I found out about surge.sh when going thru the <a href="https://www.gatsbyjs.org/tutorial/" target="_blank">Gatsby Tutorial</a> page. I also looked at <a href="https://netifly.com" target="_blank">Netifly</a> but found that <a href="https://surge.sh" target="_blank">surge.sh</a> did the job I needed quite well for now! I also considered using <a href="https://pages.github.com/" target="_blank">Github Pages</a> but I really wanted to use and learn something else just to experience the different ways that applications can be deployed on the web. So far, I am very happy with surge.sh and I’ll continue to use it for other react (and non-react) projects! With my recent move to <a href="https://domains.google.com" target="_blank">Google Domains</a> I will look into creating a sub-domain for this app and point it the URL that is currentlying hosting it.</p>
<h3 id="next-steps">Next Steps</h3>
<p>Since I am having a lot of fun working on this small application, I’ll continue to add new features and fix bugs as they come along. The end result is <em>not</em> to build a reddit replacement
but more of me getting experience of actually building something with react on a platform that I use on a daily basis! That being said, below you find a list of things that I will need to update/revisit:</p>
<ul>
<li>Change the OAuth workflow so that a refresh token is retrieved and used to renew the access token.</li>
<li>Store user’s subscribed sub-reddits to the storage mechanism used (currently this is the session storage). When I refresh the application, a unnecessary trip to reddit’s OAuth
endpoint is done to get this data which is not very efficient if this list doesn’t really change that often.</li>
<li>Creating a sub-domain (ie. https://reddit.edpanameno.com ??) to point to the app that is hosted on surge.sh.</li>
</ul>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}I have been playing around with React for a few months and wanted to create a simple application to put my skills and knowledge to use. I just published the reddit-react-app on surge and was very happy with the results. I am a fan of Reddit and thought I could use React to build a simple application to show the stories from my saved sub-reddits. The application uses Reddit’s API to get the list of sub-reddits a user has subscribed to and display the latest stories for each sub-reddit when the user selects one from the drop down list provided. In addition, I added a button at the bottom of the list of stories that allows the user to load up the next set of stories! Below you will find a summary of the architecture and decisions I made while building the application.Github Unlimited Private Repositories2019-01-08T00:00:00+00:002019-01-08T00:00:00+00:00https://edpanameno.com/blog/github-unlimited-private-repositories<p>I was very happy with the <a href="https://blog.github.com/2019-01-07-new-year-new-github/" target="_blank">recent announcement</a> that Github would be allowing private repositories for their free accounts! As a result of this awesome news, all of my new personal projects will now be hosted on my <a href="https://github.com/edpanameno" target="_blank">Github Account</a>. All of my current projects were being hosted on my <a href="https://edpanameno.visualstudio.com" target="_blank">Azure Devops</a> account where they have lived for the past few <a href="/blog/migration-to-visual-studio-online">years</a> after having migrated them from a private instance of <a href="https://www.redmine.org/" target="_blank">Redmine</a>. For the most part, I was happy with the features on Azure Devops such as work items, wikis and other tools that the platform provides. Although having these features available was great, I never really used them. I always enjoyed the simplicity of Github’s features (i.e. issues, wikis, etc.) and always hoped that they would one day provide private repositories for free too!</p>
<p>Now that I do have the ability to host private repositories on Github, I am going to be going thru each of my projects I am hosting on Azure Devops and see if they are a good candidate to be migrated over to Github. My criteria whether to move a project is a simple one, if I am not going to be using few or any of the features Azure Devops provides then the project will be migrated to Github. With this criteria on hand, I was able to migrate 22 git repositories over to Github! I also took this oportunity to remove some really old projects that I am no longer working on. I still left a few projects on my Azure Devops account because some of them are work related and I need to keep track of issues/requests that my clients bring to my attention. There was one project that I could not migrate over because I use it’s Wiki component to document all of the things I have learned (or am currently learning). If and when Github provides Wiki’s for private repositories I’ll migrate this project as well!</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}I was very happy with the recent announcement that Github would be allowing private repositories for their free accounts! As a result of this awesome news, all of my new personal projects will now be hosted on my Github Account. All of my current projects were being hosted on my Azure Devops account where they have lived for the past few years after having migrated them from a private instance of Redmine. For the most part, I was happy with the features on Azure Devops such as work items, wikis and other tools that the platform provides. Although having these features available was great, I never really used them. I always enjoyed the simplicity of Github’s features (i.e. issues, wikis, etc.) and always hoped that they would one day provide private repositories for free too!My First Mac Machine2018-08-29T00:00:00+00:002018-08-29T00:00:00+00:00https://edpanameno.com/blog/my-first-mac-machine<p>I have been an avid/loyal <a href="https://microsoft.com/windows" target="_blank">Windows</a> user ever since I started working with computers back in high school. Windows was the first operating system I started playing with and it’s one reason I feel in love with computers! In college I continued to use Windows as my primary operating system but also used <a href="https://ubuntu.com" target="_blank">Linux</a> and really enjoyed learning how to use it for my day to day needs in school (i.e. setting up Eclipse and the Java SDK for projects)! With my recent work with <a href="https://reactjs.org" target="_blank">React</a>, <a href="https://angular.io" target="_blank">Angular 2+</a>, <a href="https://vue.org" target="_blank">Vue</a> and <a href="https://nodejs.org" target="_blank">Node.js</a> I began feeling that I would have a better experience working with these libraries/frameworks in a native bash/unix environment.</p>
<p>Microsoft’s <a href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank">Windows Subsystem for Linux (a.k.a WSL)</a> was something I had hoped would fit my needs to work in such an environment. Although WSL has gotten much better since it was first released, I still had some issues with it that I never had when using a command prompt in Linux (i.e. corruption of git repositories from VSTS (now known as Azure DevOps), errors with jekyll, performance issues, etc.). I began thinking of switching to a native bash/unix environment. I noticed that a lot of the tutorials and screen casts I would watch on <a href="https://youtube.com" target="_blank">YouTube</a> and <a href="https://udemy.com" target="_blank">Udemy</a> were all done in a Mac desktop/laptop. It turns out that I recently had a chance to purchase a new <a href="https://www.apple.com/macbook-air/" target="_blank">Mac Air Pro Laptop</a> for a really good price and took the plunge into the Mac world!</p>
<h3 id="things-i-love">Things I love</h3>
<p>After playing around with the laptop for the last few days I am really enjoying not just using it for my every day use, but also learning how to make it fit my needs! The first thing that stood out for me was the UI, it just looks and feels so much nicer when compared to Windows 10! The apps I use on daily basis in Windows (i.e. Chrome, VS Code, MS Word, etc.) really do just look (and feel) nicer in my mac laptop. <a href="https://code.visualstudio.com/" target="_blank">VS Code</a> feels faster when navigating around it, and when I type in <code class="language-plaintext highlighter-rouge">npm start</code> in it’s integrated terminal, the built in server loads up the app so much faster when compared with Windows 10! But it’s not just fast start up times of my <a href="https://github.com/edpanameno/reddit-react-app" target="_blank">ReactJS</a> projects that I am impressed with, I am also enjoying the following things:</p>
<ul>
<li>Track Pad Gesture - I am really liking the fact that you can use different combinations of finger swiping to do really cool things. <a href="https://www.youtube.com/watch?reload=9&v=OPpZVZNzeyc" target="_blank">Check out this video for more</a></li>
<li>Long Battery Life - Really impressed how long the battery has lasted on the machine. I am so used to having my laptop charger by my side when using my windows laptop but with my mac laptop I just don’t think about charging it as much!!</li>
<li>Unix OS - I love that the underlying OS is Unix! It has been a pleasure opening up a native terminal and start typing familiar bash commands knowing that they’ll be executed fast and without any issues!</li>
<li>Homebrew - I used <a href="https://help.ubuntu.com/lts/serverguide/apt.html.en" target="_blank">apt</a> in my Ubuntu laptop during college to install the software I needed to do my projects which made things so convenient and easy to setup! Having a package manager to install software on your machine is great! I have heard good things about <a href="https://brew.sh/" target="_blank">Homebrew</a> and it did not disappoint when I had to install some utilities to get my terminal just right (i.e. tree, macvim, jekyll, etc.)</li>
<li>Security - Even though I know that viruses exist for Macs, it feels good not to worry too much about a virus getting into your system for no good reason (at least this is how I feel with Windows). I still practice good habits when it comes to not doing something that may cause your system to be compromised!</li>
<li>Jekyll - This site is hosted on Github and built with the static site generator <a href="https://jekyllrb.com/" target="_blank">Jekyll</a>. After installing Jekyll using a simple command in Homebrew, it’s really nice just having to type in <code class="language-plaintext highlighter-rouge">jekyll serve</code> and work on this site! In addition, I have started to use VS Code to write/edit articles on this site and it’s so much easier and a much better experience in MacOS!</li>
</ul>
<h3 id="things-i-am-trying-to-figure-out">Things I am trying to figure out</h3>
<p>Although I am loving my experience so far with MacOS, there are some things I am still tyring to figure/getting used to.</p>
<ul>
<li>Keyboard - I love my Lenovo Laptop keyboard layout and feel. It’ll be a challenge geting used to the keyboard on the mac but so far I must say it’s really easy to the fingers and with just a bit more time I’ll be able to get more and more comfortable with this keyboard.</li>
<li>Switching Windows - I am an avid user of <code class="language-plaintext highlighter-rouge">alt-tab</code> and this keyboard combination is not working as I am used to. This will also take some time for me to get used to I think as well as me doing more research on how to use this feature on a Mac.</li>
<li>Terminal - I am pretty happy with the built in terminal app, but I have been hearing great things about <a href="https://www.iterm2.com/" target="_blank">iTerm2</a> and will look into using this as my primary terminal emulator!</li>
</ul>
<h3 id="future-plans">Future plans</h3>
<p>I am planing to use this laptop to develop React Native apps that can be deployed to both the Apple App Store and Google Play! I may even look at building native apps in swift just using XCode to add this knowledge to my skill set! In addition, I am going to start looking at using <a href="https://visualstudio.microsoft.com/vs/mac/" target="_blank">Visual Studio for Mac</a> and also start playing around with <a href="https://docs.microsoft.com/en-us/dotnet/core/" target="_blank">.NET Core</a> on this machine.</p>
<h3 id="final-thoughts">Final Thoughts</h3>
<p>So far my experience with the Mac laptop has been great! I’ll still continue to use my Windows desktop/laptop (at home and work) to do my development work. If all goes well, I’ll be moving the other type of development I do (i.e. javascript, nodejs, etc.) to this machine. Windows has been a great environment for the past 15+ years and it’ll remain my primary OS for work but moving away from Windows for my personal work/projects I think is good for me to continue to grow and get better as a developer.</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}I have been an avid/loyal Windows user ever since I started working with computers back in high school. Windows was the first operating system I started playing with and it’s one reason I feel in love with computers! In college I continued to use Windows as my primary operating system but also used Linux and really enjoyed learning how to use it for my day to day needs in school (i.e. setting up Eclipse and the Java SDK for projects)! With my recent work with React, Angular 2+, Vue and Node.js I began feeling that I would have a better experience working with these libraries/frameworks in a native bash/unix environment.Learning JavaScript Frameworks2018-03-27T00:00:00+00:002018-03-27T00:00:00+00:00https://edpanameno.com/blog/learning-javascript-frameworks<p>For the past couple of months, I have been playing around with 3 different Javascript frameworks to see what all the hype is all about! Most of the stuff I develop is written in <a href="https://www.asp.net" target="_blank">ASP.Net</a> MVC/C#/MS-SQL as this is the stack technology that I am most familiar and comfortable with. So I decided to get out of my comfort zone and explore some of these Javascript frameworks that I have been reading about lately. The 3 frameworks I decided to learn were Vue.js, Angular (2+) and React. Below are some of my notes and observations on each of these frameworks.</p>
<h3 id="vue">Vue</h3>
<p>This was the first framework I tired out after reading a few articles about it on reddit. A lot of the talk around VueJS revolves around how easy it is to learn and also how fast it is when compared to other javascript frameworks. Per the advice of a lot of the people online, I went ahead and visited their <a href="https://vuejs.org/" target="_blank">web site</a> and worked thru their <a href="https://vuejs.org/v2/guide/" target="_blank">guide</a>. For the most part I found VueJS to be very easy to follow and thus easy to learn. The content on VueJS’s site is very well written and very informative.</p>
<p>After going thru a good portion of their guide I felt I needed a full fledged tutorial that I could follow along to so that I could really sink my teeth into learning VueJS. Thru the recommendation of the <a href="https://www.reddit.com/r/vuejs/" target="_blank">Reddit VueJS community</a>, I came across a course on Udemy by Max Schwarzmuller called <a href="https://www.udemy.com/vuejs-2-the-complete-guide/">VueJS 2 - The Complete Guide (including VueJS Router & Vuex)</a> and immediately paid the $10.00 special offer for the course! For anyone that really wants to learn VueJS, this is the course that I would highly recommend! Max’s style of teaching is great and as long as you follow along with his examples/projects you’ll truly get your money’s worth out of this course!</p>
<p>My overall impression of VueJS was a positive one. However, there were a few things that I felt were lacking from the library. With VueJS, just like <a href="https://reactjs.org/" target="_blank">ReactJS</a> you only get the ‘V’ in the MVC pattern. You still have bring in other libraries for routing, state management, http calls and user interfaces. VueJS does provide you with a really nice cli tool (just like angular and react) called <a href="https://github.com/vuejs/vue-cli" target="_blank">vue-cli</a> which makes working with VueJS much more pleasant. In the end, I was hoping for a more complete framework as it was a bit overwhelming to learn other libraries that can integrate with VueJS to build a basic appplication.</p>
<h3 id="angular-2">Angular (2+)</h3>
<p>The next Javascript framework I picked up was <a href="https://angular.io/" target="_blank">Angular (2+)</a>. Like VueJS, I started learning this framework by following their <a href="https://angular.io/tutorial" target="_blank">tutorial</a> on their site! Unlike VueJS (or ReactJS), Angular is a complete Javascript framework that not only provides you with the ability to build your own user interface components, but also gives you routing, 2-way data binding, dependency injection and the ability to submit http requests! Angular uses <a href="https://www.typescriptlang.org/" target="_blank">TypeScript</a> as the language that you use to build applications with. Luckily, Angular only uses some basic features of TypeScript that didn’t really overwhelm me and made the learning of Angular much easier (I did have some basic TypeScript knowledge before when I played around with TypeScript when it first came out a few years ago). Anyone that has used <a href="https://docs.microsoft.com/en-us/dotnet/csharp/" target="_blank">C#</a> in the past will feel very comfortable with typescript and should be able to pick up just enough typescript to build angular applications!</p>
<p>Learning Angular was tough for me because there were so many things that you had to keep in the back of your mind when builing applications in this framework. One of the things that really tripped me up were the concepts of <a href="https://angular.io/guide/ngmodules" target="_blank">modules</a>. In reality, this should not have given me any problems (modules are similar to namespaces in c#) as modules allow you to organize your angular code in a more effective manner. But for some reason it was really hard for me to ingest how these concepts applied to Angular while going thru their tutorial. As a result, I decided to find a video course in Angular that I could follow along with. Thru the use of my recent VS Subscription from work, I was able to find a great video on <a href="https://www.pluralsight.com/" target="_blank">plurasight</a> that really helped me solidify my knowledge of this framework. For anyone interested, the course I took is called <a href="https://app.pluralsight.com/library/courses/angular-2-getting-started-update/table-of-contents" target="_blank">Angular: Getting Started</a> by Debora Kurata. The course was easy to follow along to and Deborah is a great at explaining the core features of Angular! At the end of the course, I felt comfortable that I could start using Angular to port one of my ASP.NET MVC applications to Angular and I was able to re-create most of the functionality I had implemented in ASP.NET MVC fairly quickly!</p>
<p>In my opinion, one of Angular’s biggest strength is providing the developer with all the bells and whistles that he/she will need to build a enterprise ready application (UI framework excluded) but this too is part of one of it’s weakness as it can be intimidating to learn how all of these different features work. For example, having to learn <a href="http://reactivex.io/rxjs/" target="_blank">RxJs</a> (which was a great thing to be exposed to) made grasping some concepts in Angular unnecessarily more difficult. As a result of this, I felt like I needed to see at least one more framework, ReactJs.</p>
<h3 id="react">React</h3>
<p>The last Javascript framework I played around with was <a href="https://reactjs.org" target="_blank">ReactJs</a>. This is currently the <em>hot</em> framework I am always seeing articles on the <a href="https://reddit.com/r/programming" target="_blank">Reddit Programing</a> community. Like VueJs, ReactJs is only a library (not a framework) that helps you to write just the ‘V’ in MVC. This was not my first time using ReactJs as I had attempted to learn it a few years ago to see if I could use it in some of the web applications I was building at the time (I ended up using jQuery to add the type of interactivity I needed). At that time, I felt that ReactJS was too much of an overkill to use for my needs. I got excited about ReactJS when I read an article on <a href="https://dev.to/aberezkin/react-the-key-points--4h83" target="_blank">dev.to</a> and started looking for tutorials/video courses to revisit this library once more!</p>
<p>One thing I did differently (when compared to the other two Javascript frameworks referenced above) to learn ReactJs was to first find a video course online that I could follow along to. Because of my previous experience with ReactJs I didn’t want to go thru a video course that was long. Luckily I was able to find a Plurasight course that met my needs of learning the basics of ReactJS and do it in under 2 hours! The course I found is called <a href="https://app.pluralsight.com/library/courses/react-js-getting-started/table-of-contents" target="_blank">React.js Getting Started</a> by Samer Buna. The whole course was only 1 hour and 43 minutes long and Samer’s teaching style was great! I followed along with his examples and felt really excited about this library. React’s API is very simple and once you understand the basics of Components (both functional and class-based) along with state management and component life cycles you can pretty much get started building simple yet pretty powerful web applications!</p>
<p>After finishing up Samer’s course, I decided to do something different to continue my journey learning ReactJS. Instead of going to <a href="https://reactjs.org" target="_blank">React’s web site</a> to follow their tutorial I decided to look around and see if I could find a book that I could use to learn more about it. Samer’s course was short, and I just felt like I needed to spend a bit more time and effort to really get ReactJs. In the past, I would have gone to my local book store and bought a book on ReactJS, but since bookstores are pretty rare these days (at least around my area) I searched high and low and came to a book by <a href="https://www.robinwieruch.de/" target="_blank">Robin Wieruch</a> called the Road to Learn ReactJS that I settled on. First of all, the price of being free was great! The book is only 157 pages, but is filled with great tips on what you need to know to use ReactJs (i.e. ES6) and how to think about when working with ReactJs (i.e. think immutability). Robin uses his experience of learning ReactJS to provide his readers with lots of great information. The book is for people learning ReactJs for the first time, so he only gives you the information that he thinks you’ll need when first starting out with ReactJs (i.e. no Redux!!). After reading the book, I was able to build a simple <a href="https://news.ycombinator.com/" target="_blank">HackerNews</a> clone pretty quickly. The experience I got from working on this application and the knowledge I gained by reading his book allowed me to also pick up and learn <a href="https://github.com/ReactTraining/react-router" target="_blank">React Router</a> and <a href="https://reactstrap.github.io/" target="_blank">react-strap</a> to build my small HackerNews-clone!</p>
<p>I gotta say that React’s simple API has made learning and using this library not only fun to use but I am also considering using it to build other personal and work applications. I really do like that you use plain old javascirpt (with some ES6 thrown into the mix) to build the logic/functionality in ReactJs! It’s made using javascript fun again! Even though you have to learn how to use other libraries (i.e. Redux, React Router, etc.) and integrate them into your own ReactJs apps, so far it has not been a big issue for me and this was something I did not expect at all from ReactJs!</p>
<h3 id="honorable-mention-knockout">Honorable Mention: Knockout</h3>
<p>There is one more framework I’d like to mention called <a href="http://knockoutjs.com/" target="_blank">Knockout.js</a>. This is also a library that like Vue and ReactJs allow you to add interactivity to your web applications. Knockout uses the MVVM Pattern where you have your Models (i.e. entities your application is concerned with), you then have your View Models (VMs) that are a mix of html and knockout declarations that can make your application much more interactive. I actually used knockout to add some interactivity to an internal web application for work and I was very happy with the results. Knockout has been around for a few years, and it’s not really in the news a lot (at least I don’t see it being mentioned in my feeds that much) but it’s a pretty stable library. The experience learning it and applying my knowledge to an actual project made learning the other 3 javascript frameworks much easier and for that I will be forever thankful to knockout!</p>
<h3 id="final-thoughts">Final Thoughts</h3>
<p>Overall, I am very happy with the things I have learned in the past few months. Life has been a bit busy lately with our growing baby son, maintenance on our house and projects at work so I haven’t really put in as much time as I would like on these frameworks. But the time and effort I did in to learn/use these frameworks will hopefully payoff in the near future. My goal for now is to continue to play around with ReactJs and try to build an application that uses a web api I created to access active directory and see how much functionality I can add to it! Whatever I build, and whatever lays ahead in the not so far future I am looking forward to using my knowledge and skills to build awesome web applications! Thanks for reading!</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}For the past couple of months, I have been playing around with 3 different Javascript frameworks to see what all the hype is all about! Most of the stuff I develop is written in ASP.Net MVC/C#/MS-SQL as this is the stack technology that I am most familiar and comfortable with. So I decided to get out of my comfort zone and explore some of these Javascript frameworks that I have been reading about lately. The 3 frameworks I decided to learn were Vue.js, Angular (2+) and React. Below are some of my notes and observations on each of these frameworks.Installing Jekyll on WSL2017-04-26T00:00:00+00:002017-04-26T00:00:00+00:00https://edpanameno.com/blog/installing-jekyll-on-wsl<p>I recently upgraded my main desktop to machine to Windows 10 Creators Update so that I can update this site using Jekyll. I had previously upgraded my laptop to the Creators update but found that installing the latest version of Jekyll was not so easy. I found a script at the following <a href="https://github.com/patrick330602/Jekyll-Installer-For-WSL" target="_blank">site</a> that was just so much easier to use and install Jekyll without any issues! If you run the following command in bash, you will get Jekyll installed without having to hunt down and install all the required dependencies:</p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">bash <<span class="o">(</span>wget <span class="nt">-qO-</span> https://raw.githubusercontent.com/patrick330602/Jekyll-Installer-For-WSL/master/jekyll.sh<span class="o">)</span></code></pre></figure>
<p>And with that simple little command, Jekyll was installed in just a few minutes!</p>
<p><em>Note: As of 08/09/2018, if you are using Windows 10 Version 1803 the command above is no longer needed as all the issues that the script above addresses have now been solved! The following command will install Jekyll on the workstation without any issues:</em></p>
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nb">sudo </span>apt-get <span class="nb">install </span>jekyll</code></pre></figure>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}I recently upgraded my main desktop to machine to Windows 10 Creators Update so that I can update this site using Jekyll. I had previously upgraded my laptop to the Creators update but found that installing the latest version of Jekyll was not so easy. I found a script at the following site that was just so much easier to use and install Jekyll without any issues! If you run the following command in bash, you will get Jekyll installed without having to hunt down and install all the required dependencies:Updated Website UI2017-04-25T00:00:00+00:002017-04-25T00:00:00+00:00https://edpanameno.com/blog/updated-website-ui<p>It has been a long time since I have posted anything on this site as life has been busy lately (work, getting married, buying a house and the birth of our son). One thing that has been on my mind is to update the look of this web site. Ever since I moved this web site from wordpress to <a href="https://jekyllrb.com" target="_blank">Jekyll</a> I have been using the <a href="https://github.com/jekyll/minima" target="_blank">minima theme</a> for this site as it is the default theme for new jekyll sites. I was (for the most part) happy with how the site looked but felt that there was just too much white space which made the site feel too bland! I needed to add a little bit more color to it, and thus began my search for a jekyll theme that met picky my needs!</p>
<p>Searching the internet for jekyll themes was harder then I had anticipated as there were many themes to choose from. There were a ton of themes to choose from and since I had some free time on my hands, I decided to go thru the ones that I liked! Below you will find links to a few of the themes that caught my attention:</p>
<ul>
<li><a href="http://dbtek.github.io/dbyll" target="_blank">Dbyll</a> - I really liked the side bar on this site. But felt that the UI components that were part of this theme were just a bit too much for my taste.</li>
<li><a href="https://github.com/mmistakes/minimal-mistakes" target="_blank">Minimal Mistakes</a> - Very good looking theme, but the dependencies really turned me off to this theme (I also wanted some color to my site that this theme could not give me without me making changes to it).</li>
<li><a href="https://startbootstrap.com/template-overviews/clean-blog/" target="_blank">Clean Blog</a> - This bootstrap based theme was nice, I really liked the background images at the top of each post.</li>
<li><a href="https://github.com/rosario/kasper" target="_blank">Kasper</a> - The author of this theme has duplicated the default ghost theme (<a href="https://ghost.org" target="_blank">ghost</a> being a publishing platform). I really liked the theme, but in the end it just felt a bit too bland for me.</li>
</ul>
<p>After searching for a few days I found the <a href="https://github.com/redVi/voyager" target="_blank">Voyager Jekyll Theme</a> which met my needs of having a simple, yet beautiful looking web site. One of the things I really loved about this theme is how easy it was to plug it into my site. All I had to do was just make some minor changes to the layouts and renamed some folders and I was done! There are still some other minor changes I have to make to the site to get it just the way I like it, but I think that for the foreseeable future this will be the theme I’ll use for this site!</p>
<p>One other cool thing that happened when I was migrating this site to this new theme was me learning more about the <a href="https://jekyllrb.com/docs/templates/" target="_blank">Liquid Templating Engine</a>. I now feel more comfortable updating this site to make it fit my needs!</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}It has been a long time since I have posted anything on this site as life has been busy lately (work, getting married, buying a house and the birth of our son). One thing that has been on my mind is to update the look of this web site. Ever since I moved this web site from wordpress to Jekyll I have been using the minima theme for this site as it is the default theme for new jekyll sites. I was (for the most part) happy with how the site looked but felt that there was just too much white space which made the site feel too bland! I needed to add a little bit more color to it, and thus began my search for a jekyll theme that met picky my needs!Revisiting and Old Project2015-07-27T00:00:00+00:002015-07-27T00:00:00+00:00https://edpanameno.com/blog/revisiting-an-old-project<p>It is always fun going back to an old project and add new features to it! At work, I recently got a request to add some reporting functionality to one of the sections an the application I built about a year ago. I had a blast going thru the code (in this case this is a 3-year old asp.net web site I built for an internal department at work) and quickly re-familiarized myself with how the application works and how it is structured. When I built this application, I used what would be described as a MVC like pattern to separate each layer of the application. My business objects (the models) talk to the database access layer (DAL) objects to interact with the database. The code behind files (the controllers) then fetch the appropriate data from the database which is then passed on to the views (aspx pages) then use these business objects to show and edit data to the users!</p>
<p>I was able to build the reporting feature pretty quickly (although at the time of this post I am still adding some finishing touches). Knowing what the customer wants and knowing how to best implement it allowed me to quickly build the different pages/sections in just under and hour or so. I also find it gratifying that even though I no longer use asp.net as my programming platform (I now use asp.net mvc for all new projects that I work on) I can still dig around and build/update something pretty quickly. Though I must admit that I had a bit of a challenge remembering the asp.net page life cycle … something I do not miss at all with asp.net mvc :)</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}It is always fun going back to an old project and add new features to it! At work, I recently got a request to add some reporting functionality to one of the sections an the application I built about a year ago. I had a blast going thru the code (in this case this is a 3-year old asp.net web site I built for an internal department at work) and quickly re-familiarized myself with how the application works and how it is structured. When I built this application, I used what would be described as a MVC like pattern to separate each layer of the application. My business objects (the models) talk to the database access layer (DAL) objects to interact with the database. The code behind files (the controllers) then fetch the appropriate data from the database which is then passed on to the views (aspx pages) then use these business objects to show and edit data to the users!New Website Workflow2015-07-16T00:00:00+00:002015-07-16T00:00:00+00:00https://edpanameno.com/blog/new-web-site-workflow<p>I recently migrated this web site from wordpress to jekyll (hosted on github). Although I was happy with hosting this site on wordpress, it just felt like overkill for my needs. <a href="http://jekyllrb.com" target="_blank">Jekyll</a> was able to meet the basic needs of this site (i.e. easy to write posts and a fast site). I have migrated all of my old blog posts to this new site and am loving how easy and fun it is to add content to this site.</p>
<p>My workflow for adding posts (or editing existing ones) is simple. I have setup jekyll on my computers at home and launch a console session and fireup my favorite editor (vim) and start writing away! Below you will find the workflow I use:</p>
<ul>
<li>Start a command line console</li>
<li>Browse to the location of this web site</li>
<li>Enter the following command: <code class="language-plaintext highlighter-rouge">jekyll serve --watch</code></li>
<li>On my web browser, go to: <code class="language-plaintext highlighter-rouge">http://localhost:4000</code> to view the site and changes being made</li>
<li>Open up vim and start editing/creating content</li>
<li>Go to my browser and refresh to view content</li>
<li>Go back to vim and continue editing until satisfied!</li>
<li>Once I am happy with the content, I save my changes and type: <code class="language-plaintext highlighter-rouge">git push</code> to push my updates to this site!</li>
<li>Repeat as needed! :)</li>
</ul>
<p>It’s a very calming feeling working on content from a simple command prompt and not feel overwhelmed with all the formatting options available to you on the online editor (such as wordpress). I just want to focus on the content and start writing away! Using markdown to format your content just feels much more natural to me (after spending most of my time writing code). And using my favorite editor (vim) to write up content is just the icing on the cake!</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}I recently migrated this web site from wordpress to jekyll (hosted on github). Although I was happy with hosting this site on wordpress, it just felt like overkill for my needs. Jekyll was able to meet the basic needs of this site (i.e. easy to write posts and a fast site). I have migrated all of my old blog posts to this new site and am loving how easy and fun it is to add content to this site.Migration to Visual Studio Online2015-05-16T00:00:00+00:002015-05-16T00:00:00+00:00https://edpanameno.com/blog/migration-to-visual-studio-online<p>A few years ago when I first setup my web site with <a href="http://dreamhost.com" target="_blank">dreamhost</a> I also setup private git repositories and an instance of <a href="http://redmine.org" target="_blank">redmine</a> to manage my private projects. Although this worked well most of the time, I was not happy with the performance on my shared account with dreamhost. In addition, I used to get too many random error messages that would cause the site to go down (the cause on a few of these issues occurred when ruby was updated without any notice on the dreamhost server hosting my site). As I started to look around for alternative ways to manage my private projects, <a href="http://visualstudio.com" target="_blank">Visual Studio Online (VSO)</a> came to my attenion!</p>
<p>I started to play around with VSO and found that it fit my needs regarding speed, keeping track of work items (i.e. tickets), awsome integration with Visual Studio, support for markdown documentation and keeping the projects private! Once I read about the unlimited private (and free) git repositories I was sold! Unfortunately, I was not able to find any way to migrate my redmine tickets to VSO so I had to resort to re-creating the tickets which ultimately was not a bad thing as I was able to close down some old tickets. I am still learning how to use some of the features provided with VSO and although this is coming along slowly, I am really enjoying my experience with using this new hosting service from Microsoft! :)</p>{"name"=>nil, "avatar"=>"/assets/images/me.jpg", "bio"=>"Husband, father, son and brother. Software developer building solutions in .NET, C#, ASP.NET MVC, Sharepoint, React and other web frameworks!", "location"=>"Los Angeles, CA", "email"=>nil, "links"=>[{"label"=>"Email", "icon"=>"fas fa-fw fa-envelope-square"}, {"label"=>"Website", "icon"=>"fas fa-fw fa-link", "url"=>"https://edpanameno.com"}, {"label"=>"LinkedIn", "icon"=>"fab fa-linkedin-in", "url"=>"https://linkedin.com/in/edpanameno"}, {"label"=>"Twitter", "icon"=>"fab fa-fw fa-twitter-square", "url"=>"https://twitter.com/edpanameno"}, {"label"=>"Facebook", "icon"=>"fab fa-fw fa-facebook-square"}, {"label"=>"GitHub", "icon"=>"fab fa-fw fa-github", "url"=>"https://github.com/edpanameno"}, {"label"=>"Instagram", "icon"=>"fab fa-fw fa-instagram"}]}A few years ago when I first setup my web site with dreamhost I also setup private git repositories and an instance of redmine to manage my private projects. Although this worked well most of the time, I was not happy with the performance on my shared account with dreamhost. In addition, I used to get too many random error messages that would cause the site to go down (the cause on a few of these issues occurred when ruby was updated without any notice on the dreamhost server hosting my site). As I started to look around for alternative ways to manage my private projects, Visual Studio Online (VSO) came to my attenion!