Looking for an Internship?

February 21, 2013 — 2 Comments

I’ve been looking at the possibility of getting an internship this summer, and in the process I have built up a large list of possibilities. I decided I would try to compile some of these so other Computer Science majors may find it easier to land an internship this summer.

*Note – Many of these are big companies and/or well-known startups. Get your resume and/or website in shape before you consider applying. I also recommend building up several of the following.

Recommend Social Websites

  1. Twitter – Forget Facebook. If you’re looking to build social connections, Twitter is the way to go since most tech people use it to conversate. Twitter is also the way I got my job.
  2. Github – Github is quickly becoming the way to get noticed online for programmers. Sure, maybe you don’t have any good ideas that you want to publish. Well, in that case, find something you love, fork it, and contribute. No excuses. Looking for something to fork? Check out my latest project.
  3. LinkedIn – I love LinkedIn because it acts as a central place to put all of my work history and certifications for others to see.
  4. Stack Overflow – As most of you probably know, Stack Overflow is a great place to get your coding questions answered. As a matter of fact, I got my implementation of the Haversine formula from there! But, if you decide to start answering questions, you can build ‘reputation’ that looks good to potential employers. This is one thing that Jorin mentioned.
  5. CoderbitsCoderbits is a great way to show potential employers a snapshot of your programming skills. It creates graphs and gives you badges for certain achievements, essentially gamifying the process of learning to develop.

The List of Internships

  1. Made In New York – List of ~500 Internet companies based in NYC. Many are hiring.
  2. Google
  3. Amazon
  4. Yahoo
  5. Microsoft
  6. Southwest Airlines
  7. CGI

Want to Add to this List?

If you know of an internship for Computer Science students, feel free to leave a comment below and I will add it to the list. If you’re an employer and have some advice programmers, please contact me or leave a comment with your input.

I work on some servers at my University. Recently our RAID server went out, which means that we could potentially lose all student and professor data across several of our servers. I was tasked with getting some sort of backup going from our main servers to a local backup server.

After thinking about how to approach the problem, Dr. Awesome (Terry Griffin) and I decided that Rsync would be a good way to go, at least until we could get another RAID server.

The Command

Here is the command that I used:

sudo rsync -arv -e "ssh" --rsync-path="sudo rsync" user@host:/home /backup

The Command Explained

Note that I am using sudo on both the local server and remote server. You will need to be in the sudoers file on both machines to use this command. Sudo let’s you run a command as the super user, which essentially means you are awesome and can do anything.

Next, we have rsync with some options. The rysync command is what is used when you want to do a remote sync. Then the options are explained as follows:

  • a = Archive – This creates a tar of the directory that you want to backup, which allows you to keep permissions, times, etc. in sync.
  • r = Recursive – This option will allow the rsync to copy throughout the target directory.
  • v = Verbose – This option will print give you updates on the screen as the rsync command runs.

Other Notes

You can be more specific about what is copied by deciding to put a “/” at the end of a directory or not.

For example, if you a “/” at the end of the source directory, then rsync will copy the content of that folder. If you don’t put a “/” at the end of the source directory, rsync will copy the source directory and its contents.

If you put a “/” at the end of the destination directory, rsync will paste the contents into that directory. When you don’t use “/”, rsync will create a directory and paste the contents within that directory.

Gravity Forms Review

April 30, 2012 — 3 Comments

Gravity Forms is form building plugin that simplifies the task of building attractive interactive forms for your WordPress websites. Sure, if you’re just looking for some basic contact form functionality, then there are several great contact form plugins out there for $0. But, if you’re looking for a contact form plugin that has extra features, such as:

  • Submissions stored and viewable on WordPress Backend
  • Multi-page forms
  • Post Field
  • Advanced fields for Name, Email, Address, etc.
  • Drag-and-Drop form creation
  • Create dynamic notifications using merge tags
  • Ability to add custom logic through hooks
  • Conditional logic to hide or show fields
  • and MUCH MORE!

I can imagine and have seen or personally used Gravity forms to create:

  • A quiz that would send a custom notification to the user based on the answers that were given.
  • A multi-page application form that lets the user know how far they are in to the application process.
  • A small e-commerce store that sells products, collects payment, and then delivers product

Now that you’re acquainted with some of the features of Gravity Forms, let me run you through the backend so you can see for yourself how easy and intuitive it is to create your own custom forms. This plugin really is a time-saving beast!

Gravity Forms form builder

Gravity Forms form builder

Above is a picture of the form builder within gravity forms. This is one of gravity forms biggest selling points, and why I recommend it so highly in this review. If you manage multiple websites or multiple forms on one website, then this is going to be a killer time-saving feature. You can simply click each box, the box will slide down with some extra options, and then you can choose between these options which include things such as custom logic, required field, or values.

Gravity Forms Notifications

Gravity Forms Notifications

Above is a screenshot of the gravity forms notifications builder. The notification builder allows you to create custom emails that are sent to either the website admin (or other appropriate persons) or the person who submitted the form. By customizing a submission notification we were able to create a quiz with a dynamic email that depended on what the user submitted in his questionnaire. Try doing that with a free plugin…

On top of some of these obvious features, gravity forms also allows you to advanced logic through accessing hooks and filters. An example of this would be to access the pre_submission hook in order to compute some response based on the user’s input. Another example would be writing some custom code to interface gravity forms with a 3rd-party service. This really expands gravity form’s functionality by essentially allowing you the ability to manipulate the submitted data however you need.

Bottom Line

It took a while for me to bite the bullet and drop the $199 for a developer’s license of Gravity Forms. But looking back, I am glad that I did. In the past few months alone I have used Gravity Forms on several websites, and have saved tons of time over having to write custom code from scratch. If you run any serious WordPress website, I highly recommend you get Gravity Forms.

Inserting Google Maps into a website is CRAZY easy! Usually what I would advise someone to do is to:

  1. Go to Google Maps
  2. Search for the address that you want to show on your map
  3. Grab the embed code
  4. Insert embed code in your website

Could it get any easier? Well, that really depends on what your development needs are. I recently completed a project for a client that owned a mobile BBQ restaurant. This client wanted a map on his website that he could easily update with the location of his mobile smoking pit. I didn’t think it made much sense to make the client do the 4 steps above just to update his map… So I decided to look into Geocoding a google map. This way, all my client had to do to update his map was to login and change the address.

For those that do not know, geocoding is essentially the process of taking an address and turning that into latitude and longitude coordinates. Google maps has geocoding baked in – FOR FREE!

Without further ado, below is some code on using geocoding with Google Maps.

This code goes in the head.

<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>

This code can go anywhere in the body.

<div id="map" style="width: 413px; height: 300px;"></div>
<script type="text/javascript">

   var mapOptions = {
       zoom: 16,
      center: new google.maps.LatLng(54.00, -3.00),
      mapTypeId: google.maps.MapTypeId.ROADMAP
   };

   var geocoder = new google.maps.Geocoder();

   var address = '3410 Taft Blvd  Wichita Falls, TX 76308';

  geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });

var map = new google.maps.Map(document.getElementById("map"), mapOptions);
   </script>

You can update the size of the map by changing the width and height values of the #map div. To change the starting zoom level, change zoom. You can change the type of map by changing mapTypeId. And most importantly, you can change the address by changing the value in var address.

You should be able to plug this code in to your website and be good to go. This code will take the address in var address, Geocode it using Google, and then center the map with a marker at the address specified.

This is a fairly simple example of Geocoding, but you could take this code and make a map that will dynamically update with user input. In a future post, I will discuss how to integrate Geocoding into WordPress so that you can easily create and edit maps without having to get latitude and longitude coordinates.

While working on the iMustangs project, we decided that it would be a good idea to include the school fight song. I’m sure we could have found a way to play a .mp3 file, but we decided that it would be best to create a video so that we could display our university logo. What follows is the result of our work in using UIWebView on iOS.

First Attempt

Our first attempt was very light on code and pretty simple. I’d like to show this to you by running through a test project. In Xcode, go ahead and start a new single-view application.

Navigate to the Storyboard in your project. Once you are here, add a web view on top of the current view. Go ahead and stretch the web view to fill the view below. Now, let’s go ahead and connect the web view.

I like to use the assistant editor when I connect UIWebViews and other objects to outlets and actions. Click the assistant editor button near the top right of Xcode (I am currently using 4.3.1). The assistant editor will show the storyboard beside your class, so that you can easily connect an object to a specific line of code in your .h file.

Once you’re in assistant editor mode, click the UIWebView and drag it to just below @interface. Let go.

At this point another dialog should’ve popped that is asking you to name your UIWebView. Go ahead and name it webView (be sure to use correct case).

uiWebViewScreenShot

Screenshot of naming the UIWebView

Now, navigate to your ViewController.m file and paste the following code within the viewDidLoad function. You may replace the url with one of your own.

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.youtube.com/embed/XeIKnBDN4To"]]];

At this point, you should be able to run this project in a simulator and see an MSU youtube video, or whatever URL you substituted. This worked fine for us, until we put it on an actual iPhone… Continue Reading…

Series

This is part 2 of a 2-part series on how to create custom overlays for the MapKit framework on iOS. View part 1 of this series here.

Creating Custom Overlay in iOS

Everything we have done up to this point has been to create the tiles we will use in our project. Now that we have created those tiles, we need to add them to our project.

For this, we will use a sample project from Apple called Tile Map. I have a working iOS project that uses custom overlay at Github. We are going to copy a few classes from this project, so go ahead and grab the zip-ball and open it in Xcode.

You will need to copy the following files into your own project:

  • TileOverlay.h
  • TileOverlay.m
  • TileOverlayView.h
  • TileOVerlayView.m

TileMap Project Screenshot

Be sure to select the box to “Copy items into destination group’s folder.” At this point I am going to assume that you have already created a View Controller for your map. If not, go ahead and create one. In the .m (implementation) file of your map View Controller, we are going to import the TileOverlay.h and TileOverlayView.h files. Your map View Controller should now look something like this:

Continue Reading…

I am part of a team developing an iPhone app for Midwestern State University. I am particularly responsible for developing the map that we are going to use for the app. Because I had a lot of detail I wanted to show on our map – Faculty/Commuter/Resident Parking Lots,  labels for different buildings, key points of interest on campus – I began to look into using custom overlays, a large image laid of top of the Google map tiles.

One of the issues I ran into was a lack of good information on how to integrate custom overlays into an existing iOS project. What follows is the process used to create and integrate custom overlays into an existing iOS app.

Create Overlay Image

I knew from the beginning that I would need some graphic of Midwestern State University to serve as a foundation for me to build my overlay image. To get the background image, I:

  • Went go Google Maps
  • Grabbed the embed code for the location I wanted
  • Created a quick HTML document with the embed code in it
  • I changed the size of the iframe to about 4,000 px by 4,000 px
  • I used a plugin for Google Chrome browser that took a screenshot of the entire page

This gave me a background image that I could put into Photoshop and then build upon. I used 300 PPI and set my image size to about 3,000 px by 4,000 px. With a smaller image size or lower resolution I noticed that I had very jagged edges. You can tweak these image settings to your project.

Start building your overlay on top of this background image. When you have an overlay image that you are happy with, hide the background, and export your image. I exported my image as a PNG-24 since I had large amounts of blank area on the image.

Find the Corner Coordinates

The best way I found to match the corner pixels of the image to coordinates is to:
Continue Reading…