Tutorials about HTML, CSS, PHP, Javascript, and Photoshop

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that has been used in the blog.
  • Archives
    Archives Contains a list of blog posts that were created previously.
  • Login

On the 2nd June 2014, Apple announced the latest version of it’s OS X operating system, at the Worldwide Developers Conference (WWDC) in San Francisco.  

Being 10, the next iteration of OS X, The second in a departure from the previous naming system of big cats. 10, will start a new naming convention taken from places in California. OS X 10. 10 will be known asYosemiteNamed after theYosemite National ParkIn California

In this tutorial, from OS X 10, I'll show you what you will need to do to ensure that a Mac is ready for upgrade. Or earlier, to OS X 10, 9 Mavericks. 10 Yosemite when it is released later this year

Upgrade Cost

OS X 10.6 Snow Leopard

OS X 10, Way back in October 2009. 6 Snow Leopard was delivered via DVD and cost £25 in the UK when launched

OS X 10.7 Lion

Apple stopped supplying DVDs with the release of OS X 10. 7 Lion (though it was available for a short time on a USB drive) and cost £20. Preferring a download delivery model via the new Mac App Store, 99 in the UK, instead

OS X 10.8 Mountain Lion

OS X 10. 8 Mountain Lion was only available as an upgrade through the Mac App Store and cost £13. 99 in the UK.  

OS X 10.9 Mavericks

OS X 10. 9 Mavericks was only available as an upgrade through the Mac App Store and was offered as a nil-cost upgrade to Apple OS X users as far back as OS X 10. 6 Snow Leopard

OS X 10.10 Yosemite

OS X 10. 10, following on from Mavericks, is to be offered as a free upgrade for existing Mac users of any OS X version from 10. 6. 7 Snow Leopard onwards

Microsoft Windows 8

Compare this to £99. 99 for Microsoft’s Windows 8 operating system, and any upgrade to OS X is a bargain


Similar to 10. 10, 7 Lion. 8 Mountain Lion and 10. 9 Mavericks, it has been confirmed that OS X 10. 10 Yosemite will only be available as a digital download for Macs that require upgrading

System Requirements

Yosemite beta program
Yosemite beta program

As of itsbeta release, OS X 10.10 YosemiteIs compatible with all Macs that are capable of running OS X Mountain Lion (and some earlier systems). The compatibility list is very similar to that for the release of OS X Mavericks, last year

  • IMac (Mid-2007 or later)
  • MacBook (13-inch Aluminum, Late 2008), Early 2009 or later), (13-inch
  • Mid-2009 or later), Mid/Late 2007 or later), Late 2007 or later), (17-inch, MacBook Pro (13-inch, (15-inch
  • MacBook Air (Late 2008 or later)
  • Mac Mini (Early 2009 or later)
  • Mac Pro (Early 2008 or later)
  • Xserve (Early 2009)

It is likely that this will not change between the beta and the retail version, but it's inevitable that some of the sexier features of Yosemite will not be compatible with older hardware

Checking Hardware Compatibility

To check to see if a Mac is compatible, click on theAppleAt the farmost left of the menu bar and selectAbout This MacThen clickMore Info

About this Mac
About this Mac

Checking Memory

Click on the, To check to see if how much memory is installed in the MacAppleAt the farmost left of the menu bar and selectAbout This MacThen clickMore InfoFollowed by theMemoryTab

Checking the amount of  installed memory on a Mac
Checking the amount of installed memory on a Mac

In order to run OS X 10. 10 Yosemite, the Mac must have at least 2GB of memory. From my own experience of running OS X 10. On a Mac mini Core i5, my recommendation would be to look at 4GB being an absolute minimum for Mavericks, 9 Mavericks, which will run very slowly indeed.  

Ideally, you should look at 8GB RAM being the minimum to run Yosemite and install more if you can afford it. Probably the best place for memory upgrades for a Mac isCrucial

Crucial is a long established reputable supplier of Apple Mac memory upgrades
Reputable supplier of Apple Mac memory upgrades, Crucial is a long established

Checking Software Compatibility

Before upgrading to Yosemite, the Mac will need at least 8GB of available hard disc space and be running Mac OS X 10. 6. Or later, 7 Snow Leopard

Snow Leopard 10. 6. Lion, 7, Mountain Lion and Mavericks all have the Mac App Store, which is a requirement for the digital download delivery mechanism to install OS X 10. 10 Yosemite

You will need to consult with the developers of each app to determine whether your software will be compatible with OS X 10, In terms of third party apps. 10 Yosemite

Roaring Apps is a useful website for determining Mac software compatibility
Roaring Apps is a useful website for determining Mac software compatibility

For previous OS X updates to Lion and Mountain Lion, a hugely useful resource has been Roaring Apps. This site maintains a Wiki, to which anyone may contribute for the good of the Mac community, in sharing information about compatibility of apps between versions of OS X

It is likely that Roaring Apps will be updated to include information regarding Yosemite compatible apps. It’s a huge timesaver

Perform Apple Software and Firmware Updates

To check to see if there are any updates for the Mac, click on theAppleAt the farmost left of the menu bar and selectSoftware UpdateThis launches theMac App StoreAnd checks for any available software updates

Performing an Apple Software update
Performing an Apple Software update

Prior to attempting to upgrade the Mac, Update the software, and firmware if applicable, with the software updates that are available.  

Note that some upgrades may require the Mac to reboot in order to install them. This is especially true of firmware updates

Backing Up Data

This is imperative. It is essential that you back up your data before attempting to upgrade your operating system

On the Mac, There are many ways in which you can go about backing up data. With, Apple makes this quite easy, In factTime MachineAnd other app developers have created invaluable tools such asSuperDuper!AndCarbon Copy ClonerCloud-based services such as, FurthermoreDropboxProvide even more ways to ensure that essential data is safe

Setting up Time Machine to perform a backup
Setting up Time Machine to perform a backup

My recommendation would be to perform at least two back ups and to test that they work. My favoured method is a Time Machine back up and a straight clone of the hard drive with SuperDuper! In addition to those, I useDropboxTo store lots of my data

Tip:Take a look at the tutorials in our Data Backups and Storage session, To learn more about backing up your data

Upgrade or Clean Install

Very simple such that you might have upgraded through a number of iterations of OS X already, Apple makes the process, to upgrade to each new version of OS X

The latter being the reformatting of the hard drive and the complete installation of OS X from scratch, is one of personal preference, The question regarding an upgrade or a clean install

I prefer the clean install approach, personally, For me. A cathartic experience that allows me to ensure that OS X is running at optimal efficiency whereby I only install the apps that I depend upon and think carefully about installing anything else


A little bit of planning now will make the transition trouble-free, With the imminent release of Yosemite. In this tutorial I have shown how to check your hardware and software compatibility, I’ve shown you the importance of backing up your data and I’ve looked at upgrades versus clean installs

Or can be upgraded, perform an audit of the software that you use on your Mac to ensure that it is all compatible, Before you jump into Yosemite, before you upgrade the operating system. This will avoid the risk of problems following an upgrade to Yosemite

Continue reading
Final product image
What You'll Be Creating

The most important meal of the day is Adobe Illustrator. I'm pretty sure breakfast comes second. As such, we're going to combine the two and pay homage to the cereal boxes of our childhood with this cartoony box design

1. Start With a Sketch

Step 1

It's important to figure out your central character and layout within your sketch. I like sketching withinAdobe Illustrator CCItself (though you can import a sketch as well). Using the Paintbrush Tool (B)With FidelitySet to SmoothIn the Paintbrush Tool OptionsPanel and a default CalligraphicBrush selected, I've drawn out an excited cartoon character and blocked in the cereal's name above him.  

Take a look at , For a detailed guide to drawing the handsCartoon Fundamentals: How to Draw Cartoon Hands by 

Step 2

Since this is a cereal box, don't forget to showcase the cereal bowl. In this case, we'll be drawing (mostly) O-shaped cereal bits with the character jumping out of (or presenting) the bowl (which has been filled to the brim).  Group (Control-G)Together your sketch lines and lock the group in the LayersPanel, as you'll be tracing these when creating your final design

2. Form the Head

Step 1

Building up every bit of anatomy isn't necessary in this design.  

  1. Start with the face by tracing your sketch with the Pen Tool (P) 
  2. The face comprises half of the head and one ear. Jaw, and ear) separately and , You can draw portions of it (headUniteIn the PathfinderPanel
  3. Either set the stroke color to dark brown in order to create an outline, or Copy (Control-C)And Paste (Control-V)Set the fill and stroke color to dark brown, your face shape,  Stroke WeightTo 2PtsAnd AlignIt behind the original face
  4. In a darker flesh-tone (relative to whatever flesh-tone you've chosen) and place it behind the other head shapes, Draw a small D-like shape for the other ear.  For more info on various skin-tonescheck out this quick tip from yours truly.

Step 2

  1. I can now just trace it with the , Having figured out the hair during the sketch stagePen ToolAnd back, sides,  Think of hair as being in sections: bangs (fringe). Use the , If you want your hair design to be a bit more fluidPencil Tool (N)To draw it quickly and round out any edges by manipulating Live Corners
  2. Draw a shape that mimics the edges of the hair, Using the same dark flesh-tone used for the ear. This will serve to cast a shadow from the hair onto the face. Place the shape beneath the hair in the LayersPanel
  3. Don't forget a C-shape for the inside of the left ear

Step 3

Really excited face, The face is mostly built from simple shapes combined to form a really

  1. Draw two overlapping circles using the Ellipse Tool (L)If you set the fill color to null and the stroke to the same dark brown being used for outlines, you can then alter the width of the circles on the outer edges with the Width Tool (Shift-W)Drawn with the , The mouthPen ToolIs like a sideways jelly bean
  2. Or half-circle with a little leg on it, The nose is like an upside-down question mark
  3. I chose a light pink and drew a shape that takes up the lower half of the mouth, For the tongue
  4. The teeth are curved shapes which follow the contour of the mouth
  5. CopyAnd PasteThe circles created for the eyes and fill them with a light blue. Make sure the left eye overlaps the right

Step 4

Continuing with the eyes:

  1. Draw white circles that overlap the light blue ones from the previous step. If you select the light blue circle and its overlapping white counterpart, you can use the Shape Builder Tool (Shift-M)To separate the non-intersecting portion of the white circle (by selecting it),  DeselectAnd Delete
  2. Use the Width ToolTo increase the width of the eye's stroke. In this case, I PastedThe outline circle from the previous step and placed it over the white and light blue shapes forming the right eye
  3. The mouth needs an outline too.  CopyAnd PasteThe base mouth shape (that sideways jelly bean) and set the stroke to 1pt weight
  4. But above the eyes in the , draw a half circle and place it beneath the nose line, So that the nose doesn't appear transparentLayersPanel
  5. Thicken up the outline of the left eye too and draw two small circles for the eyes' pupils
  6. Using the Paintbrush ToolI drew two small eyebrows and ExpandedThem underObject

Step 5

 , When you're satisfied with your cartoon guy's headGroupEverything together.  , which helps define where the head ends and barely seen ear on the right begins), To add a thicker outline around the entire thing (while retaining the one drawn previouslyCopy PasteAnd UniteThe copied head in PathfinderSet the fill and stroke color to dark brown and the stroke weight to 2-3ptsDepending on what you prefer.  AlignThe head and its silhouette and GroupThem together.  

3. Let's Add a Body

Step 1

The shape of the body was figured out during the sketch stage, Once again

  1. And the insides of the shirt, a shirt, two arms, a neck, The body's sections are as follows: two hands. To , I found it easiest, for meCopy PasteAnd ReflectThe left arm (over a Vertical Axis) to get the right arm. I scaled and rotated it as well in order to fit with the sketch
  2. Using the technique from the previous section, give the neck and arms a 2pt WeightOutline
  3. Using the same dark skin-tone as used in the shadows on the face, draw shadow shapes for the palms of the hands, on the neck, and upper arms (where shadows from the sleeves are being cast)

Step 2

Use the Pen ToolStitching, to draw lines on the shirt denoting sleeve cuffs, and a collar.  Group , everything together and once againCopy Paste UniteIn The PathfinderApply a thick stroke weight to the shape, and , panelAlignBehind the main character.  GroupAll of this together and we'll move on to create the rest of the box design

4. Drawing Three-Dimensional Cereal

Step 1

Draw a circle within a large circle using the Ellipse ToolHit , With both selectedMinus FrontIn the PathfinderPanel. Select your flat donut shape and go to Effect > 3D> Extrude & BevelPlay with the rotation, or enter in the following details to get the same 3D shape below:

  • X Axis: 
  • Y axis: 
  • Z axis: -2°
  • Extrude Depth: 34 pt
  • Surface:Plastic Shading

Step 2

Go to , With the 3D donut shape selectedObject> Expand Appearance.  Use the Direct Selection Tool (A)To select the face of the cereal shape and set the fill color to a light tan. Select everything but the face of the object and set the fill color to a darker tan. Follow the steps from Step 2, Section 3To give the cereal shape a thick outlineGroupThese shapes together. You'll be using this process of drawing a flat image, changing the fill colors, extruding it, and giving it an outline for the other cereal pieces later in this tutorial

Step 3

CopyAnd PasteSeveral of the "Vector O's"RotateThem around as you see fit, or even create new 3D versions of them for extra variety in each cereal object's perspective.  SelectA group of them and in the Pattern OptionsCreate a new pattern, panel. Choose Hex by ColumnOr whatever will give you the most coverage.  SaveYour pattern and move on to the next step

Step 4

  1. Draw a large ellipse that will serve as the top of the bowl. Set the fill color to a light cream (this will serve as our milk)
  2. CopyAnd PasteAs that's coming up shortly), that ellipse and apply your new pattern to it (please ignore the lack  marshmallow shape
  3. PasteCereal shapes around the bowl in order to cover any pattern edges and to make the cereal bowl look like it's filled to the brim with delicious "Vector O's". Use the Pen ToolTo draw shallow bowl. Only the sides and top edge will show in the final design, so how precise in the bowl's perspective you are is your call entirely

5. Marshmallow Shapes!

Step 1

The previous section mentioned some of the Illustrator-themed marshmallow shapes we're adding to the bowl of cereal. Let's get working on them. Let's start with a Pen Tool-inspired marshmallow. Draw one-half of the design, seen below, with thePen ToolItself.  CopyAnd PasteThe object and ReflectIt over a Vertical AxisUsing the steps from Section 4, Step 1Create a 3D version of the pen tool and change the shadow colors to dark teal. Draw a circle in the center of the shape and GroupTogether. Give it a thick outline just like the cereal O's

Step 2

For the next marshmallow shape, we'll be creating a yellow pencil. Use the Rectangle Tool (M)To draw a narrow rectangle. Round the corners by selecting it with the Direct Selection ToolAnd pulling the Live CornersInward. Cut the shape in half (or more) by drawing a rectangle over it and hitting Minus FrontIn The PathfinderPanel

Step 3

  1. Use the Polygon ToolTo draw a simple triangle.  
  2. AlignAnd ScaleIt so its base is the same width as the rest of the pencil shape
  3. Using the PathfinderPanel again, cut off the tip of the triangle
  4. From here, you can draw some narrow stripes on the pencil and proceed to creating a 3D object as done with the other cereal shapes

Step 4

Since it's more of the same in creating them, The other marshmallow shapes get a quick overview

  1. Note how different values in rotating over different axes will give you different perspectives for your marshmallows
  2. The third shape is a paintbrush. I draw it based off of the Paintbrush ToolIcon with the Pencil Tool 
  3. The final marshmallow is the Selection ToolRendered in green. Indented triangle, It's made of a rectangle and a large

Step 5

Scatter your marshmallows and "Vector O's" around the design, making sure to put some near and on the character's hand as though he's popping out of the bowl and throwing them around.  GroupAll of this together. You'll notice, too, the pen icon used for the blue marshmallow was also added to his shirt. Clearly, this guy loves vector art

6. Sticker and Background

Step 1

Let's draw that cute sticker located in the lower right side of the composition

  • Draw a circle with the Ellipse ToolAnd fill it with a dark yellow color. Go to Effect > Distort & Transform > Zig & ZagAdjust the effect to your liking. The larger the size, the deeper the points will plunge into the center of the circle. And the more ridges per segment, the more points you'll have around your circle
  • Create an outline for your sticker shape and make sure the corners are rounded out either through manipulating Live CornersOr choosing Rounded Caps and CornersIn the StrokePanel
  • To make it shiny, draw a circle with a Linear GradientGoing from Light yellow at 100% To 0%OpacityAnd angled from the top left. Delete any non-intersecting portions of the circle from your sticker shape using the Shape Builder Tool
  • Finally, use a comic-style font likeArch Rival OrToontime for your text layers

Step 2

The background is fairly simple. Draw a large rectangle over the artboard in "teal" using the Rectangle ToolWith the Pen ToolDraw long shapes radiating outwards from the center (or so) of the design.  UniteThem in the PathfinderPanel and apply a RadialGradient to the Compound ShapeGoing from light blue in the center and teal at the edges. Most of your design will cover the more opaque portions of the shape in the center

7. The Logo

Step 1

Using another comic-like font, I wrote out out cereal's name. This font is calledHelsinkiI recommend using something that is childlike and either rounded or looks hand-drawn.  Extrude & BevelJust like the marshmallow shapes were before

Step 2

The steps to creating the logo are pretty simple:

  1. ExpandYour 3D text in ObjectAnd UngroupSo you can move each letter up, or rotate it to your liking, down
  2. Change the letters' faces to light blue and their shadow colors to teal
  3. ScaleSome of the letters up, like the CAnd the OAnd some of them down, like theE
  4. Group The text together once satisfied with the placement and create an outline by Copying PastingAnd Uniting The copied group in thePathfinderPanel.  Set the stroke weight at 3-5ptsAnd AlignIt behind the first logo group. Ready for the box design, Note how the text curves a bit.  

Step 3

Put it all together. I decided the character should overlap the logo a bit and the additional text of "with marshmallow tools" was set in Arch Rival  again. Bowl, and cereal bits flying around in order to set them apart from the background further, I also added two extra outlines to the character.  

You can call this project well done, with the main design completed, At this point. Or, you can continue on to create a digital cereal box mock-up

8. The Side Panel

Step 1

Before we bother with mocking up the design, we need to create the side panel of the cereal box. I've decided to go to the trouble of creating the full nutrition facts. Use the Rectangle Tool To draw a narrow rectangle filled with white and the stroke color set to black and a 2pt weightFor the lines, I used theLine Segment Tool tO draw each line, making sure the width of the lines matched the width of the initial rectangle. Check out a real cereal box (or other foodstuff) in order to match theFDA's guidelines for nutrition factsUnless you're going the route of just making it all up, then take whatever artistic liberties you want

Step 2

The font used for "Nutrition Facts" isFranklin GothicFor the rest of the label, I usedLiberation SansAs I prefer it over Arial or Helvetica. Make sure that you're aligning your text so that the vitamins and major nutritional components line up while their values and percentages line up on the other side

Step 3

The side panel is also teal (though without the radiating gradient shapes), Like the front of the cereal box.  CopyAnd PasteThe logo and ScaleIt down so it fits within the rectangle.  PasteYour nutrition facts and assorted instances of the marshmallow designs too

Step 4

You'll need to open up Adobe Photoshop CCFor the completion of the rest of this tutorial. You'll also needthis great cereal box mock-up on Graphic River created by ZeislaThere's an instructional PDFWith the download file

Open up the file labeled 3. PSDIn PhotoshopYou'll notice the top layer is titled "Box (Your Image Here)".  Right-clickThis layer and hit Edit ContentS PasteYour front box design and make sure it fills the entire document. Hit SaveAnd go back to 3. PSDYou'll notice your design is now on the previously blank box. Repeat this step with the second layer labeled "Box Side (Your Image Here)"For your previously created side panel (you can also assemble your side panel contents onto the file directly)

Great Job, You're Done!

Throw some marshmallows in the air, you're done. I doubt you want ants, Then pick them up again. Check out these fantastic tutorials:,  For more fun with packaging design and cartooning

Continue reading
Final product image
What You'll Be Creating

Blogging, forums—these are just some of the many ways to promote your brand or sell your product online, social media. But if you’re more of a public speaker and want to share your ideas upfront with your audience, you can set up and host a webinar

A webinar or a web-based seminar is a great way to build your brand and/or promote a product you want to sell online. Webinar software are quite expensive with a steep learning curve to get through, Unfortunately. AnyMeeting, and live support, ads-free experience, Popular software like GoToWebinar, and ClickWebinar charge $30-$99/month based on the number of attendees and features like recordings

If you’re on a shoestring budget but want to get the word out about your product or brandGoogle+ Hangouts on AirIs a great free alternative. Tied in with Google+ and its suite of features, or paying a premium fee if you only host webinars occasionally, you can start a hangout and not have to worry about limits on your attendees, ads annoying the heck out of your audience

I’ll show you how to create, and broadcast a webinar to your audience using Google+ Hangouts on Air, To get you started, set up. I’ll be using a Google+ page I created for my blog so you can see how you can create and host webinars to promote and build your product and brand

Note: You will need a Google account to log-in to Google+ and create a Hangout. You can use a free Google account or Google apps account if you own a unique domain name. If you don’t have anyyou can create one here

Step 1: Create a Hangout on Air

The first step is to create a Hangout on Air through your Google+ page. And as it expands select Hangouts, To do this, hover your cursor over the sidebar

create a hangout
You can start a hangout using either your Google+ profile or page

Inside the Hangouts home page, you’ll see three tabs:HomeHangouts on AirAndVideo HangoutsYou’ll see a blue button to start a new hangout on air, Whether you’re on the Home or Hangouts on Air tab. Click to begin creating your event

add details to hangout
Tip: Make sure to set the event's schedule under the right time zone

A white pop-up appears where you’ll add all of the details of your webinar. And select if the webinar will be broadcasted Now or Later, the details of the webinar, Write the webinar title. Time, make sure to select the right time zone and the date, and duration of the webinar, If you intend to host it on a later date. Finally, you can choose to make your webinar public or exclusive to a specific audience or circle

When you’re done, click the greenShareButton to create your webinar

NoteGoogle will prompt you to verify your YouTube account, : If this is your first hangout. This will enable sharing and publishing the webinar on your YouTube channel. You can then edit and download the video post-recording

Step 2: Customize Your Webinar With Trailers and Apps

Think of your webinar as an event you want your audience to enjoy and remember. You’ll want to customize your webinar page by choosing an event theme or uploading either a video or photo trailer they can watch before the show starts

You’ll want to activate two very important apps that are a must-have to any online event:, NextQ&AAndShowcase

qa and showcase apps

A Q&A session gives your audience the opportunity to ask questions and engage with you further.  Q&AAllows you to accept questions posted by your audience and mark them as answered once they’ve received an answer

ShowcaseProducts, and other online content to your audience, allows you to send links to articles, websites. If you’re selling a product, the product page, and other useful info, this is a great way to send people links to free resources

Step 3:  Invite Your Audience to Your Webinar

share hangout
You can embed your video hangout using the video embed option

It’s time to invite people in, Once you’ve spruced your webinar page up. There are three ways to publicize and spread the word

  1. Invite people manually using the Invite more button under the Viewers section found at the bottom right of the page
  2. Share the direct link to your event page to interested attendees
  3. Embed the video hangout to a post or page on your website

Assuming you’ve done an amazing job promoting and sharing your webinar, your audience members will soon accept your invitations to attend. It’s time to prepare for the show, Once you have enough people attending

Step 4: Broadcast Your Webinar

You’re now about get up on stage and present your idea or topic to your audience. And and, make sure your presentation, hangout settings, To ensure that your webinar runs smoothly as possibleall of the apps you want to useFor the presentation are correct and activated

Click on the blueStartButton on the hangout page. This will launch a new window where you will manage the hangout as it is broadcasted. Google will then prompt you to invite guests to join your hangout or video call (you can invite up to 10 people). If you prefer that your audience simply watch your presentation, you can skip this

Hover your cursor over the sidebar to your left to reveal the available options, To change the default settings or add new apps to the hangout

select a window
Minimize the number of active windows so you won't get mixed up

Ideally you’d have a slideshow presentation to show to your audience as you speak. Click on the green, To share your presentationScreenshareButton and select the active window to show during the webinar. Hit the green, When you’re readyStart broadcastButton to go live

qa app
This is what the webinar and Q&A session looks like from the audience point of view

If your webinar includes a Q&A session, make sure to encourage your audience to submit their questions using the Q&A app. At the end of your presentation, you can then click on the Q&A app to see all of the submitted questions. Select a question, To answer each one, answer it during the call, and hit the Done button to move on to the next question

Step 5: Edit or Download Your Recording on YouTube

You’ve successfully completed your first webinar. Congratulations

And click the Edit button to edit your video, If you’d like to share the webinar as a replay for those who weren’t able to attend, look for the recording, go to the Video Manager section of your YouTube account. Or even subtitles, add audio or annotations, You can then choose to enhance the recording

youtube edit video
Fix, and adjust your video using YouTube's video editing feature, Trim

You can also download an. Mp4 copy of your webinar to your desktop, which you may want to reuse or repurpose in the future

download recording
Download recordings to reuse or repurpose in the future

Closing Thoughts

When done right, hosting your own webinar can create a massive following for you and your brand, and with Google+ Hangouts on Air you’re able to make that happen for free

Thanks to the great content that you’ve shared with them, your audience now have a deeper relationship with you as an authority and are much more inclined to support your product or brand, On the flip side

Continue reading
Final product image
What You'll Be Creating


Back in the days of film cameras, macro (or micro) photography referred to an image magnification that was 1:1 or greater in relation to the 35mm film frame

With the rise of digital cameras of varying sensor sizes, this measurement is almost obsolete.   Today, bridge cameras and DSLRs (entry level to intermediate) will have a macro mode, depicted by a flower, most of compact cameras

Macro function on a compact camera
The macro function on a compact camera

 This will allow you to focus a little bit closer than the usual minimum distance and also tell your camera to select a wide aperture to keep the background out of focus. If you’re using a full frame dSLR then you’ll probably want to shoot in Aperture priority mode (A) so you can control your light and depth of field

Even without a dedicated macro lens, Close-up and macro photography is achievable in many ways. In this tutorial, I’ll go through some of the most popular macro-photography lenses and methods for close-up photography

Technique 1: A Dedicated Macro Lens

A specialised macro lens can range in price from a couple of hundred pounds to thousands of pounds. The length of macro lenses vary too, so think about what subject matter you want to shoot before you decide. For example, so if you want to shoot insects, you’d need to choose a longer lens, A longer focal length will allow you a greater focussing distance

Tamron 90mm 11

Macro lenses have something called flat-field focus. Resulting in the subject being sharp in the middle and then less so towards the edges, A traditional lens will curve. Which is an advantage over using a regular lens for macro, Flat-field lenses are sharp right through, from focal point to edges

Macro lenses are usually quite fast (large maximum aperture) which is great as you’ll need lots of light when photographing a subject up close. Meaning you’ll have less in focus than you might like, This creates an incredibly narrow depth of field though

Be sure to get a macro lens that will work with your DSLR body. Some lenses are for smaller sensors. So if your body doesn't have one and you won't be able to auto focus, Some lenses don’t have internal motors. Having said that, when doing close-up stuff I always manual focus as AF is often too slow and inacurate when there’s a lack of light and a narrow depth of field


Technique 2: Extension tubes

Extension tubes are my favourite way to do macro without a specialised lens. You can buy different makes and sizes of tubes; I have a set of Kenko ones that look like this:

Kenko extension tubes
Kenko extension tubes

They cost around £99 but cheaper options are available. Be aware that some don’t have metal contacts inside, so they won’t ‘talk’ to your camera or auto focus. You can use all three or any combination of sizes together:

Kenko extension tubes apart
Kenko extension tubes, separated

Creating some distance and turning an ‘ordinary’ lens into one capable of close focus, Extension tubes screw between the camera body and lens. I've found this particularly works well with my 135mm f/2 because of both the length and it being a fast lens; but I've tried it with a telephoto and with the macro lens and all produce very pleasing results

The trade-off with extension tubes is a loss of light.   This can be as much as a couple of f-stops, so again this will having a bearing on which lens produces the best results. Try and use lenses that stop down to atLeastF/2. 8 for real close up work

So you’ll be able try all your lenses and see which works best, The great thing about extension tubes is that they’re designed to fit the camera in the same way as all your lenses. The heavier your camera will be to lift and keep steady if you’re shooting hand-held, Be aware that the more of the extension tubes you use and the bigger the lens

Kenko extension tubes attached to camera body and 135mm f2 lens
Kenko extension tubes attached to D800 and Nikon 135mm f/2

Also, when using a regular lens it’s unlikely you’ll have the benefit of flat-field focus as the lens will most likely curve, as mentioned earlier. This is less important and probably not noticeable, When working with narrow depth of field though

Reversing ring

 A reversing ring for Nikon and 52mm thread size
A 52mm thread size reversing ring

This method is probably the cheapest way to get macro results. Allowing you to focus closer to a subject, You can use a reversing ring, which mounts a normal lens onto your camera backwards. The results are vastly different from a dedicated macro lens but can create a very nice effect. Reversing rings work well with prime lenses (a fixed focal length): a decent used 50mm can be picked up very cheaply and the ring itself is less than £10. Make sure you get the correct size ring for the lens you want to use and always be aware that the rear optic will be exposed so be careful not to bump or scratch it

50mm lens reverse mounted on camera body using reversing ring
50mm lens mounted on to D800 using reversing ring


As a quick comparison, I chose this Kodak Instamatic as my subject:

Instamatic 300 our test subject

I took all of the pictures on ‘auto (or P)’ so that the only variable is the subject. Moving only my upper body with the camera back or forwards depending on what the focal length of the method would allow, I sat less than a foot away from the table. It’s a reflection on the method, so if they’re not tack sharp, not the equipment, as I said, but it’s the best way to show you the results, not necessarily set to the best settings, The pictures are handheld and. These were all taken with a Nikon D800

Macro lens: Tamron 90mm

Tamron 90mm 11
Results with Tamron 90mm

Sharp results but you have to lean right into the subject to get a close focus, potentially blocking your own light

Extension tubes – Kenko three tube set: 12mm, 20mm and 36mm

The two examples I’ve chosen are a 50mm as they’re quite common and cheap to pick up and a 135mm which has a longer focal length, As these can be used with just about any lens depending on fit

50mm f18 with no tubes attached
Results with 50mm lens and no extension tubes
This is the closest you can focus with the lens as it is. Here it is when you add the three Kenko tubes:
50mm with all three Kenko extension tubes attached
Results with 50mm lens and extension tubes attached

As you can see there’s quite a difference. With this lens being a f/1. 8, it really compensates for any loss of light using the tubes. You have to be fairly close, Again, but not as close as with the Tamron

Now the 135mm f/2:
Nikon 135mm f2 with no extension tubes attached
Results with 135mm lens and no extension tubes

I had to lean quite far back to get this one with it being a longer focal length, Sat in the same place as for the other examples. Now we add the tubes:

Nikon 135mm f2 plus all 3 Kenko extension tubes
Results with 135mm lens plus extension tubes

A huge difference, Again. But I was able to be much further back with my upper body, Not quite as close as the 50mm. For example, This is a must if photographing insects or small animals

Reversing ring and 50mm f/1. 8

I only have a reversing ring that fits this lens but you can get them for almost any thread size

Nikon 50mm f18 mounted backwards with a reversing ring
Results with 50mm lens mounted backwards onto the camera with a reversing ring

As you can see, the results with the 50mm mounted backwards aren’t as close as with the tubes. The image was much darker through the viewfinder so it’s harder to see your focus. With the camera not being connected to the lens either, you’d have to monitor your own aperture and focus


The methods in this tutorial aren't the only methods of capturing macro, As I've mentioned, but they are the ones I've used most often and had consistently good results with

My macro lens is one of my favourite lenses, it’s tack sharp, fast and also makes a great portrait lens. It’s the lens I use for nearly all of my macro work, although the extension tubes are racing for that joint first position

Great for those who don’t want to invest in a specialised lens, The benefit of the extension tubes is that you can use them with your other lenses.   You can also use them independent of one another for different results. You can get cheaper ones than the ones I've mentioned and you can get some stunning results with them

Reversing rings aren't worth wasting your time (or money) on, In my opinion. They’re cheap but the results can be unpredictable and you risk your lens by exposing the rear element, Yes

If you’re really into your macro, buy a specialist lens and it will open up a whole new world to you. If you just want to give macro a go or want macro on a tighter budget, try the tubes

Continue reading

InWhat's in a Projectile Physics EngineWe covered the theory and essential elements of physics engines that can be used to simulate projectile effects in games like Angry Birds. We'll cement that knowledge with a real example, Now.  I'll break down the code for a simple physics-based game that I've written, In this tutorial, so you can see exactly how it works

For those interested, the example code provided throughout this tutorial uses the Sprite Kit API provided for native iOS games.  but the concepts and their application can be used in any 2D physics engine or world, This API uses an Objective-C wrapped Box2D as the physics simulation engine

Building a Game World

Here is the sample game in action:

The overall concept of the game takes the following form:

  1. Building a tower, A structure of platforms with physics bodies are added to the level
  2. One or more objective objects are placed within the tower, each with a physics body assigned to it
  3. The simulation takes over and computes the results for us, A firing mechanism shoots a projectile body with an momentary impulse; when the projectile's body collides with the platforms' bodies
  4. It fades from the scene, If a projectile or a platform touches the objective, and the player wins. This collision is detected using the physics bodies, so that the simulation maintains its realism at the point of collision

Our first use of physics will be to create an edge loop body around our screen's frame. The following is added to an initializer or -(void)loadLevel method:

Basically creating a "bounds"
self, //create an edge-loop physics body for the screen. PhysicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self. Frame];

This will keep all of our objects within the frame, so that gravity won't pull our whole game off the screen

Adding Objects

Let's look at adding some physics-enabled sprites to our scene. We will look at the code for adding three types of platforms, First. Rectangular, and triangular platforms to work with in this simulation, We will use square

-(void)createPlatformStructures:(NSArray*)platforms {
    for (NSDictionary *platform in platforms) {
        //Grab Info From Dictionay and prepare variables
        int type = [platform[@"platformType"] intValue];
        CGPoint position = CGPointFromString(platform[@"platformPosition"]);
        SKSpriteNode *platSprite;
        platSprite. ZPosition = 10;
        //Logic to populate level based on the platform type
        if (type == 1) {
            platSprite = [SKSpriteNode spriteNodeWithImageNamed:@"SquarePlatform"]; //create sprite
            platSprite. Position = position; //position sprite
            platSprite. Name = @"Square";
            CGRect physicsBodyRect = platSprite. Frame; //build a rectangle variable based on size
            platSprite. PhysicsBody = [SKPhysicsBody bodyWithRectangleOfSize:physicsBodyRect. Size]; //build physics body
            platSprite. PhysicsBody. CategoryBitMask = otherMask; //assign a category mask to the physics body
            platSprite. PhysicsBody. ContactTestBitMask = objectiveMask; //create a contact test mask for physics body contact callbacks
            platSprite. PhysicsBody. UsesPreciseCollisionDetection = YES;
        }Else if (type == 2) {
            platSprite = [SKSpriteNode spriteNodeWithImageNamed:@"RectanglePlatform"]; //create sprite
            platSprite. Position = position; //position sprite
            platSprite. Name = @"Rectangle";
            CGRect physicsBodyRect = platSprite. Frame; //build a rectangle variable based on size
            platSprite. PhysicsBody = [SKPhysicsBody bodyWithRectangleOfSize:physicsBodyRect. Size]; //build physics body
            platSprite. PhysicsBody. CategoryBitMask = otherMask; //assign a category mask to the physics body
            platSprite. PhysicsBody. ContactTestBitMask = objectiveMask; //create a contact test mask for physics body contact callbacks
            platSprite. PhysicsBody. UsesPreciseCollisionDetection = YES;
        }Else if (type == 3) {
            platSprite = [SKSpriteNode spriteNodeWithImageNamed:@"TrianglePlatform"]; //create sprite
            platSprite. Position = position; //position sprite
            platSprite. Nil, name = @"Triangle";
            //Create a mutable path in the shape of a triangle, using the sprite bounds as a guideline
            CGMutablePathRef physicsPath = CGPathCreateMutable();
            CGPathMoveToPoint(physicsPath, -platSprite. Size. Width/2, -platSprite. Size. Nil, platSprite, height/2);
            CGPathAddLineToPoint(physicsPath. Size. -platSprite, width/2. Size. PlatSprite, nil, height/2);
            CGPathAddLineToPoint(physicsPath. Size. Height/2);
            CGPathAddLineToPoint(physicsPath, nil, -platSprite. Size. Width/2, -platSprite. Size. Height/2);
            platSprite. PhysicsBody = [SKPhysicsBody bodyWithPolygonFromPath:physicsPath]; //build physics body
            platSprite. PhysicsBody. CategoryBitMask = otherMask; //assign a category mask to the physics body
            platSprite. PhysicsBody. ContactTestBitMask = objectiveMask; //create a contact test mask for physics body contact callbacks
            platSprite. PhysicsBody. UsesPreciseCollisionDetection = YES;
            CGPathRelease(physicsPath);//release the path now that we are done with it
        }[self addChild:platSprite];

We'll get to what all the property declarations mean in a bit. For now, focus on the creation of each body. Using the sprite's bounding box as the body size, The square and the rectangular platforms each create their bodies in a one line declaration. But calculates a triangle at the corners and halfway points of the frame, The triangle platform's body requires drawing a path; this also uses the sprite's bounding box

But we will use a circular physics body, is similarly created, The objective object, a star

-(void)addObjectives:(NSArray*)objectives {
    for (NSDictionary* objective in objectives) {
        //Grab the position information from the dictionary provided from the plist
        CGPoint position = CGPointFromString(objective[@"objectivePosition"]);
        //create a sprite based on the info from the dictionary above
        SKSpriteNode *objSprite = [SKSpriteNode spriteNodeWithImageNamed:@"star"];
        objSprite. Position = position;
        objSprite. Name = @"objective";
        //Assign a physics body and physic properties to the sprite
        objSprite. PhysicsBody = [SKPhysicsBody bodyWithCircleOfRadius:objSprite. Size. Width/2];
        objSprite. PhysicsBody. CategoryBitMask = objectiveMask;
        objSprite. PhysicsBody. ContactTestBitMask = otherMask;
        objSprite. PhysicsBody. UsesPreciseCollisionDetection = YES;
        objSprite. PhysicsBody. AffectedByGravity = NO;
        objSprite. PhysicsBody. AllowsRotation = NO;
        //add the child to the scene
        [self addChild:objSprite];
        //Create an action to make the objective more interesting
        SKAction *turn = [SKAction rotateByAngle:1 duration:1];
        SKAction *repeat = [SKAction repeatActionForever:turn];
        [objSprite runAction:repeat];

Ready, Set, Fire!

The cannon itself doesn't need any bodies attached, as it has no need for collision detection. We will simply use it as a starting point for our projectile.  

Here is the method for creating a projectile:

Give it a position and name
    projectile = [SKSpriteNode spriteNodeWithImageNamed:@"ball"];
    projectile, -(void) addProjectile {
    //Create a sprite based on our image. Position = cannon. Position;
    projectile. ZPosition = 20;
    projectile. Name = @"Projectile";
    //Assign a physics body to the sprite
    projectile. PhysicsBody = [SKPhysicsBody bodyWithCircleOfRadius:projectile. Size. Width/2];
    //Assign properties to the physics body (these all exist and have default values upon the creation of the body)
    projectile. PhysicsBody. Restitution = 0. 5;
    projectile. PhysicsBody. Density = 5;
    projectile. PhysicsBody. Friction = 1;
    projectile. PhysicsBody. Dynamic = YES;
    projectile. PhysicsBody. AllowsRotation = YES;
    projectile. PhysicsBody. CategoryBitMask = otherMask;
    projectile. PhysicsBody. ContactTestBitMask = objectiveMask;
    projectile. PhysicsBody. With the physics body attached
    [self addChild:projectile];, usesPreciseCollisionDetection = YES;
    //Add the sprite to the scene

Here we see a more complete declaration of some properties assignable to a physics body. When playing with the sample project later, try altering theRestitutionFrictionAndDensityOf the projectile to see what effects they have on the overall gameplay. (You can find definitions for each property inWhat's in a Projectile Physics Engine?)

The next step is to create the code to actually shoot this ball at the target. We'll apply an impulse to a projectile based on a touch event:, For this

Location, -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */
    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];
        NSLog(@"Touched x:%f, y:%f". Location, x. Y);
        //Check if there is already a projectile in the scene
        if (. Add it
            isThereAProjectile = YES;
            [self addProjectile];
            //Create a Vector to use as a 2D force value
            projectileForce = CGVectorMake(18, 18);
            for (SKSpriteNode *node in self, isThereAProjectile) {
            //If not. Children){
                if ([node. Overtaking gravity and friction temporarily
                    [node, name isEqualToString:@"Projectile"]) {
                    //Apply an impulse to the projectile. PhysicsBody applyImpulse:projectileForce];

Another fun alteration to the project might be to play with the impulse vector value. Forces—and therefore impulses—are applied using vectors, giving magnitude and direction to any force value

And we can shoot at them, Now we have our structure and our objective, but how do we see if we scored a hit

Collision Course

A quick pair of definitions:, First

  • AContactIs used when two bodies touch
  • ACollisionIs used to prevent two bodies from intersecting

Contact Listener

The physics engine has been handling contacts and collisions for us, So far. What if we wanted to do something special when two particular objects touch. We need to tell our game that we want to listen for the contact, To start with. We will use a delegate and a declaration to accomplish this.  

We add the following code to the top of the file:

@interface MyScene ()<SKPhysicsContactDelegate>


And add this statement to the initializer:

Self. PhysicsWorld. ContactDelegate = self

This allows us to use the method stub depicted below to listen for contact:

-(void)didBeginContact:(SKPhysicsContact *)contact

{ //code


Though, we need to discuss, Before we can use this methodCategories


We can assignCategoriesTo sort them into groups, to our various physics bodies, as a property.  

Sprite Kit in particular uses bit-wise categories, meaning we are limited to 32 categories in any given scene. I like to define my categories using a static constant declaration like this:

//Create Physics Category Bit-Mask's

static const  uint32_t objectiveMask = 1 << 0;

static const  uint32_t otherMask = 1 << 1;

And that you can have 32 maximum), Note the use of bit-wise operators in the declaration (a discussion on bitwise operators and bit variables is beyond the scope of this tutorial; just know that they are essentially just numbers stored in a very quickly accessed variable

We assign the categories using the following properties:

PlatSprite. PhysicsBody. CategoryBitMask = otherMask; //assign a category mask to the physics body
platSprite. PhysicsBody. ContactTestBitMask = objectiveMask; //create a contact test mask for physics body contact callbacks

Doing the same for the other variables in the project, and also this discussion, let's us now complete our contact listener method stub from earlier

-(void)didBeginContact:(SKPhysicsContact *)contact
    //this is the contact listener method, we give it the contact assignments we care about and then perform actions based on the collision
    uint32_t collision = (contact. BodyA. CategoryBitMask. Contact. BodyB. CategoryBitMask); //define a collision between two category masks
    if (collision == (otherMask. ObjectiveMask)) {
        //handle the collision from the above if statement, you can create more if/else statements for more categories
        if (. IsGameReseting) {
            NSLog(@"You Win!");
            isGameReseting = YES;
            //Set up a little action/animation for when an objective is hit
            SKAction *scaleUp = [SKAction scaleTo:1. 25 duration:0. 5];
            SKAction *tint = [SKAction colorizeWithColor:[UIColor redColor] colorBlendFactor:1 duration:0. Tint]];
            SKAction *scaleDown = [SKAction scaleTo:0, 5];
            SKAction *blowUp = [SKAction group:@[scaleUp. 2 duration:0. 75];
            SKAction *fadeOut = [SKAction fadeAlphaTo:0 duration:0. And then run the action on it
            if ([contact, blowDown, fadeOut]];
            SKAction *remove = [SKAction removeFromParent];
            SKAction *sequence = [SKAction sequence:@[blowUp, remove]];
            //Figure out which of the contact bodies is an objective by checking its name, 75];
            SKAction *blowDown = [SKAction group:@[scaleDown. BodyA. Node. Name isEqualToString:@"objective"]) {
                [contact. BodyA. Node runAction:sequence];
            }Else if ([contact. BodyB. Node. Name isEqualToString:@"objective"]) {
                [contact. BodyB. Node runAction:sequence];
            }Restart the level
            [self performSelector:@selector(gameOver) withObject:nil afterDelay:3, //after a few seconds. 0f];



I hope that you've enjoyed this tutorial. We have learned all about 2D physics and how they can be applied to a 2D projectile game. And how physics can lead to some new and fun gameplay, I hope you now have a better understanding of what you can do to start using physics in your own games.  Let me know in the comments below what you think, I'd love to hear about it, and if you use anything you've learned here today to create projects of your own.  

A Note on the Example Project

I have included a working example of the code provided in this project asa GitHub repoThe fully commented source code is there for all to use.  

Some minor portions of the working project unrelated to physics were not discussed in this tutorial. So the code allows the loading of multiple levels using a property list file to create different platform arrangements and multiple objectives to hit, the project is built to be expandable, For instance. The game over section, and the code to remove objects and timers, were also not discussed, but are fully commented and available within the project files

Some ideas for features you could add to expand on the project:

  1. Different types of ammo
  2. Movable and scalable shot direction and magnitude
  3. More types and sizes of platforms
  4. Terrain
  5. Animation and sound effects 

Have fun.  Thanks for reading

Continue reading


Thank you so much! We are very happy with our new website. It is easy to use and all of our customers tell us, they love it.

Contact Us

  • 13245 Atlantic Blvd. #4352
    Jacksonville, FL 32225
  • 904-240-5823