<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tekna Design</title>
	<atom:link href="http://teknadesigns.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://teknadesigns.com</link>
	<description>Software Design and Consulting</description>
	<lastBuildDate>Thu, 23 Aug 2012 01:47:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Messages For Mac &#8211; From Beta to Primetime</title>
		<link>http://teknadesigns.com/messages-for-mac/</link>
		<comments>http://teknadesigns.com/messages-for-mac/#comments</comments>
		<pubDate>Thu, 16 Aug 2012 13:30:09 +0000</pubDate>
		<dc:creator>Kevin Hooks</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[imessage]]></category>
		<category><![CDATA[messages]]></category>
		<category><![CDATA[mountain lion]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://teknadesigns.com/?p=316</guid>
		<description><![CDATA[Mac's Messages application has been released with the OSX Mountain Lion update. This lists some of the main changes from Beta to the new version.]]></description>
			<content:encoded><![CDATA[<p><a href="http://teknadesigns.com/wp-content/uploads/2012/08/messagesIcon.png"><img class="alignright size-full wp-image-334" title="Messages for Mac" src="http://teknadesigns.com/wp-content/uploads/2012/08/messagesIcon.png" alt="" width="140" height="140" /></a></p>
<h3>Messages for Mac &#8211; Now Ready For Primetime</h3>
<p>For those of you that have participated in the <a href="http://www.apple.com/osx/whats-new/features.html#messages">Messages for Mac beta</a>, you know that it is a handy feature. From the get go Messages was a very clean, simple messaging app that would allow you to communicate between users running both iOS and now OSX. With the release of OSX Mountain Lion, Mac&#8217;s Messages has become much more stable and usable, on top of several added features.</p>
<h3>Improvements from Beta</h3>
<p>Participating in the Messages beta gave me some time to go through the application, finding its strengths and weaknesses. I was impressed with Apple&#8217;s ability to clean up the beta and add additional features with little errors.  I have included my findings with a brief comparison between the official release and the beta.</p>
<h3>iPhone and Mac Messages &#8211; Syncing</h3>
<p>One of my favorite features was the ability to track your conversation between your Mac and your iPhone. The conversations would sync immediately. In the beta there was a major problem though. Every message that was sent would sync immediately to both devices. This happened even if your chat box was open on OSX and you were having a conversation. I happen to have an older 3gs where the battery is beginning to weaken. For most of us, we can type MUCH faster on a PC then we can a cell phone. When the conversation is consistently adding messages to it, not only does your phone notify you excessively to the point of annoyance but those of you with weak batteries like mine know the effect having the screen lit and messages being transferred has.</p>
<p>With the update to Mountain Lion all of this has been fixed. If your chat window on your Mac is open you will no longer sync those to your phone. Now this feature is a lot more robust and can be used more practically. Overall a great way to communicate between devices.</p>
<h3>Group Chat</h3>
<p>When chatting with more than a single person in the beta, each individuals message color was different. Now everyone seems to be the same, which causes confusion when discerning who the message is coming from at a quick glance. If there is a way to change this, I have not yet figured out how. Either way it poses a usability problem at first. This issue could have something to do with the fact that in my chat group I was the only user who had upgraded and the others were still running beta.</p>
<h3>Beta&#8217;s &#8220;State of Inexistence&#8221; Feature</h3>
<p>Another fascinating beta feature was the ability to put your messaging window in a state of inexistence. This could be accomplished by simply changing your font size to max, changing your text color, then typing SPAM into your chat box. To the best of my knowledge this feature has been discontinued in the official release. [/sarcasm]</p>
<h3>Conclusion</h3>
<p>Overall Messages for Mac is one of many great reasons to upgrade to OSX Mountain Lion. The interface is simple and clean, yet there is a plethora of features that allow you to customize your experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://teknadesigns.com/messages-for-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSX Mountain Lion: iCloud Syncing</title>
		<link>http://teknadesigns.com/mountain-lion-icloud-syncing/</link>
		<comments>http://teknadesigns.com/mountain-lion-icloud-syncing/#comments</comments>
		<pubDate>Thu, 26 Jul 2012 06:32:53 +0000</pubDate>
		<dc:creator>Thomas De Leon</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[iCloud]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mountain lion]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://teknadesigns.com/?p=224</guid>
		<description><![CDATA[As we continue to play with Mountain Lion, I thought I&#8217;d go over some of neat iCloud syncing features, especially in using a Mac with an iOS device. &#160; &#160; Documents When Apple introduced iCloud, they updated all the iWork apps on iOS- Pages, Keynote, and Numbers. While these apps are great, and the iCloud...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft  wp-image-235" title="icloud" src="http://teknadesigns.com/wp-content/uploads/2012/07/icloud.png" alt="iCloud" width="138" height="113" /></p>
<p>As we continue to play with Mountain Lion, I thought I&#8217;d go over some of neat iCloud syncing features, especially in using a Mac with an iOS device.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span id="more-224"></span>Documents</h2>
<p>When Apple introduced iCloud, they updated all the iWork apps on iOS- Pages, Keynote, and Numbers. While these apps are great, and the iCloud integration seemed to work pretty well, there was one glaring thing missing. The desktop OSX version of these apps had not been updated! The only way to get a document into iCloud from the desktop was to use the <a title="iCloud Online" href="http://icloud.com/">iCloud.com</a> website, manually uploading files. While not terribly difficult, the problem then arises when editing back and forth between iOS and Mac. Basically, you had to overwrite the file to update it. Not very smooth.</p>
<div class="wp-caption alignright" style="width: 250px"><a href="http://teknadesigns.com/wp-content/uploads/2012/07/pages_mac.png"><img class=" wp-image-261" title="pages_mac" src="http://teknadesigns.com/wp-content/uploads/2012/07/pages_mac-300x204.png" alt="" width="240" height="163" /></a><p class="wp-caption-text">Desktop OSX iCloud documents dialog.</p></div>
<p><span style="text-align: center;">Opening Pages on the desktop now greets you with an open dialog box that links straight to iCloud.</span>Now, the wait is finally over, and at last the final piece of the puzzle is there, and we have direct syncing into iCloud from Mac! Now, when opening Pages, you are greeted with an open dialog, but it&#8217;s different. Now, with one button, all your Pages documents in iCloud are shown instantly. Hit the &#8220;On My Mac&#8221; button, and you&#8217;re shown the normal on-disk open view. This makes it very fast and efficient to get documents into or out of the cloud. No mounting disks or uploading required.One thing to note, this functionality is not limited to iWork or Apple&#8217;s apps at all. In fact, these are now systemwide APIs that any app can take advantage of  (for devs: <a href="http://developer.apple.com/library/mac/#documentation/DataManagement/Conceptual/DocBasedAppProgrammingGuideForOSX/Designing/Designing.html">any app using NSDocument can use this</a>). Coupled with an iOS devices, this makes for great opportunities for new app suites.</p>
<div id="attachment_234" class="wp-caption alignleft" style="width: 112px"><a href="http://teknadesigns.com/wp-content/uploads/2012/07/ios_icloud.png"><img class=" wp-image-234   " title="ios_icloud" src="http://teknadesigns.com/wp-content/uploads/2012/07/ios_icloud-200x300.png" alt="" width="102" height="154" /></a><p class="wp-caption-text">iOS iCloud document dialog.</p></div>
<p>On the iOS side, creating a new document shows up in the Pages app, just as you&#8217;d expect. You can edit the document, close it, and go back to editing on the Mac, moving back and forth seamlessly. Now here&#8217;s something cool- what happens when you have the document open at the same time, on multiple devices? Well, when I edited the document on my iPhone, the one open on my Mac updated itself automatically a few seconds later. No need to close the document and re-open it. And of course that brings up the next question, what happens when it&#8217;s edited in both places at the same time? A merge dialog is presented to the user to resolve the conflict, both on the Mac and iOS device. Either version can be</p>
<div id="attachment_228" class="wp-caption alignright" style="width: 250px"><a href="http://teknadesigns.com/wp-content/uploads/2012/07/icloud_sync.png"><img class=" wp-image-228  " title="icloud_sync" src="http://teknadesigns.com/wp-content/uploads/2012/07/icloud_sync-300x155.png" alt="Merge dialog" width="240" height="124" /></a><p class="wp-caption-text">iCloud conflict resolution dialog, when documents are edited at the same time on multiple devices.</p></div>
<p>chosen to be used, or both can be kept. Keeping both duplicates the document. Since none of this is triggered by saving, and it&#8217;s all automatic, it might make some nervous. Well, the versioning that was introduced in Lion is still there, and one can easily go into the document&#8217;s version browser and select any past revision. The document syncing between Mac and iOS is a great feature, and now makes working on an iOS device even more practical. Of course, there will always be a need for disk-based cloud services such as <a href="http://www.dropbox.com/">Dropbox</a> or <a href="http://www.box.com/">Box.com</a>, but I think this is a great, well integrated model.</p>
<h2 class="mceTemp">Reminders</h2>
<div id="attachment_251" class="wp-caption alignleft" style="width: 248px"><a href="http://teknadesigns.com/wp-content/uploads/2012/07/reminders_mac.png"><img class=" wp-image-251" title="reminders_mac" src="http://teknadesigns.com/wp-content/uploads/2012/07/reminders_mac.png" alt="" width="238" height="86" /></a><p class="wp-caption-text">OSX Reminders</p></div>
<p>Another cool feature is syncing of reminders. Like the documents, this is seamless. The reminders app has been out on iOS since iOS 5 was released, and it was on the Mac in a limited fashion- inside of iCal. However, it was more of an afterthought in iCal, while it did sync with iCloud, it didn&#8217;t cover any of the advanced features like location based alarms.</p>
<p>Location based reminders allow you to set alarms for the reminder based on a location, either when arriving or leaving. The problem with traditional alarms is that sometimes you don&#8217;t know when exactly you are leaving or arriving at a location. You could be running late or early, and if the alarm goes off at a time when you aren&#8217;t at the place you need to do the task, you could easily forget about it. Location reminders solve this, for example if you need to pick up something on the way into work, you might set a location reminder to</p>
<div id="attachment_254" class="wp-caption alignright" style="width: 150px"><a href="http://teknadesigns.com/wp-content/uploads/2012/07/reminders_ios.png"><img class=" wp-image-254 " title="reminders_ios" src="http://teknadesigns.com/wp-content/uploads/2012/07/reminders_ios-200x300.png" alt="" width="140" height="210" /></a><p class="wp-caption-text">iOS Reminders</p></div>
<p>alert you when you&#8217;re leaving your house.</p>
<p>The location reminders on iOS work pretty well, however there is one annoying limitation. When specifying a location, you can only</p>
<p>use your current location, or one already in your Contacts. This has been acknowledged by Apple and in iOS 6, you will be able to enter any address in a reminder. That&#8217;s great news, except that iOS 6 won&#8217;t be out until September. Mountain Lion now provides a workaround for this, as the new Mac Reminders app allows the address entering, and if you create a reminder on your iCloud account, it will show up on your iOS device. When I tried this, shortly after on my iPhone, the region monitoring symbol showed up in the status bar, signifying that the reminder had synced over with the location alarm. When I later on deleted it on my Mac, it turned off as expected.</p>
<h2>Conclusion</h2>
<p>Other features in iCloud include Notes, Safari tabs syncing, and PhotoStream (not new, but sharing has been added). One thing to note<a href="http://teknadesigns.com/wp-content/uploads/2012/07/ml.png"><img class="alignright size-full wp-image-253" title="ml" src="http://teknadesigns.com/wp-content/uploads/2012/07/ml.png" alt="" width="101" height="100" /></a> of course is that iCloud tabs syncing does not work with iOS at the moment, as that will be in iOS 6. The tabs syncing does, however work great between Macs running Mountain Lion.</p>
<p>Although there are the other iCloud features, I focused mainly on the Document and Reminders syncing, because those are two of the big parts of iCloud that I&#8217;ve been finding most useful already. So far Mountain Lion has been running great, and it&#8217;s been a seamless upgrade for me. It&#8217;s not perfect, but I think overall, it&#8217;s pretty good. I think the integration is just the right amount right now- it&#8217;s enough to make things work well with iOS devices, but not too much that I can&#8217;t still crack open the Terminal and do things that way. Watch for some more thoughts from our team on Mountain Lion soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://teknadesigns.com/mountain-lion-icloud-syncing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSX Mountain Lion: Safari 6 Speed Boost (Updated)</title>
		<link>http://teknadesigns.com/osx-mountain-lion-safari-6-speed-boost/</link>
		<comments>http://teknadesigns.com/osx-mountain-lion-safari-6-speed-boost/#comments</comments>
		<pubDate>Wed, 25 Jul 2012 23:35:37 +0000</pubDate>
		<dc:creator>Thomas De Leon</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mountain lion]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://teknadesigns.com/?p=198</guid>
		<description><![CDATA[OSX Mountain Lion: Safari 6 Gets a Speed Boost (Updated) Since we are using all Macs here at Tekna, we of course have done the update to OS X 10.8 Mountain Lion. Along with this update came a brand new Safari, Safari 6. Update: Thanks to a reader tip, we&#8217;ve re-run the test with the...]]></description>
			<content:encoded><![CDATA[<p><strong>OSX Mountain Lion: Safari 6 Gets a Speed Boost (Updated)</strong></p>
<p><img class="alignright size-full wp-image-212" title="Browser Speed Comparison" src="http://teknadesigns.com/wp-content/uploads/2012/07/browserSpeedTest.png" alt="" width="169" height="154" /></p>
<p>Since we are using all Macs here at Tekna, we of course have done the update to OS X 10.8 Mountain Lion. Along with this update came a brand new Safari, Safari 6.</p>
<p><span id="more-198"></span></p>
<p><em>Update:<br />
</em><em>Thanks to a reader tip, we&#8217;ve re-run the test with the latest Firefox version 14.0.1. The overall score ended up being actually slightly worse, at 1142 vs. 1155.</em></p>
<p>There are quite a few UI and other changes to Safari, but it seems to also have gotten a big speed boost, which was one of the first things we noticed.</p>
<p>&nbsp;</p>
<p>This got us curious, so we ran some tests using the <a href="http://peacekeeper.futuremark.com/">Peacekeeper HTML5 Browser Test from Futuremark</a>. Safari beat out Firefox, but still trails Chrome. Here’s the details:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th><strong>Browser</strong></th>
<th><strong>Overall Result</strong></th>
</tr>
<tr>
<td valign="top">Chrome 20</td>
<td valign="top">1943</td>
</tr>
<tr>
<td valign="top">Safari 6</td>
<td valign="top">1629</td>
</tr>
<tr>
<td valign="top">Firefox 14</td>
<td valign="top">1142</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th><strong>Browser</strong></th>
<th><strong>Rendering</strong></th>
<th><strong>HTML5 Capabilities</strong></th>
<th><strong>HTML5 Canvas</strong></th>
<th><strong>Data</strong></th>
<th><strong>DOM Operations</strong></th>
<th><strong>Text Parsing</strong></th>
</tr>
<tr>
<td valign="top">Safari</td>
<td valign="top">53.92</td>
<td valign="top">4/7</td>
<td valign="top"><strong>17.61</strong></td>
<td valign="top">18929.89</td>
<td valign="top">8476.89</td>
<td valign="top">75234.55</td>
</tr>
<tr>
<td valign="top">Firefox</td>
<td valign="top">22.7</td>
<td valign="top">6/7</td>
<td valign="top">11.05</td>
<td valign="top">23046.48</td>
<td valign="top">6657.87</td>
<td valign="top">53217.81</td>
</tr>
<tr>
<td valign="top">Chrome</td>
<td valign="top"><strong>57.67</strong></td>
<td valign="top"><strong>7/7</strong></td>
<td valign="top">10.62</td>
<td valign="top"><strong>40006.14</strong></td>
<td valign="top"><strong>8774.18</strong></td>
<td valign="top"><strong>128922.75</strong></td>
</tr>
</tbody>
</table>
<p>Chrome is clearly still on top, however the latest installment of Safari seems to be gaining. It beat Chrome in the HTML5 Canvas category, and was somewhat close in the Rendering and DOM Operations categories.</p>
<p>One thing is clear, Firefox is trailing far behind both Safari and Chrome.</p>
<p>As we check out more areas of Mountain Lion, we’ll be posting more, so be sure to follow us. And feel free to drop us a note and share your first impressions of the OS as well.</p>
<h3></h3>
<h3>Results</h3>
<p>Here are the full, detailed results for each browser:</p>
<p><a title="Safari Results" href="http://peacekeeper.futuremark.com/results?key=5jgt&amp;resultId=2551665" target="_blank">Safari</a><br />
<a title="Chrome Results" href="http://peacekeeper.futuremark.com/results?key=5jjd&amp;resultId=2551979" target="_blank">Chrome</a><br />
<a title="Firefox Results" href="http://peacekeeper.futuremark.com/results?key=5kmG&amp;resultId=2559760" target="_blank">Firefox</a></p>
<h3>More Safari Tips</h3>
<p>For more info and tips on Safari 6, check out this great writeup at <a href="http://www.chriswrites.com/2012/07/how-to-make-the-most-of-the-new-safari-in-mountain-lion/">chriswrites.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://teknadesigns.com/osx-mountain-lion-safari-6-speed-boost/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What is Object Oriented Programming? &#8211; A Basic Explanation</title>
		<link>http://teknadesigns.com/what-is-object-oriented-programming/</link>
		<comments>http://teknadesigns.com/what-is-object-oriented-programming/#comments</comments>
		<pubDate>Wed, 18 Jul 2012 13:50:40 +0000</pubDate>
		<dc:creator>Thomas De Leon</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[object oriented programming]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://teknadesigns.com/?p=153</guid>
		<description><![CDATA[In this post, I’ll explain the basics of Object Oriented Programming (OOP). There are plenty of books and online resources to learn the details of OOP, but I’ll focus on more of the high-level object oriented programming concepts. It’s all about Objects As the name would imply, object oriented programming is all about, big surprise&#8230;...]]></description>
			<content:encoded><![CDATA[<p>In this post, I’ll explain the basics of Object Oriented Programming (OOP). There are plenty of <a title="Recommended Books" href="#books">books</a> and <a title="Online Resources" href="#links">online resources</a> to learn the details of OOP, but I’ll focus on more of the high-level object oriented programming concepts.</p>
<h2><strong>It’s all about Objects</strong></h2>
<p>As the name would imply, object oriented programming is all about, big surprise&#8230; objects. But what does that really mean? Let’s look at some real-world examples to see.<span id="more-153"></span></p>
<h3><strong>Describing an Object</strong></h3>
<p>Imagine an object that most people can relate to, a car. How can we describe a car? Well, it has attributes such as the <em>color</em>, <em>make</em>, <em>model</em>, <em>year</em>, <em>mileage</em>, and <em>vin</em>. Each of these attributes make each car what it is. In OOP, attributes, the features that describe an object, are called <a title="properties definition" href="#properties"><strong>properties</strong></a>.</p>
<h3><strong>Actions of an Object</strong></h3>
<p>The next question is, what are the actions a car can do, or can be done to the car? Let’s take some of the obvious ones:</p>
<ul>
<li>Turn the car on</li>
<li>Turn the car off</li>
<li>Accelerate</li>
<li>Brake</li>
</ul>
<p>In OOP, these actions, are called <a title="methods definition" href="#methods"><strong>methods</strong></a>. They allow the objects to do things, and as you’ll see next, also provide a way to manipulate the properties of the object.</p>
<h4><strong>Changing and Reading the Description</strong></h4>
<p>When you buy a car, it has all the properties we described above (color, make, model, etc.) already defined. The car is painted, was made by a certain manufacturer, and is of a certain mode type, and so on. Some of those are fixed, for example if the car was made by Toyota, it’s going to be a Toyota for the rest of it’s life. But what about something like the color? A few years after you buy the car, you may decide you’re tired of black and want it repainted to green. In object oriented programming, we call this <a title="setter methods definition" href="#settermethod"><strong>setter methods</strong></a>, which are just special methods for setting properties on an object. Typically, they are just the property name prepended with “set”, so in our case, it would be <em>setColor</em>. The opposite can also be done, let’s say we get stopped for a speeding ticket, and the officer wants to get the VIN number. You would read the VIN through a <a title="getter methods definition" href="#gettermethods"><strong>getter method</strong></a>, which typically have ‘get’ prepending the property, so the officer would be using would be <em>getVin</em>.</p>
<h4><strong>Creating Objects</strong></h4>
<p>Now that we have properties, methods, and ways to read or set/change the properties through setter and getter methods, you may be asking, how do we create the objects in the first place?</p>
<h4><strong>Object Oriented Programming Constructors</strong></h4>
<p>The answer introduces another term in OOP, called a <a title="constructor definition" href="#constructor"><strong>constructor</strong></a>. A constructor is a special method which creates an object. After you’ve created an object, you have an instance of it. This process is called <a title="instatiation definition" href="#instantiation"><strong>instantiation</strong></a>.</p>
<h4><strong>Example</strong></h4>
<p>To illustrate this, lets go back to the car example. We are at the factory, and we instantiate our car by using a constructor method to create it. This special method takes inputs for the model, color, and VIN number, and outputs a brand new car. If you recall though, we had more properties than those, what about the make, year, and mileage?</p>
<p>In our example, if we are at a Toyota factory, the cars produced will always be Toyota, and the mileage will always be zero. The year will change, but will always match the current year. While we could simply pass those into our constructor, since those values are (mostly) fixed, we can simply set them in the constructor itself. This way we can be sure that <em>every</em> new car created with this constructor will have the make set to Toyota, the mileage to zero, and the year will always be current. The idea of setting properties when an object is created is called <a title="initializing definition" href="#initializing"><strong>initializing</strong></a> them.</p>
<h4><strong>Constructor Abilities</strong></h4>
<p>Note that a constructor can take all, some, or no properties as inputs, but will always create one as output. For one taking no inputs, there you would initialize the properties to some value (which is always good practice), expected to be changed at some later point. The other piece that all constructors do is allocate memory. This differs from language to language, but will always do the actual creating of the object. Also, there are methods which do the opposite, called <a title="destructor definition" href="#destructor"><strong>destructors</strong></a>, which destroy the object. They are important because they deallocate any memory allocated in the constructor. Often, this is all they will do, but other code can be added to them which will be executed when the object is destroyed.</p>
<h2><strong>How can this save you time?</strong></h2>
<p>So far, you may see how this can help organize how you store data (in fact it can be comparable to how you’d store data in fields and tables in a relational database), but you may wonder how this can help you save time?</p>
<p>Up to now, you may have just been thinking of our car as a typical sedan. Ok, lets change the manufacturer now to Volvo. Volvo makes cars, trucks <em>and</em> buses, so what do we do now? No problem, you say! We can just create bus and truck objects just like we did for cars, and we’re all set.</p>
<p>Yes, that works, but it’s not a good solution. All three types share common properties, and even methods. But it means you’d have to write those three times, to do the exact same thing.</p>
<h3><strong>An Efficient Solution</strong></h3>
<p>The better solution, and what OOP is all about, is to create another object, which holds all the properties and methods that are common between cars, trucks, and buses. Here is where we’ll change terms, and instead of calling these objects, we’ll now call them <a title="class definition" href="#class"><strong>classes</strong></a>. Classes are objects when they have been created, but this is a better term because it also refers to them when they haven’t been created yet.</p>
<p>Back to our example. So now we have a class called vehicle, with all the properties and methods common to our three types of vehicles. This is called the <a title="parent class definition" href="#parentclass"><strong>parent class</strong></a>, and the three vehicles are it’s <a title="subclass definition" href="#subclass"><strong>subclasses</strong></a>. What’s important to note is that those common properties and methods only need to be defined in the parent class level. The children automatically have access to these, and so defining them there is not necessary. This concept is called <a title="inheritance definition" href="#inheritance"><strong>inheritance</strong></a>.</p>
<p><a href="http://teknadesigns.com/wp-content/uploads/2012/07/class_diagram.png"><img class="size-medium wp-image-181 alignright" title="class_diagram" src="http://teknadesigns.com/wp-content/uploads/2012/07/class_diagram-300x114.png" alt="Object Oriented Programming (OOP) Diagram" width="300" height="114" /></a></p>
<h4><strong>Subclasses</strong></h4>
<p>In the subclasses, we only need to define the things that are unique to them. For example, for a truck the maximum amount of cargo is important, so this could be a property, and a bus may have a method to <em>loadPassengers</em> or <em>unloadPassengers</em>.</p>
<p>Also imagine that we started to produce other types of vehicles, the inheritance concept really makes things easier to add them, as we simply need to define the properties which are not already covered by the common vehicle class.</p>
<p>In OOP, you will sometimes have classes that are not intended to be used directly (such as our vehicle class in this example), but instead simply exist as a common parent. In these cases, it is meant for the subclasses to be used. In other cases, the parent and subclasses can be used. Or, subclassing can be a way for you to extend an existing class that you would like to add functionality to.</p>
<h2><strong>Summary</strong></h2>
<p>Hopefully this has helped with a basic understanding of Object Oriented Programming concepts, for those unfamiliar. It is a great concept to learn, and can make your programming much more robust and faster to develop. Also, these concepts are pretty general and apply to many different object oriented languages.</p>
<p>To summarize, here are some of the main object oriented programming concepts:</p>
<ul>
<li>Objects (classes) consist of properties and methods</li>
<li>Constructors are used to create objects, destructors are used to destroy them.</li>
<li>Subclassing and inheritance can help you save time by re-using and better organizing your code</li>
</ul>
<h2>Definitions</h2>
<p><a name="class"></a><strong>class</strong> &#8211; another term for an object; contains properties and methods</p>
<p><a name="constructor"></a><strong>constructor</strong> &#8211; a special method which creates an object and initializes its properties</p>
<p><a name="destructor"></a><strong>destructor</strong> &#8211; a special method which destroys an object</p>
<p><a name="gettermethod"></a><strong>getter method</strong> &#8211; a special method which gets the value of a property</p>
<p><a name="initializing"></a><strong>initializing</strong> &#8211; setting properties to their initial values when a class is instantiated</p>
<p><a name="instantiation"></a><strong>instantiation</strong> &#8211; the process of creating an instance of a class</p>
<p><a name="methods"></a><strong>methods</strong> &#8211; functions which are actions that belong to an object</p>
<p><a name="parentclass"></a><strong>parent class</strong> &#8211; the “main” class where other classes inherit properties and methods from</p>
<p><a name="properties"></a><strong>properties</strong> &#8211; attributes (variables) which describe an object</p>
<p><a name="settermethod"></a><strong>setter method</strong> &#8211; a special method which sets the value of a property</p>
<p><a name="subclass"></a><strong>subclass</strong> &#8211; classes which inherit properties and methods from a parent class; it can also define it’s own properties and methods</p>
<h2><a name="links"></a><strong>Online Resources</strong></h2>
<ul>
<li><a title="CodeProject" href="http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep">Introduction to Object Oriented Programming and More</a></li>
<li><a title="Wikipedia" href="http://en.wikipedia.org/wiki/Object-oriented_programming">Wikipedia &#8211; Object Oriented Programming</a></li>
<li><a title="Apple Developer Library" href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/OOP_ObjC/Introduction/Introduction.html">Object Oriented Programming with Objective-C</a></li>
<li><a title="Globewide Network Academy" href="http://www.desy.de/gna/html/cc/Tutorial/tutorial.html">Introduction to Object Oriented Programming Using C++</a></li>
<li><a title="Oracle" href="http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/oo.html">Essentials of the Java Programming Language: A Hands-On Guide, Part 2</a></li>
<li><a title="iTunes U" href="http://itunes.apple.com/us/itunes-u/object-oriented-programming/id431558221">Object Oriented Programming &#8211; Swinburne University of Technology (Free iTunes U course)</a></li>
</ul>
<p><a name="books"></a></p>
<h2>Books</h2>
<p><a name="books"></a></p>
<p><a name="books"></a></p>
<ul>
<li><a title="Amazon" href="http://www.amazon.com/Object-Oriented-Programming-Yourdon-Press-Computing/dp/013032616X">Object-Oriented Programming</a><a title="Wikibooks" href="http://en.wikibooks.org/wiki/Object_Oriented_Programming"><br />
</a></li>
<li><a title="Wikibooks" href="http://en.wikibooks.org/wiki/Object_Oriented_Programming">Object Oriented Programming (Free Online Book)</a></li>
<li><a title="Amazon" href="http://www.amazon.com/Object-Oriented-Programming-Nicolai-Josuttis/dp/0470843993">Object Oriented Programming in C++</a></li>
<li><a title="Amazon" href="http://www.amazon.com/Objective-C-Object-Oriented-Programming-Lewis-Pinson/dp/0201508281">Objective C: Object Oriented Programming Techniques</a></li>
<li><a title="Textbooks.com" href="http://www.textbooks.com/BooksDescription.php?BKN=876539&amp;SBC=DAH&amp;mcid=XCS-Shoppingdotcom-9780073523309-N&amp;utm_medium=shoppingengine&amp;utm_term=9780073523309N&amp;utm_source=shoppingdotcom&amp;">Introduction to Object-Oriented Programming With Java &#8211; 5th edition</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://teknadesigns.com/what-is-object-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>&#8220;The Science of Inbound Marketing&#8221; &#8211; Key Takeaways</title>
		<link>http://teknadesigns.com/inbound-marketing/</link>
		<comments>http://teknadesigns.com/inbound-marketing/#comments</comments>
		<pubDate>Fri, 13 Jul 2012 06:20:14 +0000</pubDate>
		<dc:creator>Jason Flores</dc:creator>
				<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://teknadesigns.com/?p=123</guid>
		<description><![CDATA[HubSpot and HootSuite hosted a free webinar called, "The Science of Inbound Marketing".  Here is a list of key takeaways that every marketer should have.]]></description>
			<content:encoded><![CDATA[<h3>The Inbound Marketing Webinar You Missed</h3>
<p><a href="http://www.hubspot.com/default.aspx">HubSpot</a> and <a href="http://hootsuite.com/">HootSuite</a> hosted a free webinar called, &#8220;<a href="http://www.hubspot.com/the-science-of-inbound-marketing/watch">The Science of Inbound Marketing</a>&#8220;.  HubSpot broke the Guinness World record for largest webinar last year and attempted to do the same in 2012. Dan Zarrella was the speaker and is an expert social, search, and viral marketing scientist.  He used data from Hootsuite, HubSpot and his own survey in his presentation to show the correlation between tactics to receive more links, social shares and leads. </p>
<h3>Putting their Money Where their Mouth Is</h3>
<p>This webinar created a ton of buzz, with over 5,000 social shares, proving that what they had to say produces real results.  So why would you want key takeaways? Because this inbound marketing webinar was not recorded and will not be released for viewing again.  Below are the key takeaways that I noted.</p>
<h2>Key Takeaways from &#8220;The Science of Inbound Marketing&#8221;</h2>
<h3>Twitter</h3>
<ul>
<li>Highly followed accounts share links and are not chatty.</li>
<li>Give people content to retweet: 32% Retweet other content instead of Sharing their own content.</li>
<li>To get ReTweets:
<ul>
<li>Post a link with your Tweet.</li>
<li>Replies do not gain retweets.</li>
<li>Using &#8220;Please ReTweet&#8221; before post get 4x more retweet.</li>
<li>Publish Tweets at 4:30pm &#8211; the most retweetable time.</li>
<li>Saturday and Sunday get a bit more retweets than during the week.</li>
<li>Using @mentions result in <strong>less</strong> retweets.</li>
</ul>
</li>
</ul>
<h3>Facebook</h3>
<ul>
<li>Post on the Weekend.</li>
<li>Post between 4:00pm-8:00pm.</li>
<li>Most popular type of posts:
<ol>
<li>Photos</li>
<li>Status Changes</li>
<li>Videos</li>
</ol>
</li>
<li>Post length: under 30 characters or 600+ characters.</li>
<li>Passionate posts do best:
<ul>
<li>Very positive or very negative</li>
<li>Positive is best</li>
</ul>
</li>
<li>Talking about yourself gets more likes.</li>
</ul>
<h3>SEO</h3>
<ul>
<li>Perception: 50% of people decide if your site as trustworthy by your Organic Rankings.</li>
<li>Order of importance of Organic Listings:
<ul>
<li>Description</li>
<li>Title</li>
<li>Url</li>
</ul>
</li>
<li>Link Correlation
<ul>
<li>Short Titles = More links.</li>
<li>More Tweets = More links.</li>
<li>More likes = More links.</li>
<li>More LinkedIn shares = More links.</li>
</ul>
</li>
</ul>
<h3>Blogging</h3>
<ul>
<li>70% of all people are often affected by blogs in their decision-making.</li>
<li>Publish blog posts at 9:00am-10:00am.</li>
<li>Post important blogs on a Monday (highest views).  Weekends are the worst.</li>
<li>Views Skyrocket with over 30 posts per month.</li>
<li>Zero correlation between comments and links.</li>
<li>Pages with the most views use the words:
<ul>
<li>insights</li>
<li>analysis</li>
<li>answers</li>
<li>questions</li>
<li>advice</li>
<li>review</li>
<li>why</li>
<li>product</li>
</ul>
</li>
</ul>
<h3>Email</h3>
<ul>
<li>For greater Click Through Rates:
<ul>
<li>Subject Lines
<ul>
<li>Be Passionate: Better to be positive but VERY negative works as well.</li>
<li>Don’t use “?” in email subject line.</li>
<li>Don’t use # in email subject.</li>
<li>Don’t use parenthesis.</li>
</ul>
</li>
<li>Square brackets are okay (Only if you <strong>need</strong> to use brackets).</li>
<li>Include personalization:
<ul>
<li>Use the person’s first name.</li>
<li>Use their company name in the email.</li>
</ul>
</li>
<li>Provide more links in the email content.</li>
<li>Correlation: More links, less unsubscription rates.</li>
<li>New subscribers have greater CTR.</li>
<li>Send emails on Saturday or Sunday.</li>
<li>Best time to send emails: 6:00am-7:00am.</li>
<li>No Correlation between sending frequency and CTR.</li>
<li>Unsubscription rates decrease as sending frequency increases.</li>
</ul>
</li>
</ul>
<p>            (I would take the last two data findings with a grain of salt.  They could easily be interpreted into spamming you email subscribers which is not a good strategy.)</p>
<h3>eBooks</h3>
<ul>
<li>Readers&#8217; preferred format = 1. kindle 2. pdf Far 3rd = html.</li>
<li>Best Length: >5 pages or 100+.</li>
<li>People find ebooks through:
<ol>
<li><a href="https://kdp.amazon.com/self-publishing/signin" title="Publish your eBook on Amazon">Amazon</a></li>
<li>Recommendations</li>
</ol>
</li>
</ul>
<h3>Lead Generation</h3>
<ul>
<li>Tactics with Best Conversion Rates:
<ol>
<li>Paid</li>
<li>Email</li>
<li>Social</li>
<li>Referrals</li>
<li>Organic</li>
<li>Direct</li>
</ol>
</li>
<li>Most effective items of value:
<ul>
<li>Downloadable Kit</li>
<li>Free Trial</li>
<li>Ebook</li>
<li>Live Webinar</li>
<li>Recorded Video</li>
<li>White Paper</li>
<li>Demo/Consultation</li>
</ul>
</li>
<li>Pages with a lower conversion rate had the words:
<ul>
<li>quote</li>
<li>price</li>
<li>request</li>
<li>services</li>
<li>contact</li>
<li>questions</li>
</ul>
</li>
<li>These have the association that a sales person is going to contact you.</li>
</ul>
<h3>Key Takeaways Summary</h3>
<p>These key takeaways to this webinar, &#8220;The Science of Inbound Marketing&#8221;, have spurred many creative ideas and have altered many marketers&#8217; strategies for the better.  The main point that Dan proved, is that businesses need to focus much of their time and energy on educating the public through blogging and spreading that content through channels such as social media, email, infographics, etc.  </p>
<h3>Inbound Marketing vs. Traditional Marketing</h3>
<p>By publishing more than 30 blog posts per month, there was a significant spike in traffic and page views.  <a href="http://blog.hubspot.com/" title="HubSpot Blog">HubSpot</a>, <a href="http://sethgodin.typepad.com" title="Seth Godin's Blog">Seth Godin</a>, <a href="http://www.seomoz.org/blog" title="SEOMoz Blog">SEOMoz</a> and others have dedicated most of their marketing dollars and time to educating the public and have reaped the benefits through increased brand equity, sales, consumer participation and reputation.  *Note: David Meerman Scott talks about these same inbound marketing principles in his book, <a href="http://www.davidmeermanscott.com/books/the-new-rules-of-marketing-and-pr/" title="David Meerman Scott's Book">The New Rules of Marketing &#038; PR</a> and is a great read for those that know traditional marketing is dead.  </p>
<h3>What Did I Miss?</h3>
<p>Anybody have any key takeaways that I missed from this presentation?</p>
]]></content:encoded>
			<wfw:commentRss>http://teknadesigns.com/inbound-marketing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
