Installing io.js JavaScript I/O on Ubuntu

I have been wanting to install io.js on my Ubuntu system for a while so I figured I would create a blog to maybe help some one else.
    • io.js should always be shown as lower case letters
    • io.js is a fork of Joyent’s Node.js ™
    • io.js is fully compatible to the npm package manager for javascript
    • io.js suggest they will be providing faster and predictable release cycles
    • io.js suggest they will operate under a “open governance model”
    • io.js is using SemVer (Semantic Versioning Specification)

I want to use nvm to manage and control multiple versions of node.js and now io.js.
So lets get started by selecting the Dash icon Dash on your desktop and then type “terminal” and then click on the Terminal Icon as shown below with the green arrow:
Terminal
The first thing I do before installing anything on my machine is to first to an Advanced Packaging Tool (APT) update and upgrade.
This is shown below in the code snippet:

sudo apt-get update

sudo apt-get upgrade

Then we need to make sure your system has a c++ compiler we can do that with the following shown below:

sudo apt-get install build-essential libssl-dev

After that is complete we can now need to make sure that we have the cURL command line tool for Linux again shown below:

sudo apt-get install curl

Now we should be able to use curl to get the latest version of nvm, at this time the version was 0.23.2 you may need to change that when the version updates shown below:

When this is complete you should see “Close and reopen your terminal to start using nvm”.

We will use nvm to install io.js on now using the following command shown below:

nvm install iojs

When that is complete you should see “Now using io.js v1.0.4. (This is the latest version at this time, you may see a newer version depending on version updates).

Now we need to start using the Read-Eval-Print-Loop (REPL) program.

We can get this REPL version by typing the following command shown below:

iojs

This will produce a the following > caret.

>

At the caret we can type in some of the following information for testing io.js REPL.

To start testing io.js REPL we can type in the following after the > caret.

> 1+3

Now press the enter key and you should see the following:

> 1+3

4

Finally we can test another example by typing the following:

> myarray = [‘a’, ‘b’, ‘c’];

Press Enter after entering this and you should see the following:

[‘a’, ‘b’, ‘c’]

Finally type in the following line shown below:

> myarray.forEach(function (v){console.log(v);});

This will produce the following lines shown below:

a

b

c

This blog post was a beginning set of blog post to help others install, and begin to install io.js on their Ubuntu Linux machine.

I will work on trying to continue to give examples of io.js and develop other applications soon to show the complete functionality that will help explain io.js.

Please keep checking back to see other tutorials soon.

NetTryx’s New Command Center

I have been reading a wonderful book that has got me a new inspiration on developing, improving and sharpening my skill set. This book (Soft Skills: The software developer’s life manual) is a product of Simple Programmer, and author John Z. Sonmez. I have watched and followed his work on Pluralsight as well have followed his blog and email messages. I have started to setup and develop my NetTryx Command Center for creating a solid work environment to continue my consulting work and also improve my skill set. I have not yet completed the book however have begun to start putting some of the inspiration to work for me as I go along. This book as of chapter 12 has already jumped to the top of my “Great books of all times” list.

One of the first steps John suggest in this book is to create a blog. Well I have had a blog for a while however I have not been what you call an avid blogger at times. I have now started to clean up and reface my blog. I have took Scott Hanselman’s advice on his blog page on using Live Writer to begin to start publishing more frequently. Again thanks John Z. Sonmez and Scott Hanselman!!!

I have created and setup a Man Cave or NetTryx Command Center to begin to help improve my blogging, skillset as well as working on my new found love of the M2M/IOT toys and hobbyist equipment I have been collecting. I am working on developing some blogs on some of the fun stuff I am doing and will post them when that work is done. So back to the Man Cave / NetTryx Command Center I have servers, Windows, Linux and of course Mac OS X. I have setup two Raspberry Pi’s and will finish my Beagle Bone Black very soon. Here is a sample of what it looks like so far!!

IMG_0510

So in summary, I want to thank John Z. Sonmez for the all inspiring book “Soft Skills” and Scott Hanselman for the amazing blog he is always willing to share to make all of us try to gain half the knowledge he has!! Do your self a favor if you are a software developer and follow Scott Hanselman’s blog and buy an amazing book to improve you as well as your “Soft Skills”!!

Has Life, Cancer or IT ruined my Jack-of-all Trades ability?

Has Life, Cancer and the Speed of Information Technology destroyed my ability to be a Jack-of-all Trades Master of None?

With the speed of Information Technology (IT) and the diversity of all technologies intertwined with life the ability of being the Jack-of-all-Trades Master of None for me is ending at an enormous rate.

For over 15 years I have had the ability to constantly learn the bleeding edge of technology and be able to truly be a version of a real life Jack-of-all-Trades. However with the speed of change in IT I am beginning to think that this type of ability is increasingly becoming impossible to do. I spend an enormous amount of time in the world of technology because I have no children and my girlfriend understands that I genuinely love to learn and am very flexible to this process.

10 years ago this July I was first diagnosed with Lymphoma cancer and after doing chemotherapy I was only surprised to have the news in April of the next year that the cancer was back or I have a new cancer. With the process of life getting in the way from trying to survive medical issues I still had the ability to spend waking hours trying to stay on the bleeding edge of technology, keeping my Jack-of-all-Trades Master of None alive. I have somehow been able to find my calling in life and really truly enjoy and love my profession. I have had the capability to travel the world and see some amazing places, met astounding people and have had the opportunity to develop products for many diverse industries. With the scenario of “real life” hitting me to the tune of fighting cancer and developing an attitude of survival I still had the ability to continue to improve or keep on my life’s path of Jack-of-all-Trades.

However with the process of now getting back into shape from years of medical issues I now find it extremely difficult to remain successful as a Jack-of-all-Trades Master of None. I believe that Life has not completely got in the way because I do spend a great amount of time still learning, trying new development and experimenting on multiple Information Technologies avenues. But with the diversity and shear mass of change influx in the world of Technology the process is becoming almost impossible to claim I am a Jack-of-all Trades Master of None.

Does everyone else feel that the Jack-of-all Trades Master of None can still survive?

Are Life, Survival and the process of returning to an athletic healthy lifestyle really getting in my way?

Thank you Lance Armstrong for Cancer Awareness!!

Thank you Lance Armstrong for Cancer Awareness!!

Meteor is an open-source full web platform.

https://www.meteor.com/main

Meteor is a really cool web platform that has an amazing functionality built in to allow for the full development of an entire web application all in one framework.

The amazing part of this application web framework is that it is all Pure JavaScript. You will use JavaScript on the Client Side as well as JavaScript on the Server Side. The server side software runs in a Node.js container within a single thread per request. This is not the norm with Node.js usually because most Node.js server applications are most of the time a asynchronous process.

Meteor uses a HTML Template engine called Spacebars, which is very similar to the well know Handlebars. The Spacebars engine is a main part of the Meteor application that will allow you to have instant updates with amazingly fast updates. This instant updates is very similar to using SignalR. This engine has the ability to develop looping constructs that will allow for querying database data.

Meteor has an application programmer interface that will allow you to develop and use database in both the Client Side as well as the Server Side. The main thing is that you use the same type of programming or code to utilize data from the database.

Meteor has a process of updating the User Interface with temporary update that is expected however if the results are different the application will fix the actual results to the User Interface.

Updates are simplified when the application will be updated and the database data will be stored and kept while updating the version of database and application. This can be done on a live site.

There is a folder structure that can be followed that will be used to control viewing of code and programs as well as a restricted application space that will be used to help control private code and development.

Meteor is very simply zipped up to an all in one application that can be transferred to many web hosting companies on the web.

Meteor utilizes a DDP protocol that uses Data exchanges within the application with a Restful process that will allow you to transfer data to listening endpoints.

Meteor has its own package management that is used to develop and reuse already created functions and software that has already been written.

Check out this fully functional web platform that allows for development of complete application using JavaScript while giving you a upgrade path as well as database functionality on both client and server.

https://www.meteor.com/main

M2M Developer’s Workshop

I went to a M2M Developer’s Workshop held by Verizon Wireless on Wednesday.

This workshop the was very informative on the requirements and steps you need to develop a M2M product using Verizon’s Cellular network.

Verizon has some really interesting sites and information that will help companies and individuals develop and create product lines for the M2M/IOT Revolution.

An interesting sites that Verizon has for the M2M products are this one:

http://www.verizonenterprise.com/products/m2m/management-center/ 

This has a site has a good video that has a ton of information about Machine 2 Machine:

M2M Management Video

Verizon also has a very informative developers site:

http://m2mdeveloper.verizon.com/build/getting-started

As well as a community site that has an enormous amount of help and information on API’s and Tools that are available for the public.

I think that one of the most interesting and really cool sites they have is these two sites:

https://opennetwork.verizonwireless.com/devicesShowcase.aspx

and

http://innovation.verizon.com/

Verizon is dedicated to the M2M/IOT Revolution and is willing and able to help improve your product development as well as get that product online!!

Check out the above sites and if you have a product in mind contact your local Verizon Representative as early as possible to see how they can help!!

Install IOS 8 Update without enough space

I tried to install my IOS8 updated on my iPad mini and iPhone and get the error that the must be 45Mb of free for installation to continue.

However I discovered while trying to install certificates on my iPad I could use the Apple Configurator to update the IOS8 and install my certificates with my Mac Book Pro.

Download the Apple Configurator from the App Store and then install it on your Mac.

When you install the Apple Configurator you can plug your iPad mini or iPhone Device in to the USB port.

You will need to go to Settings / iCloud / Find My iPhone and turn that off.

The Apple Configurator will then find the device.

Then you can go to the Prepare Icon on the top bar of the Apple Configurator as shown below:

Once you have plugged in the device you can press the Prepare button at the bottom of the Apple Configurator.

After that you can just wait until the IOS 8 version is downloaded and installed.

Parallels & Ubuntu

I am a very big supporter of both Apple Hardware as well as MAC OSX.
However I also use Parallels Desktop on the Apple Hardware to allow me to have the best of all worlds I have the opportunity to have virtual machines for Windows 7, 8.1, as well as Ubuntu Linux, Debian Linux and Chrome OS.
I just updated to Parallels Desktop 10.0 and I am really impressed with the update. The performance has improved and I really like to the UI improvements.
I have Ubuntu 14.04 working with the new version of Parallels Desktop 10.0 that I have and also have Parallels tools installed and working well. Today I got an update alert from Ubuntu that there were some updates. When completing my updates from Ubuntu it asked to reboot the system. To my surprise after the update I got nothing but a black screen once I logged in.
When you click on anything the box is a grey blob that is really messed up. I could not see anything resembling any graphics. I tried the CTRL & ALT & T (button combo) to open a Terminal (shortcut for Ubuntu). This caused not success but again a black screen.
I am thinking that this is an issue with the Ubuntu updates that I got so I began to investigate the fix. I found this knowledge base from Parallels http://kb.parallels.com/en/118776. I decided to try to this to remove my Parallels Tools and see if that could fix it. When following the process I found another choice that I tried and it worked without removing the Parallel Tools. I thought I would document it to help others.
The following is the steps I took to fix my issue and I am now successfully running with the new Ubuntu Updates and Parallels Tools.
1. After starting the Virtual Machine for Ubuntu and Logging In. I seen this screen:


1

2. Then I clicked on the Devices -> CD/DVD 1 -> Connect Image…
2a. This will show an Open Dialog box that you can then navigate to the following area: Applications-> Parallels Desktop.app->Contents->Resources->Tools->prl-tools-lin.iso you can double click or highlight and click Open button. (Notice the lin.iso there are several iso’s in the folder and you need the Linux one).

2

3. Clicking the open button will really make no change on the screen however you will mount the iso to the cdrom. You will need to then Press the CTRL & ALT & F2 (button combo) which will bring up the terminal window and you can log in.
4. You will need to now create mount point of the cdrom by typing in:
sudo mount /dev/cdrom /mnt

5. Change to the mnt point by doing typing:
cd /mnt

6. Now you need to start the install by typing:
sudo ./install

7. If you have done every thing correct you will see this screen:

3

8. You will need to press the next button however the mouse will not work so press the space bar. (press tab if the next is not highlighted)

9. I then saw this screen and I thought I will pick Upgrade and Next

4

10. You will then see this screen that will confirm the Upgrade by pressing Next.

5

11. After pressing Next I got this screen and I again pressed Next:

6

This will run through some updates and installs and after the process completes the you will see a Reboot button which will reboot you Ubuntu and then fixed all my issues on my display and all is working well.
Having this issue I thought I would document it for future reference and I hope this will help any one else having any issues with Parallels and Ubuntu on the Mac OSX.

True American “Hero’s”

America lets stop looking for our next sports “Hero” and instead realize that the Hero we seek is on our front line every day! Our Citizens and Military Personnel fighting for the freedom that gives me the right to develop this document.

After the issues of the past few weeks with the NFL and past incidents with sports stars showing us that they may not fit our “Hero Status”. Don’t get me wrong I am not perfect either. However I feel that we need to begin to set our standards for “Hero Status” to a new level. We have Military Men and Women risking their lives every minute for us to live the amazing life we have and enjoy. They are on the frontlines not asking, “Who the Hero is I am risking my life for”!! In their heart they know they are risking their lives for their loved ones and you and I.

My father was taken from this Earth at an early age from complications of Medical that is by no doubt from his military service. I have no regrets from this at all because he is and will always be the “Hero Status” in my heart. I know many great men and women that are continuing to serve in this Great Nation to fight for our Freedom. To them I say “Thank You” and they are and should be our new “Hero Status” we should all set our standard to.

Every one that knows me will know that I use my freedom daily, as I am “somewhat opinionated”. So for me I will begin to have a new standard for “Hero Status”. That new standard will be the Great Men and Women that allow me to have the Freedom to be “somewhat opinionated”.

To our entire new hero standard Men and Women that are risking their lives for America I again say, “Thank you for being our true Hero”.

I hope some day all your dreams come true.

Internet of Things / Machine 2 Machine Revolution

The Internet of Things (IOT) and Machine 2 Machine (M2M) communication is coming fast upon us and is creating a connected world with Services that will bring communication and automation to devices surrounding our every day lives. Development of Mongo DB, Express.js, Angular.js and Node.js are causing a development that can be replicated on Operating System Independent devices, with a very small footprint. JavaScript is coming on full speed in the world of development as a First Class Citizen that will allow for the ability to pass a function as a variable that will be executed later. Developers have been reluctant to embrace JavaScript because of the issues it has been blamed for in the Browser Wars. However with Node.js running on the Google V8 engine the JavaScript is a known, reproducible development platform that is very stable as well as fast. Many large corporations are making great strides to develop and/or embrace the IOT/M2M technology.

The connection of devices in our homes, vehicles and even on ourselves are beginning to evolve at an enormous rate. Development of devices like Raspberry Pi, Arduino and embedded devices are allowing people to develop and invent new products every day. The world as we know it will be very interesting in the next century when we all become connected to the Internet of Things.

With the push of IOT and M2M new technologies and emerging development are showing up at an alarming rate. This is not a complete list of the technologies by far but some I have been investigating to discover solutions to development I have been working on.

Some prominent and evolving technologies that are helping to drive the IOT/M2M revolution:

  • Katana – (OWIN implementation based on Microsoft Technology) -https://katanaproject.codeplex.com/documentation
  • AngularJS – Open Source web application maintained by Google
  • NodeJS – Open Source web application built on Google Chromes V8 JavaScript Engine
  • Wind River Linux – Open Source Linux OS wholly owned by Intel.

With the onset of the Internet of Things and the Machine 2 Machine push the development and capability of the Wireless Spectrum will need to have a huge impact on the speed and success of this technology. There are articles that are being produced that are showing the push of the Wireless Spectrum. Such as the following I have read lately:

http://entertainment.verizon.com/news/read/category/Technology/article/bgr-forget_5g_10gbps_wifi_is_coming_next_year-newscred

http://www.forbes.com/sites/timworstall/2013/03/23/the-beginning-of-the-death-of-wired-broadband/ 

This is of course a technology in its infancy that will be very interesting in the future revolution of our Connected World. This is a very exciting time to be in technology with the dramatic changes that are happening!!

Searching for an answer has become clear with http://www.pluralsight-training.net

Several years ago I had a question that I asked countless times with really no answer or solution. I wanted to know “What does it take to change from a mid level developer to a senior level developer?” I was really wanting to discover this answer because I felt I was still really not a senior level developer. And I wanted to take that step to begin my career as a senior level developer. I am still not sure I have made this step to become a senior level developer. However I am on a “Journey to become a better developer!” I do however feel that I may have the answer to the question “How do you move from a mid level developer to a senior level developer.”  The answer is “http://www.pluralsight-training.net!” I feel that this training is very solid and really great to developing your skill-set. Software development really is the continuous strive to improve both your skill set and understand of just writing and developing code. I have taken several training classes from many places but this is by far the best I have ever had. With that being said I have been working on an MVC3 project and have been trying to develop a webgrid filter that is a linkbutton functionality. With the help with pluralsight-training, Dan Wahlin, Scott Allen I have been working on a solution for a couple of days now. I have been watching Dan Wahlin and jQuery, Scott Allen and MVC3 to get this webfilter developed.

I am hoping this will help someone to be able to develop a solution for some one. I am not sure this is the best way to develop this solution for MVC3 so understand this my be the wrong way to implement this code. But here goes nothing…

I first created a controller with an [HttpGet] method that looks like this:

public ActionResult AllUsers()
{
//var u = new UsersDao();
var uc = Membership.GetAllUsers();
var lstUser = new List();
foreach (MembershipUser membershipUser in uc)
{
var u = new UsersDao
{
UserName = membershipUser.UserName,
Email = membershipUser.Email,
Comment = membershipUser.Comment,
CreationDate = membershipUser.CreationDate,
LastLoginDate = membershipUser.LastLoginDate,
LastActivityDate = membershipUser.LastActivityDate,
LastLockoutDate = membershipUser.LastLockoutDate,
IsApproved = membershipUser.IsApproved,
IsLockedOut = membershipUser.IsLockedOut,
IsOnline = membershipUser.IsOnline,

};
lstUser.Add(u);
}
return View(lstUser);
}

I then created a .cshtml page

@using ConcurrentDevelopment.MvcSubmitExtensions.Html
@using DocuTech.DataLayer
@model List
@{
ViewBag.Title = "AllUsers";
}

AllUsers

var btnA = $('#A')

@Html.ValidationSummary(true, "AddUser was successful. Press Next to set up the roles for the user.")
@using (Html.BeginForm())
{

@{
var grid = new WebGrid(Model, defaultSort: "UserName", rowsPerPage: 5);
}

Users Grid View

@{
var sList = new List
{
"All", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K",
"L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z"
};
}

@foreach (string s in sList)
{
@Html.SubmitLink(s,new {id = s})
}

Filter Grid: @Html.TextBox("letter") @Html.SubmitLink("Submit")

@grid.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt",
columns: grid.Columns(
grid.Column("UserName"),
grid.Column("Email"),
grid.Column("Comment"),
grid.Column("CreationDate"),
grid.Column("LastLoginDate"),
grid.Column("LastActivityDate"),
grid.Column("LastLockoutDate"),
grid.Column("IsApproved"),
grid.Column("IsOnline"),
grid.Column("IsLockedOut")))

}

I used a program written by Concurrent Development Ltd. which was a development for creating a Linkbutton. This code can be found here:

http://www.concurrentdevelopment.co.uk/blog/index.php/2011/02/asp-net-mvc-linkbutton-with-htmlhelper-extensions/

I then created a JavaScript file that handled the jQuery functionality that would handle the click event on the link buttons that would place the value you click in the filter TextBox. I used the ID value to develop the filter.


/*
--------------------------------------------------
All Required functions for the AllUsers.cshtml Page.
--------------------------------------------------
*/
$(document).ready(function () {
$('#A').click(function () {
//alert($('#A').html());

});
});

/*
---------------------------------------------------
Link function click event
---------------------------------------------------
*/
$(function () {
$('#A').click(function () {
$('#letter').val($('#A').attr('id'));
event.preventDefault();

});
});

$(function () {
$('#B').click(function () {
$('#letter').val($('#B').attr('id'));
});
});

$(function () {
$('#S').click(function() {
$('#letter').val($('#S').attr('id'));
event.preventDefault();
});
});

$(function () {
$('#All').click(function () {
$('#letter').val("");
});
});

I finally created this [HttpPost] method like this:

[HttpPost]
public ActionResult AllUsers(string letter)
{
var uc = Membership.GetAllUsers();
var lstUser = (from MembershipUser membershipUser in uc
select new UsersDao
{
UserName = membershipUser.UserName,
Email = membershipUser.Email,
Comment = membershipUser.Comment,
CreationDate = membershipUser.CreationDate,
LastLoginDate = membershipUser.LastLoginDate,
LastActivityDate = membershipUser.LastActivityDate,
LastLockoutDate = membershipUser.LastLockoutDate,
IsApproved = membershipUser.IsApproved,
IsLockedOut = membershipUser.IsLockedOut,
IsOnline = membershipUser.IsOnline,
}).Where(lst => lst.UserName.StartsWith(letter,true,null)).ToList();

return View(lstUser);
}

I think that this was a good experience in answering the question, “How do you move from a mid level to senior level developer.” I feel the only way to continue to improve the software development world is to continue to program a lot and new stuff that you dont know. I think that is accomplished is by watching awesome video’s by pluralsight-training by great people like Dan Wahlin, Scott Allen and all the other authors.

%d bloggers like this: