TOTD SQL Join Statements

Personal Notes:

INNER JOIN — Join columns, however remove records with null values.

LEFT/RIGHT JOIN — Join columns, and leave all columns there.

FULL JOIN — Join columns, even if there is only one match between tables.

Dawn Of A New Laptop

It’s 2014 going on 2015 and yes, I know Windows 10 is near… However, this is the last time I am putting up with my unreliable Samsung Series 9. It seems every 6 to 8 months it decides to go corrupt and have me be forced to replace the SSD. NOT COOL! Don’t get me wrong… I loved it. I don’t hate Samsung. I just had a fluke. It was a model that they didn’t test property, and upon that it was basically rare hardware at the time. You could say I was the consumer beta test if you sole wanted.

Microsoft Clippy

Either way, I am beginning the investigation of a new laptop and plan on documenting the requirements for this laptop in this blog post. If you are a developer or just feel like I have missed something on this list, feel free to comment below letting me know! I am thinking about Lenovo and Asus, althought haven’t put my fist down on them yet.

Also just a note to everyone, the items are not in any particular order.

Last Updated: 10/15/2014 2:54pm

  • 8+ GB of RAM
  • 7+ hours of battery on a single charge.
  • Must be able to virtualize.
  • 256GB minimum SSD that works..
  • 1080p screen, touch would be preferred.
  • Would love a 2 in 1, but don’t mind it being just a laptop.
  • Thin and light weight.
  • No bigger than a 15.4 inch screen… minimum is 13.3(if even that…)
  • Two 3.0 USB ports.
  • Mini or full HDMI port.
  • Bluetooth 4.0 L.E.
  • Wireless b/g/n
  • Strong body design… built for business.
  • etc.

Laptops that I am going to consider:

( Updated 10/17/2014 3:32PM )

Lenovo Yoga 2 Pro

Lenovo Yoga 2 Pro Orange

Lenovo Yoga 3 Pro

Asus Zenbook UX303

Bad Pratice With Web Site Registration Emails

To vent a little bit about security, I come to you now. DO NOT send passwords in emails.

Emails are either plain text or HTML/CSS. Even with an encrypted path to the receiving person, it can still be tampered with. Also as a website owner you should never be able to look in your database and see anyone’s password anyways(hash that, salt that)… So why would you send it to them in an email, specifically when they register?

It is a fact that this is bad practice. Therefore any websites created as of 10/10/2014 and later.. heck like 10/10/2008 and later, I will not be using if such logic is overlooked.

Thank you for your time.

Fixing NPM “Error: ENOENT” Issue

Step 1) Copy the path up to, but not including the npm folder next to the error. Mine was the path below.

Step 2) Open up Windows Explorer and paste the location into the address field.

Step 3) Create a new folder called ‘npm’ without the quotation marks. Then try the npm command again in the Terminal/PowerShell.

All should work as planned now. Enjoy!

Node.JS Function Callback Scope (i.e. Passing A Function)

687474703a2f2f737562737461636b2e6e65742f696d616765732f6e6f64655f747572746c652e706e67.resizedToday while going through exercise 6 of learnyounode’s tutorials I got very frustrated. This tumblr link doesn’t even do me justice. Yet after about an hour of smashing my head against my keyboard I decided to go back to the basics.

When passing functions in Node.js you must remember the current scope of variables. I ended up passing a callback function to a function within a custom module I was making for the exercise, and ended up resetting the variable to “undefined” in the process. Below is the code that caused me the issue:

Looking above the code seems file at first glance, however take a closer look at that single nested function within getList. It has a reference to call which is linked to the higher level callback function. Apparently Node.js throws a fit with this saying it is undefined.

That being said I wasn’t paying attention to the scope of the code. All I really needed to do was call the callback function from with in the nested function. Because it is embedded in the original function it has scope access to all the variables defined before it’s initialization. So I present to you the working code:

Hopefully one day this will be able to help either myself or someone else out there on the internet.

 

Setting A Container To A Specific Module On DotNetNuke 7

For some weird reason I keep forgetting how to change individual module’s container types. Let me mention this is not to change every module’s container on a page, only one at a time.

Step 1) Go to the individual module’s settings.

Step 2) Make sure the “Page Settings” tab is selected.

Step 3) Select the module’s container type you want in the “Module Container:” section.

Step 4) Hit the save button and enjoy!

As it seems the preview button next to the “Module Container:” section doesn’t actually work for specific modules, it just changes the containers for the entire page. Weird feature/bug, maybe they will fix this in the next version.

Auto Complete Syntax in Sublime Text 2 for Node.js (SublimeCodeIntel)

Today I was looking into doing some Node.js programming for a simple game idea I had. Finally sitting down at my desk around 10:00pm, I realized I wasn’t purely confident while writing my code. Figuring out the source cause, of my use of Visual Studio and being able to rely on it’s excellent Intellisense for C# and other languages I found myself wedged into a pickle.

Without further due, I leave you with the instructions on how to install SublimeCodeIntel.

Step 1) You will need to install Package Control for sublime first and foremost. You can do this by visiting wbond.net’s installation page and going through the Simple installation procedure. Make sure you select the tab for the correct version of sublime you are running.

Step 2) Restart Sublime

Step 3) Open up Package Manager either via Command+Shift+P on OS X, Control+Shift+P on Linux/Windows. Type in “Package Control: Install Package” and then give it a moment to populate the list of modules/plug-ins.

Step 4) Select “SublimeCodeIntel” from the list and give it time. On completion of the tool, it will popup a text document from within Sublime and give you further instructions on it’s use.

Step 5) Restart Sublime once again and start editing your .js files with intel. ;)

Hope this helps!

Mobile Websites As Native Applications

Goal: Make a mobile DotNetNuke website into a native application for iPhone and Android using PhoneGap 2.9+.

Ways of Implementation:

1) Javascript local file that grabs the HTML from online and embeds it within a local webpage for the user to view. The plus side to this approach is client side cashing and less data usage on the users end. Yet the con’s is that the HTML grabbed online would have to include full URL’s to images, along with Javascript modified links to external websites.

2) Iframe on the local page. This is like having a mini web-browser that is full screen on the main HTML page. The pro’s of this solution is no need to update the local app when updating the site, because all changes persist. The con’s consist of dependence upon the way the browser renders iframes. It is pretty much hope based with as many versions of Android that are out there.

Considering the one day time limit and other contributing constraints I decided to go with route 2. This gave me the most flexibility along with not having to install a custom theme onto the DotNetNuke installation. If I want, I can at a later point in time; change the theme, along with adding some kind of mobile theme switcher module and not have to worry in the long run if I will need to push a local app update to the phones.

You are probably wondering how I was able to get away with just slapping PhoneGap onto the mobile website. Simple, the original theme we are using for our Multi-tennate website is responsive, therefore already appearing great on mobile phones. Combine that with the demographics of the application’s users; having a mobile app that mimic’s the website is very useful and reduces the learning curve for those classified as elderly using the application on their phones.

Just another look into a quick decision that I had to make in my life. Hope you enjoyed it.