Category Archives: ramblings

Anything that’s on my mind specifically before my idea is complete.

HackGT5

I had the honor of volunteering Georgia Tech’s HackGT5 on October 19 – 21. All I can say is Wow! This event has grown and grown throughout the years. I am always astonished as to all the different participants who are eager to participate in the event.

Buses were sent out throughout the southeast to different colleges, where anyone who is willing to code for 36 hours is welcome to board. Students came bringing their favorite blankeys and pillows ready to forge through the night.

The most impressive part of the hack-a-thon is the vast resources provided by HackGT. They built a RFID system to keep track of candidates visiting sponsor tables in order to provide quantitative data to those sponsors. They had a hardware lending table to lend out hardware such as VR-goggles and Alienware desktops. HackGT partnered with MLH, Major League Hacking, to provide even more hardware. Different web apps where available for participants to get the information they may need. Additionally there was a Slack channel for the event.

The event was divided into 4 major subjects Web Development, App Development, Artificial Intelligence, and Cybersecurity. There where GaTech mentors present and available to throw ideas around finding problems to solve and how to solve those problems. The sponsors got into it as well by holding brainstorming hours at their kiosks.

All hacking stopped at 9 am on Sunday OCT 21 and the winners where promptly announced. This left the afternoon for breakdown and some satisfaction dinners all around.

HackGT conduct several events throughout the year. To become a volunteer or a sponsor go to https://hack.gt/

 

Advertisements

What programming language should you learn first?

Javascript! Javacript! Javascript! You can really choose anything but if you are on the fence then let me just choose for you. I fought the choice for a long time and the lingering decision held back my learning. Instead of just jumping in and learning something. I will detail why this is a great language to start with.

  1. Simplicity. This programming language can be as easy as you’d like or as complex as you need it to be. It all depends on your use and depth. Keep it easy and make simple one page dashboards or get in there and use it to manipulate the DOM.
  2. It’s everywhere. Javascript can now be found throughout the entire stack. It is becoming a more prevalent choice for all kinds of projects. Most frameworks end up using Javascript for a lot of their front-end components like Rails, Django, or Laravel.
  3. Flexibility. Javascript has a lot of support from its community. There are packages for many uses like graphs, encryption, and Typescript.
  4. Why Not. Yes, why not. It is the base for Chrome, the most popular browser for some time now

Stop trying to decide and just code already.

What are the capabilities of MDM?

Which MDM strategy is best and why? Just like anything in life there is no black and white answer. It all depends on what best fits you at the time and what you are willing to put up with. Let’s get started.

Apple iOS. For a young and hip startup iOS seems like the obvious choice. Apple is always successful in making a very streamlined process in order to get business done. Apple’s process is streamlined because they limit the control of their devices from system administrators. Many system administrators will take an issue with this but when you implement Apple’s DEP and VPP a big load is taken off the system administrators. The process becomes almost seamless in most situations. More on DEP and VPP below.

Android. For a system administrator this seems like the obvious choice. Android is all about choice and customization and a system admin is going to want the choice to limit as many features as possible in a secure environment. Android is open about their services including allowing a third party to use their own cloud messaging service.

DEP, KNOX, AFW. When an organization provides mobile devices to their workforce it is common to use an enterprise solution on the devices. Apple has the Device Enrollment Program aka DEP, this allows a company to register the devices directly with Apple as they buy them from their provider. When the devices gets to the user, it is already enrolled into MDM. KNOX is an Samsung’s enterprise solution. It provides system administrators with their own console on Samsungs website to manage devices, however it limits some of the capabilities from your own MDM provider you may already paying for. Android for Work or AFW is Google’s solution for enterprise management. It is probably the easiest one to implement. It only requires a company Gmail account to be registered on the AFW website and then entered into the MDM console.

BYOD. Bring Your Own Device solution is great for very large organizations or just organizations who will allow users to use their own phone with their network. There is a disconnect between marketing and its function, as there usually is when it comes to marketing. The solution is marketed as if there exists two separate OS’s on the device, one for work and a separate one for personal use. It is nice to see this separation, it is not always functional. Also this separation does exist virtually when there is only “one” OS on the device and it is more functional for the user. Any app pushed from MDM is managed and therefor exists independent of personal apps. If MDM is removed the managed apps will also be removed. There is even a policy to prevent data from leaking to a non-managed or personal app.

Device capabilities change with every new version of a device and OS updates. As well as the implementation of these new enterprise solutions. What solution do you have experience with? What is your favorite solution? What choice would you make if you could start from scratch?

What is Mobile Device Management (MDM)?

Let’s talk about Mobile Device Management (MDM), a software that allows taking control of portable devices. Once under management, an administrator can enforce rules for those devices to abide by. These rules, or policies, can include a passcode, restrictions, apps, email, and much more.

What does MDM consider a mobile device? The easy ones to reference are iPhones, iPads, Android phones, and tablets, but what about a mobile printer, laptops, scanners, iWatch, drones…? In order for a mobile device to be able to be managed by MDM software, the manufacturer has to make the device’s features available for MDM. So this definition is constantly changing, as devices become more popular for use in our daily personal and business lives, manufacturers are enabling more toes of devices and features. IoT is coming and I am sure these ubiquitous devices will be quickly added to the list.

Different companies have different ways of referring to their MDM program such as Enterprise Mobility Management (EMM) or End User Computing (EUC), but no matter what you call it, the rules are limited to what the manufacturer makes available on their devices as well as what the MDM provider enables on their admin console. Therefore it is important for the MDM provider to have a close relationship with the manufacturers so they can keep up with these features as they are made available or removed.

Big decisions that will affect your MDM capabilities are choosing the types of devices allowed for your organization, most popular are Android vs iOS, type of enrollment Enterprise vs BYOD. Additionally a specific manufacturer like Samsung offers more options for MDM as well as more enterprise focused solutions

The entire suite of capabilities that encompass MDM can be broken down into the following:

MDM: device policies such as disabling the camera, buttons, or settings access.

MEM: Mobile Email Management – enterprise email capabilities.

MAM: Mobile Application Management – delivering apps to the devices.

MCM: Mobile Content Management – delivering secure files from a drive or directory.

I will write another article diving into each section at a later time.

It is important to note what MDM is not. It is not a GPS tracker, telecom collection tool, or AD group policy compliant. MDM can do some of these aspects but there are caveats to each feature. There is a trend moving toward an AD group like management. Some of the most popular providers include VMware UEM(aka AirWatch), IBM MaaS360, Mobile Iron, Citrix XenMobile, and Good Technology.

Let me know your thoughts regarding MDM in the comments below.

2014 Complete Guide to Installing Ruby 2.0 and Rails 4.1 on Windows

If you are trying to dive head first into web development and don’t know where to start… STOP. Ruby on Rails is an excellent fun way to learn that will show you how to use the MVC architecture. Now there can be no excuses because here are the instructions on how to install Ruby 2.0 using your Windows machine.

THIS GUIDE IS INTENDED TO FACILITATE THE FORKING OF THE STREAMLINERS PROJECT https://github.com/rsaez/streamliners BUT CAN BE USED BY ALL.

INSTALLING RUBY AND THE RAILS GEM

1. Download and install Ruby 2.0 from (http://rubyinstaller.org/downloads/)

2. Download the corresponding development kit from (http://rubyinstaller.org/downloads/)
a. Extract it to a permanent directory, for example say “C:/Ruby200/devkit”

3. Open a command prompt, change directory to “C:/Ruby200/devkit”, and type the command “ruby dk.rb init”
a. This creates the file “config.yml”, be sure it has the directory that holds ruby, the last line   should be: “- C:/Ruby200”.

4. At the command prompt, the next command is “ruby dk.rb install”

5. At the command prompt, the next command is “gem install rails”

Now you have the Ruby language installed along with the Rails gem. Next install SQLite3

SQLITE3(from http://rubyonwindowsguides.github.io/book/ch02-05.html)

1. Download SQLite source code from http://sqlite.org/2014/sqlite-autoconf-3080600.tar.gz

2. Extract to C:\ruby200\devkit\sqlite-autoconf-3080600

3. Add devkit to the path
  a. At cmd prompt, cd to C:\ruby200\devkit\sqlite-autoconf-3080600
  b. type the command “c:\ruby200\devkit\devkitvars.bat”

4. Start a MSYS shell
  a. At cmd prompt C:\ruby200\devkit\sqlite-autoconf-3080600> sh

5. Configure SQLite3
  a. At MSYS shell sh-3.1$ ./configure CFLAGS=”-DSQLITE_ENABLE_COLUMN_METADATA”

6. Build SQLite3
  a. sh-3.1$ make

7. Let us build the SQLite GEM
  a. Go to SQLite gem directory C:\ruby200\lib\gems\2.0.0\gems\sqlite3-1.3.9
  b. Enter the cmd: ruby setup.rb config — –with-sqlite3-include=c:\ruby200\devkit\sqlite-autoconf- 3080600 -with-sqlite3-lib=c:\ruby200\devkit\sqlite-autoconf-3080600\.libs
  c. Enter the cmd: ruby setup.rb setup

8. Update specifications directory
  a. Go to directory c:\ruby200\lib\ruby\gems\2.0.0\cache
  b. Enter the cmd: ruby spec sqlite3-1.3.9.gem –ruby > ..\specifications\sqlite3-1.3.9.gemspec
  c. Enter the cmd: gem list (you should now see sqlite3 on the list)

9. Copy the “”sqlite_native.so” from C:\Ruby200\lib\ruby\gems\2.0.0\gems\sqlite3-1.3.9\ext\sqlite3 to C:\Ruby200\lib\ruby\gems\2.0.0\gems\sqlite3-1.3.9\lib

GEM FILE (for windows only)

1. open Gemfile.lock

2. delete “sqlite (3.0.1-x86-mingw32)” and “bcrypt-ruby (3.0.1-x86-mingw32)”

gem install bcrypt-ruby –platform=ruby –no-ri –no-rdoc

3. Any gem with -x86-mingw32 will not install properly using bundle install, beware the -x86-mingw32 will come back when you run a bundle update. This means to try not to run a bundle update and if you do after every time you run it you will have to repeats steps 1 and 2.

INSTALL SUBLIME(Or your favorite editor)
1. Download Sublime text editor from (http://www.sublimetext.com/3)

2. doskey subl=”C:\Program Files\Sublime Text 2\sublime_text.exe” $*

INSTALL GIT

INSTALL HEROKU