SmartFile Initial Linux Box Setup

This past week at my new job I threw together a quick build to do my development upon. Going to leave this log of the OS and software at this point in time for future reference.

Base OS: Fedora 22

GUI: Gnome 3

ALT+Up and ALT-Down to change volume on the fly.

Software:

  • python 2.7
  • git
  • vagrant (first run is the slowest)
  • virtual box
  • vim (w/ personal .vimrc config).
  • google chrome
  • visual studi0 code
  • gcc (compiler)

To Be Continued…

New Job/Home – SmartFile

August 17th, 2015 marked an eye-opening and big day in history for me. First off let me put it out there that I turned 21 years old. That is right I am of legal drinking age in the United States. Although a bit more interesting than that; the date also marks the place in time that I started my first day at SmartFile.

I am working as a part-time software engineer/awkward semi-adult. And basically my goals are to do/create something awesome while I’m there,  make enough money to survive this semester, and perhaps land a full-time job after I graduate.

Now I know everyone is wondering about my last internship. That actually ended August the 14th with another great company. While I was there I got to work on several internal tools for the company and their partners. It was mostly Dot Net Nuke Module development, however I got the sneak in some vanilla C# every once in a while. As you can probably tell from my previous posts, I have even developed my own process and structure to prevent clients from dealing with the dreaded full-page refreshes that DNN forces upon its users.

However, time passed while this opportunity at SmartFile came into view. I wasn’t really in any position to say no. It did pain me to leave my old job. The employees and my boss were great people to work with. They gave me a ton of insight into the corporate environment while allowing me breathing room to prefect my craft little by little. However, the benefits of SmartFile with a more agile development process, an office that is right next to my Universities campus, along with being in the heart of Downtown Indianapolis. I really couldn’t say no.

Therefore stick along with me as I venture into my Senior year of College, while starting this new job, and transition from a .Net shop to a full Linux, python, and django environment. This should be one heck of a ride.

Tidbit:

On my first day I was tasked with building my own chair, hooking up my PC then configuring it, along with building an IKEA piece of furniture I can call my own. I am not going to lie, I was/am super nervous. Yet at the same time super excited. I can’t wait to see how this journey of life unfolds.

Pics or it didn’t happen!!!SmartFile Chair, Box, and Computer

Virtual Box 5.0 Does Not Support Windows 10

I am writing this post as a public service announcement to all of my fellow friends in the tech community whom are thinking of upgrading to Windows 10. Be careful! Today I was about to install a new version of Fedora via Virtual Box when I received several errors. It is apparent that Virtual Box is not ready for Windows 10 my friends.

I am about to install a test build to see if some of the problems have been fixed.  If not I am not sure how I am going to do my weekend development…

Source Stuff:
https://www.virtualbox.org/wiki/Downloads

Windows 10 Running Slow On Your Yoga 2 Pro? (FIX)

windows_logoI just upgraded my laptop a few days, and goodness gracious Windows 10 was running slow. Being that it is a touch screen, but powerful, I though it would run great. However after the upgrade my apps started to become sluggish, and even my start menu would take a few seconds to appear. I was astonished, after all I am running an Intel 256GB SSD with 8GB of RAM with an i7 processor. I expected nothing less than perfection.

After dealing with this issue for over a day. I finally found some time to figure out what was causing my computer to run so slow. I went though my task manager and then ran a profile to see which processes were taking up the most resources. I wasn’t really getting any progress until I (on a hunch) went to my “msconfig” dialog and turned off all of my Lenovo published services. It appears there must be a memory leak in one of them accepts any memory the kernel gives it, and never releases it back to the user. I suggest that if you own a Lenovo Yoga 2 Pro and upgrade to Windows 10 that you take a look into this issue yourself. I wish I could of found the exact process, however it is about 1am and I have to get up early tomorrow. Hopefully this will help others experiencing issues with their convertible-laptops as well.

Dot Net Nuke Module Development Environment Setup

Abstract:

DNN LogoWelcome to my step by step process of how to setup a custom module development environment for Dot Net Nuke (7ish). We will go over the tools required along with how to set them up. Follow this list carefully, and you will be up and ready for custom module creation in no time.

Requirements:
Setup:
  1. Create your own local Dot Net Nuke Instance(How to Install DotNetNuke)
  2. Install Visual Studio 2013 Community Edition
  3. On the first launch of Visual Studio navigate to Tools>Extensions and Updates>Online
  4. Search for “DotNetNuke Project Templates” and install the official package created by Chis Hammond.
  5. After installation of the package, close out of Visual Studio.
  6. Open an instance of file explorer and navigate to your AppData directory. I did this by typing in “%appdata%” with out the quotes.
  7. You should see that you have been brought by default into the AppData/Roaming folder. You will need to backup one and go into the AppData/Local/Microsoft/VisualStudio/12.0/Extensions/ folder.
    DotNetNuke Package Install Location
  8. Now we are at a section that will vary computer to computer. You will need to select the folder in which you find files within that have some with “DNN” pre-pended to them. Therefore my folder ended up being the one named “bd1vvpic.fww”. This folder name is dynamically picked by Visual Studio upon installation.
  9. Once inside, traverse to the /ProjectTemplates/CSharp/DotNetNuke/1033/ directory.
  10. Extract the zip file “DNN-C-Module.zip” into it’s own folder. We are going to make modifications to it.
    Modifying the DNN Module Template
  11. Go ahead and navigate into the directory we just extracted the zip file too. Once inside locate the *.vstemplate file and open it with your favorite text editor.
  12. Here you are going to want to find and replace all instances of the text “dnndev.me” with the name of the DNN site you setup previously. On my machine I can change it to either “locahost” or “zebra”.
  13. Save the file then close out of the text editor and bring the folder back to focus in file explorer.
  14. Highlight all of the files inside and then right click on the *.vstemplate and navigate the context menu to Send To>Compressed (zipped) folder.
    How to zip the DNN template back together.
  15. Next, cut the newly created zip file and move it inot the 1033 folder. Make sure you replace the old folder or delete it first. After it has successfully pasted. Remove the old folder in which you extracted your zip to in the first place. Your 1033 folder should look the same as it did when you just started, just out modifications implemented into the new DNN-C-Module zip.
Finishing It Up:

You are set! Welcome to your new Dot Net Nuke development environment. From here you should be able to open up Visual Studio and create a new project from the template provided. As for actually initializing a project the way I create mine; that will have to be another post. Leave a comment below if you have any questions or comments.

Why Obama Is Wrong With His Super Computer Decision

I don’t like politics. I don’t enjoy taking sides(in the political realm). However today I was taking a quick glance at Hacker News and guess which political figure’s name popped up on the site I go to for TECHNOLOGY news. If you guessed Obama, then you, my friend, are right. Now, before I continue, read the post by the BBC which gives you an overview of what he wants.

Supercomputers: Obama orders world’s fastest computer

If you haven’t realized by now, the United States of America’s presidents (all sides) know how to spend money, none of them know how to make it. You might also look at the American deficit, and try to figure all that crazy stuff out. Yet, one thing the USA does know how to do well is compete. Remember the race to the moon? Yeah, we won that.

Yet now we are on another journey, a race in the technological age. However, and most unfortunately, we are still confined to the one track mind of our leaders. Obama isn’t the most technical person in the world, and we know it. That’s Okay. You don’t need to have a degree in electrical engineering and computer science in order to run a country. What might be helpful, however, is finding good E.E. and C.S. advisory when it comes to a technical decision. The ability to consult them upon a large costly project could help save a ton of money in the end. If it doesn’t, then maybe your advisories aren’t as good as you thought.

The Issue:

If you haven’t read anything about China’s latest super computer, do so now. It can compute around 33.86 petaflop/s and they call it the Tainhe-2. Oh, and then there’s the cost of the energy it uses: ~$400,000 USD per day.

So what is wrong with this massive behemoth of a machine? It’s simple, no one uses it. Most super computers are built to do one thing very well; this is abnormal when compared to your everyday computer. Your home PC was designed to do a lot, well enough. It processes graphics, does arithmetic with integers and floating point numbers, along with the ability to save data to the hard drive for use at a later date. Armed with this knowledge, developers target their software towards everyday consumers, and anyone who has worked with a software development company knows the cost involved (hint: it’s EXPENSIVE). Therefore software engineers focus on consumer equipment in order to maximize their programs’ usability. To get a program working on a super computer, one must pay highly specialized developers in order to create a program that might only be used once. It also might take a long time to build considering the missing tools which are available to use when targeting the consumer side of the market.

My Proposal:

Let’s stop and think for a moment. I know pride causes rash decisions that can ultimately result in some happiness, but it can also inquire cost. I propose that we stop this ill-thought idea of being overly prideful; I get it we are American’s. I love being first. Who doesn’t? The fact is, we need to be more strategic. We need to show other countries that we are capable of thinking outside of the box. And just like science has already shown us… we can.

There are programs that allow you to dedicate your computer, in its spare time, to research teams to do a few computations in which it processes and then spits back out and pushes that data to a researcher’s server. Although servers can get expensive, they don’t come close to the cost of renting a super computer for a day. Quite a few Scientist even host their own. In fact, here are a few that you can contribute to yourself. Most of them are for a good cause.

Now take that concept and apply it to a well-rounded super computer. We could have a centralized server which serves up data to volunteers computers and retrieves it upon computation completion. Think about how much money that would save (specifically tax dollars). So rather than wasting efforts on a super computer to please our president and our Egos, why not invest in a smart, distributed system of software that would save money and be just as powerful if not more so. The software could utilize a user’s spare GPU or CPU time and send the results back to its headquarters. It is a wonderful idea and reality that can happen and hopefully will (in time).

With that stated, I ask these two questions: “Why are we wasting our time and money?” and also “How can we use innovation to waste less time and money?” Feel free to respond below in the comment section.

Shoutout to @davidvkimball for his help editing this post

DotNetNuke Modules Layout/Design

Over the past year I have been designing DotNetNuke Modules for UBA Benefits. During that time I have really figured out how to optimize my time for extra development bits and pieces people ask me to include. However, because of the complexity involved with development and lack of documentation I feel that my process and design solution should be pushed up here to my blog for future reference.

Directory Structure:Directory Structure for DNN Project.

Looking at this structure it might seem like a lot, however the majority of it is the boiler plate folders included in the Chris Hammond Templates. The only folders I added are Controllers, Models, and WebService.

Just as one would expect, the controllers folder holds the Business logic such as data validation and SQL execution. The models folder contains the outlines of the data in which I want to retrieve or manipulate in my controllers. Last but not least the WebService folder contains my API Routes file along with another web controller that handles the logic of serving up any requests to the end user, along with validation and authentication.

Together, I am able to create a responsive interface that utilizes data-binding via Knockout.JS and Ajax via jQuery to really help provide the users with an overall great experience. The jQuery helps post and get information from my WebService folder… They talk in JSON to one another. Then my Web Service interacts with my controllers in which decided what data to do and utilize CRUD upon.

This design has been slowly improved over time. Previously I was doing it the way that was suggested via Web Forms. However, those kept causing page refreshes when one would save or get new data from the server. I believe utilizing my own strategy I am able to limit the page refreshes and provide the user with a cleaner and more responsive experience.

If you have any opinions, suggestions, or questions about my strategy, feel free to leave a comment below.

Visual Studio and Javascript

I was chilling at my desk, writing a lot of JavaScript in a single knockout view model(bad practice). When I relized how annoyed I became by not being able to use region’s in my code. Therefore I started searching the web for something to help me out. Finally I came across an extension for VS 2013 called “Advance JavaScript Outlining”.

To actually specify a region you do as follows:

I suggest you try it out. Very helpful extension for those whom do a lot of JavaScript programming in Visual Studio.

 

Knockout.JS Editable Table Template

JS Fiddle LogoToday, while working with Knockout.JS, I needed to create a good editable table. I was in a crunch for time, and the things I was trying just wern’t behaving the way I expected. Then I came across this jsfiddle repo and this one as well, both of which helped solve my problem by giving me guidance on how to implement the ideas such as inline editing, without causing to much of a learning curve.

Not sure who created the repo, but I am very appreciative of the person who did. Thank you.

Favorite SQL Lite Viewer/Manager/Browser Software

As a developer, I enjoy using SQL Lite for quick databases in which I utilize during testing. However, finding a good database browser/creator/editor can be annoying. Therefore I am making this post really just for me, but hopefully it can help you too. Just click the Octocat.

Octocat

My favorite open source SQL Lite manager. Heck it is even cross platform! #Awesome