Blog

Creating an API FAST with Slim Framework

May 17, 2016 | By | No Comments

We develop API’s very regularly at 14 Oranges, being that almost every app we have developed requires some sort of back end data source. Developing an API is really not a difficult process but there are lots of little things to consider and building one from scratch is just not always the best use of your time. We do about 90% of our server side development in php and have over the past 15 years done everything from creating our own frameworks to using popular frameworks like Cake, laravel, symfony, zend and codeigniter. But up until this week I had always ignored Slim framework. I figured if I didn’t need all the bells and whistles on a project offered by a full featured framework, I would be better just going to my own toolset.

Andrew, one of our developers, mentioned recently he was using Slim for an api related project, so when I had to develop a really quick proof of concept for a client recently, I figured I would take the time to try it out and I thought I would put some notes down for other developers that might be curious. I ended up turning it into a presentation for our company and decided to share my findings here in this post.

I figured I would jump right in and install it, then look at a few examples, write some code and get it working before reading the documentation. I know, I know, RTFM, and I do … eventually. But I am a quick study and manuals more often than not put me to sleep.

My shortcut in this case paid off. I hadn’t gotten to reading the manual yet and my API was working as intended.. So I guess what I am saying is learning curve on Slim is really low.

I began by installing it via composer. You will have to have php installed first to complete this.

On my mac I created a new directory, opened up terminal and navigated to that directory and simply installed composer with this command.

curl -s https://getcomposer.org/installer | php

There are a couple routes to take next. You could install just the Slim framework and go from there or you could start with the slim-skeleton which basically does some of the initial setup for you and points you in the right direction. I went with the basic install but in retrospect I think installing the skeleton would be a better option.

I created my composer.json file containing the following:

{
   "require": {
     "slim/slim": "^3.0"
   }
 }

Lastly installed via composer with:

php composer.phar install

There you have it … took about 1 minute.

I created my index.php file and added some rewrite rules to ensure all requests were routed to this file in an .htaccess file. Lots of tutorials out there on how to do this so I will skip it. Inside the index.php file I had to require the autoload.php file that the Slim installation created, instantiate Slim and get going on my routing. Here is what that looks like.

<?php
 use \Psr\Http\Message\ServerRequestInterface as Request;
 use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';

The Slim Framework’s router is built on top of the nikic/fastroute component, and its fast and easy to use. Here is what my index.php file ended up looking like with my first route defined, a base route basically just saying you need to authenticate.

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';

$app = new \Slim\App;
 
$app->any('/', function (Request $request, Response $response) {
   $response->getBody()
   ->write("Welcome to the API. Please authenticate.")
   ->withHeader(''Content-type', 'application/json');
   return $response;
 });

 $app->run();
?>

The use statements at the top of the script are bringing the Request and Response classes in. Slim framework now supports PSR-7, a PHP standard for HTTP messaging. We then setup $app to contain an instance of Slim and add a route. When adding a route to a Slim application you can choose an HTTP request method (POST, GET, PUT, OPTIONS, PATCH, DELETE) or as I have done in this case you can allow the listener to accept requests with any HTTP method.

Every HTTP request has a method that is typically one of:

OPTIONS – a request for information about the communication options available on the request/response chain identified by the Request-URI.

GET – retrieve whatever information (in the form of an entity) is identified by the Request-URI.

HEAD – identical to GET except that the server MUST NOT return a message-body in the response.

POST – used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI

PUT – requests that the enclosed entity be stored under the supplied Request-URI.

DELETE – requests that the origin server delete the resource identified by the Request-URI

PATCH – requests that the items in the enclosed entity be stored under the supplied Request-URI (not a wholesale update).

SLIM implements each of these methods and allows you to create your own custom methods as well. The methods are not strictly enforced by SLIM so you can work with them as you see fit. You could really throw the other devs for a loop by returning error code 69 on HEAD but I really would not recommend that.

The second parameter for the route method is the callback function which is being passed the PSR-7 request and response objects. A route can look at the request and manipulate the response as required then return the response. Once all of the logic and business stuff is done you run the $app and away we go.

So in about 5 minutes of coding we have our api’s first endpoint operational. Any request to the base url of our API will respond with a 200 HTTP status (default in Slim) with a JSON content type and a response body of ‘Welcome to the API. Please authenticate.’.

Obviously the API the way it stands now is not overly useful but all we have to do is add our routes corresponding to the endpoints of our API and we will have the job done. So here is a full API implementing a really simple Authentication endpoint. Obviously this is not something I would use in the real world but it is a great example of how fast and easy Slim is to use.

<?php
 // INCLUDING THE PSR 7 REQUEST AND RESPONSE CLASSES
 use \Psr\Http\Message\ServerRequestInterface as Request;
 use \Psr\Http\Message\ResponseInterface as Response;
 
 // AUTOLOAD UP SLIM
 require '../vendor/autoload.php';
 
$app = new \Slim\App;

 // DEFINE AN AUTH ENDPOINT ACCESSIBLE VIA POST REQUESTS
 $app->post('/auth/',function (Request $request, Response $response) {
   $allPostVars = $request->getParsedBody();
   if($allPostVars['username'] !== "shane@14oranges.com" || $allPostVars['password'] !==password_hash("superSecretPassword")) {
     $app->halt(403, 'Invalid Credentials.');
   }else {
     $token = password_hash ('SuperSecretToken');
     echo json_encode(array("status" => "success", "code" => 1, "token" => $token, "message"=> "App API Success" ));
   }
 });

// DEFINE A TICKETS ENDPOINT AVAILABLE VIA GET
 $app->get('/tickets', function (Request $request, Response $response) {
   if($token !== password_hash ('14Oranges')) {
     $app->halt(403, 'Invalid Token.');
   } else {
      $mapper = new TicketMapper($this->db);
      $tickets = $mapper->getTickets();
     $response->getBody()->write(var_export($tickets, true));
     return $response;
   }
 });
 $app->run();
 ?>

So there you have it. An Auth endpoint listening for username/passwordhash returning a token on success. A tickets endpoint sending back a list of tickets and verifying a valid token. All said and done very quickly. There are lots of useful features that I haven’t illustrated here but the documentation is good and the community is also pretty active so you can pretty easily find the answer you need.

Lots of handy helpers

Slim comes with a bunch of helper methods as well. Pretty self explanatory and easy to use. Here are a few examples.

$headers = $request->getHeaders();

$headerValueArray = $request->getHeader(‘Accept’);

$contentType = $request->getContentType();

$mediaType = $request->getMediaType();

$charset = $request->getContentCharset();

$length = $request->getContentLength();

$parsedBody = $request->getParsedBody();

$body = $request->getBody();

 

My Findings

Slim is small, fast and easy to use. I would definitely recommend trying it out if you are developing an api. Keep in mind that Slim takes a barebones approach to development, though. The routing is basic yet functional, but relies on the developer being able to extend it. The Slim team realize this, and have made it easy to do so, notably with middleware and their use of Dependency Injection.

Templating is available too. Slim ships with support for Twig and PHP-View, but there are many other options as well. There are some very useful organizational tools such as route hierarchy and groupings allowing you to keep a complex API well organized.

I am not about to get Slim Framework tattooed across my back at this point but I know a few guys that might!.image00

Sylvain Marcotte reveals the origin of the name 14 Oranges

May 17, 2016 | By | No Comments

Evolution 107.9

Evolution 107.9

Mike Turcotte from the British Columbia Institute of Technologies’ (BCIT) radio station Evolution 107.9 interviews 14 Oranges CEO Sylvain Marcotte on his experience in the mobile application development industry. Sylvain shares insights for students, the growth taking place in the industry and also reveals the origin of our firm’s name, 14 Oranges!

Listen to the interview here on Soundcloud, and download the Evolution 107.9 mobile apps for Android and Apple to stay on top of the latest BCIT news, provided by 14 Oranges!

26 Apr

John Craig

Carrots: Free Mobile App Icon Generation Tool

April 26, 2016 | By |

Carrots icon

If you have found this blog post, you are likely well acquainted with the painful step of generating all the required different sized graphics files for your mobile app icon before you submit your app to the Apple iTunes or Google Play stores. Maybe you were a patient, saintly soul who had been leveraging Preview or Photoshop to resize your 1024×1024 icon file but forgot one to many times to name it with the right @2 or @3 extension, and have finally lost your mind. You are also likely well versed in the mercurial decisions by Apple to change certain icon sizes by 3 pixels or, add new one like they did when they released the Apple Watch. Well fear no more, we have felt your pain and suffering and have your solution, it is the 14 Oranges Free Carrots Icon Generator

bugsbunnyteeoff09p

With Carrots (we were feeling botanically enlightened when we came up with the name), you can simply drop one square 1024×1024 image into the Carrots tool and it will generate all the images for you with the correct dimensions and names. We even tossed in the Android graphics for all the cross-platform developers out there.

Here are the steps:

1) Visit carrots.14oranges.com

2) Select the platforms you want the images for (Apple, Android, Apple Watch)

3) Drop your 1024×1024 image in the drop area (or click the upload button if you prefer old school)

Screen Shot 2016-04-26 at 3.25.31 PM

4) Wait for the image to upload

5) Click one of the Download Zip buttons to download a zip file of the resulting files or click the download button for only the files you want to have

Screen Shot 2016-04-26 at 3.26.58 PM

6) Import them into Xcode or Android Studio

7) Huzzah! (to borrow someone’s else expression)

PS. If you see any new file sizes that we forgot about, feel free to drop us a line at support@14oranges.com and we will add the extra size.

20 Apr

John Craig

Hedge Connection Launches Audience Voting Mobile App for Fund Manager Pitch Event

April 20, 2016 | By |

 Screen Shot 2016-04-20 at 2.33.05 PMScreen Shot 2016-04-18 at 6.32.43 PM

Hedge Connection, the patented marketing platform for hedge funds, has announced the release of their audience voting mobile app for their annual Deal Ring event, which was most recently held on March 16, 2016 in Chicago. The apps and event website were developed by 14 Oranges for Hedge Connection, and allowed the audience to vote in real-time on fund manager pitch sessions during the event.

Today, Hedge Connection is announcing the release of their Deal Ring event app for iOS and Android. Deal Ring is a Shark Tank style event where fund managers pitch to a panel of hedge fund investors, called Ringmasters, before a live audience. The app allows the audience, also made up of investment professionals, to participate in judging the fund manager pitches.

The website and audience voting apps feature an easy to navigate design that worked in real-time to provide both a voting interface and a voting results display for all the attendees at the event. Based on the audience and Ringmaster feedback, the managers would land a meeting with a Ringmaster to discuss a potential allocation in their fund.

The mobile apps and website were developed by 14 Oranges, one of the leading custom web and mobile application development firms in the the Pacific Northwest. Based in Vancouver, BC, 14 Oranges is known for its custom app development work across a broad spectrum of event, retail, government and telecom customers, including the Blo Dry Bar, the Jim Pattison Broadcast Group and the BC Safety Authority.

“We were looking for a mobile app solution that we could tie into this unique event format,” said Rob Arthurs, Co-Founder at Hedge Connection. “14 Oranges was able to provide their audience voting app in a timely fashion, and it helped to make our event very engaging for our attendees.”

“Our experience in developing data-capture and reporting solutions for our customers allowed us to roll out the required solution quickly and efficiently,” explained Shane Todhunter, Vice President of Business Development with 14 Oranges. “We applaud Hedge Connection’s vision to engage their event audience through their mobile app.”

18 Apr

John Craig

4 tips for effectively marketing your new mobile app

April 18, 2016 | By |

pigUsingApp

When it comes to bacon and eggs they say the chicken is involved, but the pig is committed.  When it comes to releasing mobile apps, the development of the app is involvement, but the marketing of the app is where you truly commit to your audience.

Put plainly, if you think your target audience will find your mobile app with no prompting on your part, you will be disappointed with the download results. Our experience has shown that not marketing your app will create a very low, straight line download rate.  Basically you are relying on your audience to discover the app on their own. While both Apple and Google are good at presenting your app for download, unless you have some timely, culturally significant content you will not get their attention to feature your mobile app in their app stores.  However, there are a number of both free and paid ways to effectively market your mobile app to your target audience, and better yet, measure the success of your campaign.

1)         You are your best advocate: App download pop-ups on your website.

By now you have surely noticed that more and more of your target audience has been connecting with your website from their mobile devices.  This may even have been your statistical justification for having a mobile app built.  With the addition of a very simple, pop-up on your website you can re-direct incoming visitors to download your newly minted mobile app.   

Links and advertisement on the front page of your website are also effective, but nothing grabs the attention of mobile users like an option to opt out of the mobile website and download an app.

2)         Social media marketing: The Freemium approach

That intern in the corner churning out click-bait?  Get them in the routine of posting that you have a mobile app to download!  Your social media following, if it is engaged in what you are posting, will take to this message quickly.  But remember, you can’t get away with posting once in the social media world.  Your posts are now getting buried in your target audience’s social media feeds, so it’s critical to re-post the app’s availability on a routine basis, and even think about paying to boost your posts.  Now, if you followed tip #1, all your social media posts that connect back to your website will also lead to the app being advertised immediately to your mobile users.   Think of this as the tag team of free digital marketing app techniques.

3)         Performance advertising: Targeted and measurable

Facebook and Google, as was pointed out by Gabe Laydon, the CEO of Machine Zone (Must watch interview) are performance marketing firms. They get paid to position ads to your target audience. Make use of these ads and position yourself against the right keywords and demographics.  TV and radio have proven to be effective ways of marketing, but as Gabe shares, try exhausting digital advertising before spending on these traditional media. Even if the numbers seem low at first, digital at least gives you an accurate measure of what your audience is clicking on versus the Hail Mary marketing approach still embraced by traditional broadcast media.

4)         Display advertising: Be seen where it counts

When your content is targeted to an audience sitting in a doctor’s office or standing in a bus shelter, why not just use a poster to ask them download your app?  While digital advertising is tightly targeted, it is constrained to the online world, and display advertising offers additional value based on the location context of the display which helps to trigger the desire to download an app. By using a vanity URL or even a QR code, you can easily extract a further digital measurement on the success of the display ad campaign.

In all the cases above, you will be able to benefit from a digital measure of your campaign’s success to get your mobile app downloaded.  So go on, be a pig, and commit to putting the best mobile app download marketing practices into your release plan!

Oink!

14 Oranges Brings Its Mobile App Software Development Expertise to Ottawa and Halifax

April 14, 2016 | By |

14 Oranges today announced it is expanding its North American market coverage for custom mobile app software development beyond the west coast to Ottawa and Halifax. This move is timed with the hiring of John Craig as its new VP of Sales and Marketing, tasked with growing the organization’s sales across North America.


 

14 Oranges is today announcing the North American market expansion of its mobile application development businesses with the launch of sales offices in both Ottawa and Halifax. Having already established a market leading position and solid reputation for delivery in Vancouver and the north western United States, this move provides customers with two eastern touch points for the company, as well as future access to the world-class software engineering talent that both towns are known for.

“Ottawa and Halifax, both important government towns, are also hub towns for Canadian technology with strong historical ties to trade with United States,” said Sylvain Marcotte, CEO of 14 Oranges. “This expansion will help us to continue to grow our firm and position us to deliver on our next-generation of services to the largest population centers in the US and Canada.”

14 Oranges is also formally announcing the hiring of its new VP of Sales and Marketing, John Craig. Craig, an industry veteran with entrepreneurial experience in the development, deployment and delivery of mobile applications, has joined 14 Oranges to drive the expansion of 14 Oranges North American sales and establish a deeper position with both its traditional telecommunications clients and the next generation of mobile workforce solutions for both the private and public sector.

“14 Oranges has the critical mobile application development DNA needed to build the next generation of mobile telecom and mobile worker applications,” said Craig. “I am glad to be a part of expanding this team’s footprint to Halifax and Ottawa, as well as the prospects of continuing to contribute to the ongoing growth of entrepreneurism and technology across Canada.”

Victoria Lennox, the CEO of Startup Canada, also welcomed the expansion of 14 Oranges across Canada, “This is a great example of a firm with regional success expanding to provide pan-Canadian opportunity, and we too are hugely supportive of 14 Oranges as they expand to offer services across Canada.”

Melody Pardoe, the COO Volta Labs who provide co-working space to 14 Oranges in Halifax added, “Volta is happy to support small business expansion into the Atlantic region. It’s great to see 14 Oranges expand across the country and join the tech community in Nova Scotia.”

12 Apr

John Craig

4 ways to spring clean your mobile app

April 12, 2016 | By |

 

Spring has sprung, and the maple syrup is flowing, but your app’s downloads have slowed to a trickle. Negative comments are piling up in the app store. Bug reports have started to come in on crashes against the latest devices and mobile operating systems releases. Are you on the hotseat? Here’s what you need to do.

1) Re-energize your application advertising

spring-cleaning-860x350

Nothing contributes more to poor download results for an application than a lack of advertising. It’s important that you not only use digital media channels to highlight your app, such as websites, digital ads and social media channels, but also traditional channels, such as posters, bus advertisements, radio and tv advertisements.  With mobile enabled content, think about where your target audience is, and make it available there. Bus and subway ads are great for capturing people’s attention when they are on their phones with nothing to do.

2) Submit a re-freshed application to the app stores

mobile-apps-to-help-you-spring-cleaning-your-home

New devices and operating system features have launched into the app ecosystems over the past 2 years. Wearables now allow users to receive push notifications and control the app on their wrists. There is also the option of porting your application to the Apple TV, Google TV or Amazon Fire, opening the potential of displaying your content to the largest screen in the home. User interface specs on all supported devices have also evolved and keeping in sync with the latest graphics resolution requirements has an impact on how your app is perceived and used. Submitting a refreshed application will bring your app back up to grade and keep you in style!

3) Re-evaluate why your content is being delivered in a mobile app format

spring-cleaning

The key question to ask is if your app audience needs access to the information presented in the mobile app when they are on-the-go everyday. This is highly likely if your app was developed to present location-enabled content and if your audience appreciates push notifications alerting them to the latest changes in that content. If this isn’t the case, a mobile optimized website might be the more appropriate way of presenting your content to mobile users. If your content doesn’t leverage the GPS and push notification capabilities of the native app platforms, a mobile app may be overkill for your mobile engagement needs.

4) Make sure all your content is up to date

kidsrainboots580

The number one negative issue for app users is that content is not refreshed in their apps frequently enough.  This can quickly cause app downloads to fall off and drive negative app store comments. There are a number of ways to keep your application’s content up to date.  Hybrid app technologies can link mobile optimized pages or RSS feeds from your website into your own mobile application to keep your app current. The only issue technology can’t help you with, is making sure the content is correct and that you continue to upload new content frequently!

Content, marketing and keeping the app fresh against the latest devices and graphic specs will always keep your app at the forefront with your audience.  Take these spring cleaning tips to heart and spruce up your app before the summer.  

 

30 Mar

John Craig

The Zone @ 91-3 Launches the First Apple TV App for a Canadian FM Radio Station

March 30, 2016 | By |

IMG_2109

14 Oranges today released the first Apple TV application for an FM radio station in Canada on behalf of The Zone @ 91-3, the Jim Pattison Broadcast Group’s alternative and modern rock radio station based in Victoria, B.C. The app downloads onto 4th generation Apple TV devices and shows album cover graphics for the artist playing on the channel, as well as their latest social media posts.

14 Oranges today announced the launch of the first Apple TV application for a Canadian radio station. The Zone @ 91-3 application, which is already available for both Apple andAndroid smartphones, now adds support for 4th generation Apple TV devices. Listeners can download the application through the App Store from the Apple TV menu.

The application goes beyond the listening capabilities already provided by current cable TV services supporting local radio by adding both album cover art and social media posts from the band currently playing on the station.

“This app lets us bypass subscription services to bring our music and personality to devices at the centre of every home,” said John Shields, Senior Programming Manager of The Zone @ 91-3. “It will allow us to continue bringing our unique brand of radio to our listeners on all sorts of next-generation devices, in Victoria or around the world.”

The application is the first generation iteration of the application, and will be enhanced as use of the application increases. “14 Oranges has been proactive in delivering the next generation of digital engagement tools for our listeners; and have consistently kept us on top of the latest technology innovations,” added Shields.

“Enriched media playback capabilities are bringing the radio experience to a whole new generation of digital users and continuing the engage the generation who grew up listening to the radio in their home,” said Sylvain Marcotte, CEO of 14 Oranges. “We are proud to help radio evolve onto the next generation of digital devices.”

Mobile Apps for the DIY crowd

March 28, 2016 | By |

I’m no professional contractor but I am a pretty handy guy. I learned the art of bubblegum and duct tape from my old man and Red Green, but have learned the ways of ‘Making it Right’ from a healthy dose of HGTV. I think I’m smart enough to call in the pros when I’m in over my head, but I’m definitely comfortable with general framing and finishing work. Last year my wife and I decided that our kids have shared a room long enough so I subdivided their room into two smaller bedrooms. It looks great and the bedtime routine is a ton easier. The problem now is the only bathroom on their floor is a two-piece. It had been a year since I finished the last reno and I was getting itchy feet again.

To start, I had to open up the walls and assess the situation. I take pictures with my phone at every stage because when you have to put things back the way they were, a photo makes that process much simpler. In my case, I got pretty lucky with the outer wall with the pocket door I was removing. There was only one electrical run and I was able to shut the circuit off, disconnect it all, pull it through the studs and reconnect everything back up without it costing me. The wall came down pretty easily. I left the toilet and sink intact so the kids could use them for a few weeks while I did my planning.

I used Sketchup for my planning. If you’re lightly technical and haven’t tried Sketchup, you’ve got to check it out. It is a really fantastic tool that lets you quickly create a 3D rendering of your project and with relative ease. The bonus is you can actually walk through your project virtually once you have completed your model. I started by drawing out the floor, adding walls and adding in the things that aren’t moving, which in my case was just the toilet. I was able to import a 3D toilet that was almost identical to my existing throne and easily put it in place.

Now it was time to pick my major fixtures out, and I went hardware store route for the shower and the IKEA route for the sinks. I downloaded the IKEA mobile app, and to be honest, I was really disappointed. It was barely functional and didn’t give me the info that was easily accessible on their website. I decided to browse on my laptop in this case to see nice big shiny photos. I settled on a small double sink cabinet called the GODMORGON / ODENSVIK. I figured the double sink will save me on average 30 seconds a day, plus one headache at teeth brushing time with two small boys. By the way, it looks like most IKEA furniture has 3D models available in Sketchup.

Afterwards, I added in the flooring and my neo angle shower. I had to actually draw the shower as I couldn’t find the exact 3D model that I needed.

Here’s the result of about two hours of work with Sketchup

Here’s the result of about two hours of work with Sketchup

After having drawn it out, I made my shopping list (sent myself an email from the app!) and starting pricing things out. Amazon was a great help in this step. I picked my shower handle and shower head and ordered them. Lesson learned here – be careful with plumbing orders of two items with nearly identically names that differ by only the words ‘trim kit.’ Basically I ordered the shiny bits but not the actual valve body. When it arrived, I learned my lesson and had to go back and order what I really needed. I ordered a cork floor (yes readers, I know, cork isn’t great for a bathroom), but it’s a cold room and I wanted a warm inexpensive floor. It’s a small room and if I get 10 years out of the floor, my kids will be off to college by then! I ordered some flooring samples from a local supplier and they arrived the next day. I selected my favourite (ok my wife’s favourite) and ordered what I needed. I asked the supplier for some details on installation and was provided with lots of info on properly sealing the floor that I would not have otherwise received. Ask the experts, right?

Finally, I picked up what I needed from IKEA, added the lumber and I was ready to start building.

Raised floor and framing complete.

Raised floor and framing complete.

Step one – I framed up the new walls and the rough opening for the door. Now I know there are lots of leveling mobile apps out there and they can be handy when hanging a picture etc. Instead, I pulled out my 6 foot level for framing. You really need the long surface to get accurate measurements for framing and an ⅛ inch out of plumb at this phase can cause huge headaches later on. Once I had the framing done, I realized two pot lights were not going to be enough in this room anymore so I called my electrician back and he wired it up four LED pot lights. Four is probably overkill, but I will be putting a dimmer on it and better too much light than too little, right?

Step two – I moved onto framing up the elevated floor for the shower. I also called my plumber back at this point to rough in the drain and water supply lines for the new shower. Surprise, surprise, it cost me another case of beer. I installed the shower base at this point and moved onto the drywall.

Step three – I contemplated ordering the drywall for delivery just to save me some time (Home Depot is half an hour away) but in the end I decided it wasn’t worth it so I picked up the drywall myself. I decided to use mold resistant drywall on the back wall of the bathroom as well as behind the shower, then regular drywall everywhere else. The boarding doesn’t take long if you have a sharp knife and a drywall t-square. Putting the pieces on the roof single-handedly is always a pain. I used all the tricks in the book but (not gonna lie) I had to wait for my wife to get home to hold the brace in place.

Kelton my 7 year old drywaller

Kelton my 7 year old drywaller

My oldest son is seven years old and he was very useful in the drywalling phase of the project. He’s a very interesting kid and loves talk radio as much as I do. I use the  tune in radio app that lets me stream my local talk radio station because it doesn’t have its own mobile app. My son and I would scribe and cut the drywall to size in the garage then haul it into place. I used some shims to hold the board 1/8th inch off the ground and quickly throw a few screws in to hold it in place. An impact driver uses a hammering mechanism to increase the torque while minimizing the twisting of the driver. This means it’s perfect for kids to drive screws. My son was capable of driving hundreds of screws five inches apart in all the boards up to about six feet off the ground with the help of a small step ladder. I can’t tell you how much time it saved me but the best part is that all the while, he was smiling like I had just let him have candy for breakfast.

Mudding and taping is something you either love or loathe. I fall on the love side so when it came time to call in the pros to save me hours and hours of work I just couldn’t do it.

Check back soon for the next installment once I get the mudding done!

23 Mar

John Craig

Rock your radio station app with these 3 social media features

March 23, 2016 | By |

 

Radio stations and their hosts were the forerunner to modern mass electronic social media.  With breaking news before the time of Twitter, they shared the latest music and entertainment.  They also quickly integrated with other technologies, such as the telephone, to give us talk-radio, call-in contests and crowdsourced late night requests.  Radio didn’t turn off at night like most TV stations did.  Always on, always sharing, always listening.

WKRP

And then WKRP in Cincinnati came along and had us howling at how radio stations operated behind the scenes.  Who can forget the classic Thanksgiving episode as station manager Arthur Carlson rains turkeys down from a helicopter in a radio advertising stunt gone wrong.  Afterwards Carlson confesses, “As God is my witness … I thought turkeys could fly.”

m_miscon

Well we are glad to say we haven’t worked with any Arthur Carlsons.  14 Oranges has however, developed a number of mobile apps for the Jim Pattison Broadcast Group, and we’ve learned three novel ways of integrating social media into the radio experience, and you will notice these features are more Dr. Johnny Fever than Arthur Carlson.

drfever2

1. Show the latest Twitter and Facebook tweets and likes for the band while the song is playing

Hold on a tick.  Do you have a list of all this info in its current and ever changing form like Dr. Johnny Fever from WKRP!? 14 Oranges built out their own Dr. Fever in the form of a custom web crawler that finds the social media feeds and websites for the bands in the station’s playlist database.  The crawler then assigns a confidence rating to the information collected based on an intelligent algorithm, and only displays the information we feel is at least 60% correct.  At least the crawler never shows up late or hung-over!  

drfever

2. Allow the listener to explore the band’s full online presence while the song is playing

You can also click on the song playing and bring up the full set of listings we crawled for the band, including Wikipedia, additional social media links, websites and YouTube channels. When our algorithm returns a confidence rating of 60% or less we opt out and simply share the radio station’s social media feeds.  It’s our way of not dropping a turkey out of a helicopter, thinking it could fly.

turkey-drop-

3. Crowdsource band information from the listeners

For the information where we only 60% sure of, we offer to the listeners, and ultimately the real fans, the chance to update the band’s information right inside the app.  With a simple form, listeners can add the corrected social media information and website(s) for the band playing, which we can vet and insert for future reference.  Because, as God is our witness, we want to know if turkeys can fly!