ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark...

52
full circle magazine #70 1 Full Circle THE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY ISSUE #70 - February 2013 I I N N S S T T A A L L L L I I N N G G C C O O D D E E C C S S AND RIPPING DVDS IN UBUNTU Photo: mollybob (Flickr.com)

Transcript of ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark...

Page 1: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 1 contents ^

Full CircleTHE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY

ISSUE #70 - February 2013

Full Circle Magazine is neither affiliated with, nor endorsed by, Canonical Ltd.

IINNSSTTAALLLLIINNGG CCOODDEECCSSAND RIPPING DVDS IN UBUNTU

Ph

oto

:mo

llyb

ob

(Fli

ckr.

com

)

Page 2: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 2 contents ^

The articles contained in this magazine are released under the Creative Commons Attribution-Share Al ike 3.0 Unported l icense.This means you can adapt, copy, distribute and transmit the articles but only under the fol lowing conditions: you must attributethe work to the original author in some way (at least a name, emai l or URL) and to this magazine by name ('Ful l Circle Magazine')

and the URL www.ful lcirclemagazine.org (but not attribute the article(s) in any way that suggests that they endorse you or your use of the work). I fyou alter, transform, or bui ld upon this work, you must distribute the resulting work under the same, simi lar or a compatible l icense.Full Circle magazine is entirely independent of Canonical, the sponsor of the Ubuntu projects, and the views and opinions in themagazine should in no way be assumed to have Canonical endorsement.

Full CircleTHE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY

Cron p.17

LibreOffice - Part 22 p.14

Programming Python 40 p.08

Blender - Part 3 p.20

HowTo Opinions

Q&A p.46

Ubuntu Games p.48

Linux Certified p.XX

Command & Conquer p.06

Inkscape - Part 10 p.23

Columns

Linux Labs p.36

Review p.41

Web Dev p.27

MyOpinion p.XX

My Story p.38

Letters p.44

Ubuntu News p.04

Ask The New Guy p.33

Ubuntu Women p.XX

BACK NEXT MONTH

Graphics Web Dev

BACK NEXT MONTH

BACK NEXT MONTH

Page 3: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 3 contents ^

EEDDIITTOORRIIAALL

WELCOME TO ANOTHER ISSUE OF FULL CIRCLE!

This month, we have the usual Python, LibreOffice, Inkscape and Blender HowTo's.Joining them is an interesting HowTo on cron jobs. In other words: a script to do

something on a particular day or time. In this month's Linux Labs, Charles looks at thestrange world of DVD drives. Do manufacturers really hold back drive speeds? And for thismonth's review, we have Lucas telling us all about his new HTC One S phone.

I know I'm beginning to sound like a broken record (if you don't know what a 'record' is,ask your parents), but I need new articles. I'm left with very few desktop screens, no opinionarticles, only a couple of ‘my story’ articles, and I have one review left from Art still topublish. So, now's the time to submit that article you've always wanted (or promised) towrite. Have a read through our guidelines (http://url.fullcirclemagazine.org/75d471), thencheck the last page of this (or any) PDF issue for where to send your article. No articlesmeans no magazine folks. No excuses. Everyone has something (hardware/software) thatthey can review. Everyone has a story of how they found Linux. Everyone likes to show offtheir pretty desktop (with info please!). And everyone has an opinion – keep it short and Ican feature it on the currently ever shrinking Letters page.

All the best, and keep in touch!Ronnie

[email protected]

This magazine was created using :

Full Circle PodcastReleased monthly, each episodecovers all the latest Ubuntu news,opinions, reviews, interviews andlistener feedback. The Side-Pod isa new addition, it's an extra(irregular) short-form podcastwhich is intended to be a branchof the main podcast. It'ssomewhere to put all the generaltechnology and non-Ubuntu stuffthat doesn’t fit in the mainpodcast.

Hosts:• Les Pounder• Tony Hughes• Jon Chamberlain• Oliver Clark

http://fullcirclemagazine.org

Page 4: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 4 contents ^

UUBBUUNNTTUU NNEEWWSSWritten by The Ubuntu News Team

THE UBUNTU FAMILY

CONTINUES TO GROW;TABLETS NOW INCLUDED.

The Ubuntu website notes, “theUbuntu family of interfaces

now scales across all screens, so aphone can provide tablet, PC andTV experiences when docked.”The site also describes the Ubuntutablet as a secure thin client thatcan be managed with the same

tools as any Ubuntu server ordesktop which means that Ubuntucan now boast of a single OS for aphone, tablet, PC and TV.

http://www.ubuntu.com/2013/02/press-pack-ubuntu-tablet

UBUNTU DEVELOPER WEEK

IS BACK

Daniel Holbach announcesUbuntu Developer Week,

which will be held from 29th to31st of January 2013. Holbachwrites that, in the upcomingUbuntu Developer Week,attendees can expect “sessionsfrom hands-on introduction,packaging and Ubuntudevelopment to talks about how toquickly get involved in certainteams and interact with otherprojects and much much more.”

http://daniel.holba.ch/blog/2013/01/ubuntu-developer-week-is-back-2/

SMART SCOPES

Jono Bacon announcesincreased development effort

into the Unity dash and “SmartScopes” which “will result in asignificantly greater number ofscopes (potentially 100) shipped bydefault and a better searchexperience that is smarter in theway scopes are searched for terms,thus delivering better results andhigher performance.” Bacon also

notes that the CanonicalCommunity Team “will also belaunching a project over thecoming few weeks to grow therange of scopes ready for 13.04and ease the developmentprocess.”

http://fridge.ubuntu.com/2013/01/30/smart-scopes/

ANNOUNCING UBUNTU USER

DAYS FEB 9-10TH

José Antonio Rey announces theUbuntu User Days, which will

be held February 9th and 10th,2013 on IRC in #ubuntu-classroom(and #ubuntu-classroom-chat forquestions and discussion). Theschedule is available athttps://wiki.ubuntu.com/UserDays

Everybody is welcome toparticipate and get their chance tolearn about Ubuntu from Ubuntucommunity members.

http://ubuntuclassroom.wordpress.com/2013/02/02/ubuntu-user-days-next-weekend/

Page 5: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 5 contents ^

UBUNTU NEWS

STEAM CLIENT NOW

AVAILABLE IN UBUNTU

SOFTWARE CENTER

The Steam client is nowavailable in the Ubuntu

Software Center, after Valvereleased Steam for Linux officiallyon Thursday, February 14th. Tocelebrate, all Linux titles in theSteam store are on sale with up to75% off until February 21st. Usersrunning Team Fortress 2 in Linuxwill also receive an in-game Tuxpenguin item, when they play,through the end of the month.

http://blog.canonical.com/?p=2171

UBUNTU 12.04.2 LTSRELEASED

Ubuntu 12.04.2 has beenreleased, bringing with it

many improvements, including anupdated kernel and x stack, as wellas the ability to install on UEFIsystems with Secure Boot enabled.It also includes the updates sincethe last release, so that fewerupdates will need to bedownloaded after installation. Inaddition to Ubuntu 12.04.2 LTS,

Kubuntu 12.04.2 LTS, Edubuntu12.04.2 LTS, Xubuntu 12.04.2 LTS,Mythbuntu 12.04.2 LTS, andUbuntu Studio 12.04.2 LTS are nowavailable as well.

https://lists.ubuntu.com/archives/ubuntu-announce/2013-February/000166.html

13.04 (RARING RINGTAIL)ALPHA 2 RELEASED

The second alpha of 13.04Raring Ringtail has been

released, which includes Kubuntuand Ubuntu Cloud images. Themain Ubuntu version will not havealpha releases, however, optinginstead for daily quality and nightlytesting. The first milestone forUbuntu will be the Final BetaRelease, scheduled for the end ofMarch. These pre-release versionsshould not be used by anyoneneeding a stable system, butshould be free of “showstopper CDbuild or installer bugs.”

https://lists.ubuntu.com/archives/ubuntu-devel-announce/2013-February/001015.html

Many Thanks to the Ubuntu NewsTeam for their contribution this

month.

News this month comes from:

https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Issue301

https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Issue302

https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Issue303

https://wiki.ubuntu.com/UbuntuWeeklyNewsletter/Issue304

Page 6: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 6 contents ^

I haven't had many issues to fixthis month, nor have I had any

emails on topics I should cover. Assuch, I figured it could be time foranother series of usefulsuggestions. This time around, I'llcover: recording electric guitareasily, using an android phone as abarcode scanner, transferringpictures from your android phoneto your PC wirelessly, and a smalltip for cable management.

RECORD ELECTRIC GUITAR

As many of you have probablyheard, Ubisoft recently released agame called Rocksmith, whichfeatures a 1/4” jack to USB cable.Surprisingly enough, the cableseems to work without drivers onany OS (I've tested this on Mac OSX, Windows 8, and ArchLinux). So,for anyone who owns Rocksmithand an electric guitar – all youneed to do is install Audacity andrecord! Due to the fact that thecable contains a normal 1/4” jack,you can run your signal throughthe usual chain (pedals, preamps,etc) before heading into your PC.

It's also possible to buy just theReal Tone Cable, though, for theprice, you could probably findother solutions. If anyone isinterested in a review of Rocksmith(for Xbox), send me an email andI'll get right on it.

Note: The quality of the recordingis decent, but I found that it issometimes too quiet. However, it'seasily fixed with a bit of post-processing. Logically, the qualitywill also be dependent on thepickups in your guitar. All testingwas done with my PRS SE Custom24.

Sound samples (I apologize for thequality of the playing...):

https://soundcloud.com/lswest/chords-pure – Chords, played directlyfrom the guitar into the PChttps://soundcloud.com/lswest/santana-g3 – A little bit of a Santanatune, played through my Zoom G3multi-effects pedal and then intothe PC.

Comparing the quality of the G3(which can act as a USB interface)and the Rocksmith Real ToneCable, I'd have to say I prefer thecable – it sounds just as good (ifsometimes a bit quieter), and it's alot less of a hassle to set up.

BARCODE SCANNINGAnyone with an android phone

will probably know that there are a

multitude of barcode/QR codescanners available for Android.However, there is one app thatseems especially useful – WiFiBarcode Scanner. This app usesVNC to enable wireless scanning ofbarcodes to your PC from yourphone. For €0.99 in the Germanstore, it's definitely an alternativeto look at when contemplatingsome sort of wireless scanner. Whywould you want a barcode scanner?If you're someone who needs tomanage a large collection ofbooks, magazines, etc, or want tomanage any collection with custombarcodes/QR codes, then you mayappreciate the ability to scanbarcodes in order to input theminto spreadsheets or databases.This is definitely something I'drecommend to anyone thinking ofbuying a barcode scanner, as it's by

CCOOMMMMAANNDD && CCOONNQQUUEERRWritten by Lucas Westermann

SSuuggggeessttiioonnss

fullc

ircl

em

agaz

ine

.org

Page 7: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 7 contents ^

Lucas has learned all he knows fromrepeatedly breaking his system, thenhaving no other option but todiscover how to fix it. You can emailLucas at: [email protected].

far the cheapest solution I've seen,so long as you already own acamera-equipped Android device.Due to the fact that Google Playoffers full refunds (within 15minutes of downloading an app), itcan be a fairly risk-free attempt.

TRANSFER PHOTOS

WIRELESSLY

Google has very recentlyenabled full-size photo uploads toGoogle+ via instant upload on themobile app. Originally, it didn'tseem like such a useful option tohave. However, while writing theHTC One S review (see later in thisissue), I needed to take a fewphotos to demonstrate thecamera. Once taken, I would havehad to hunt through my room forthe micro USB cable in order totransfer them (or else install/usesomething like Dropbox orAirPlay). Instead, within a fewseconds (time will vary dependingon your upload speed), they werepresent and available on myGoogle+ private album – fromwhich I simply downloaded thephotos. So, for anyone who likesquick and easy solutions like this,and if you have a Google+ account,this may be worth noting.

CABLE MANAGEMENT

For the past few years, I've hada constant humming from my(admittedly older) Logitechspeakers. Originally, it wasn't a bigdeal – the humming was quietenough to be ignored. However, Irecently had to replace our router(which sits on my desk, along withall the other electronic stuff I own),and after which my speakers were

humming like crazy, even on thelowest volume setting. I chalkedthis up to signal interference frompower cables, and so I spent a daylabelling every cable I had, andthen grouping power cablestogether, ethernet cablestogether, USB, and audio cables.Once I grouped them, I created aseparate “pathway” for each groupto run through under my desk.Ethernet cables were wrappedaround the desk's supports, powercables ran down the left side of mydesk and then along the floor, andthe USB and audio cables ran downthe right side, spaced a bit apart.The result? No hum whatsoever.I've also noticed fewerdisconnection issues via ethernet,meaning I probably had someinterference there too. For anyoneexperiencing similar issues, sortingthrough your cables may be a verygood idea.

I hope at least a few peoplehave found this article useful, and,if you have any questions,comments, or suggestions, you canemail me at [email protected] you do email me, please put“C&C” or “FCM” in the subject line,so that it doesn't get lost in myinbox. I'd be extremely interestedto know if any readers find the

occasional music-oriented articlesinteresting – if they do, I would behappy to do an article on usingAudacity to record guitar (electric,acoustic, whatever). If anyonewishes to see some of thesearticles, just send me an emailletting me know.

COMMAND & CONQUER

Page 8: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 8 contents ^

HHOOWW--TTOOWritten by Greg Walters PPrrooggrraammmmiinngg IInn PPyytthhoonn:: PPtt 4411

Last month, we started ourcommand line version of a

library to talk to the TVRAGE webAPI. This month we will continueadding to that library. If you don’thave the code from last month,please get it now from pastebin(http://pastebin.com/6iw5NQrW)because we will be adding to thatcode.

The way we left the code, youwould run the program and enterin the terminal window the nameof a TV show you want informationon. Remember, we used the showContinuum. Once you pressed<Enter>, the program would callthe api and search by the name ofthe show, and then return a list ofshow names that matches yourinput. You then would select fromthe list by entering a number and itwould show “ShowID selected was30789”. Now, we will create thecode that will use that ShowID toget the series information. Oneother thing to keep in mind: thedisplay routines are there prettymuch to prove the routine works.The ultimate goal here is to createa reusable library that can be used

in something like a GUI program.Feel free to modify the displayroutines if you want to do morewith the standalone capabilities ofthe library.

The last routine we created inthe class was “DisplayShowResult”.Right after that, and before theroutine “main,” is where we willput our next routine. Theinformation that will be returned(there is other information, but wewill use only the list below) will bein a dictionary and will contain (ifavailable):• Show ID• Show Name• Show Link• Origin Country of network• Number of seasons• Series image• Year Started• Date Started• Date Ended

• Status(canceled, returning, current, etc)

• Classification(scripted, reality, etc)

• Series Summary• Genre(s)• Runtime in minutes• Name of the network thatoriginally aired the show• Network country(pretty much the same thing as OriginCountry)

• Air time• Air Day (of week)• TimeZone

Shown above is the beginningof the code.

You should recognize most ofthe code from last time. There’sreally not much changed. Here’smore code (shown below).

def GetShowInfo(self,showid,debug=0):showidstr = str(showid)strng = self.GetShowInfoString + self.ApiKey + "&sid=" + showidstrurllib.socket.setdefaulttimeout(8)usock = urllib.urlopen(strng)tree = ET.parse(usock).getroot()usock.close()dict = {}

for child in tree:if child.tag == 'showid':

dict['ID'] = child.textelif child.tag == 'showname':

dict['Name'] = child.textelif child.tag == 'showlink':

dict['Link'] = child.textelif child.tag == 'origin_country':

dict['Country'] = child.textelif child.tag == 'seasons':

dict['Seasons'] = child.textelif child.tag == 'image':

dict['Image'] = child.textelif child.tag == 'started':

dict['Started'] = child.textelif child.tag == 'startdate':

dict['StartDate'] = child.text

Page 9: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 9 contents ^

HOWTO - PROGRAMMING PYTHON Pt41

As you can see (above), there’snothing really new in this bit ofcode either, if you’ve been keepingup with the series. We are using afor loop, checking each tag in theXML file for a specific value. If wefind it, we assign it to a dictionaryitem.

Now things get a bit morecomplicated. We are going tocheck for the tag “genres”. This haschild tags underneath it with thename of “genre”. For any givenshow, there can be multiplegenres. We’ll have to append thegenres to a string as they come upand separate them with a verticalbar and two spaces like this “ | “(shown top right).

Now we are pretty much backto “normal” code (shown middleright) that you’ve already seen. Theonly thing that’s a bit different isthe tag “network” which has anattribute “country”. We grab the

attribute data by looking for“child.attrib[‘attributetag’]”instead of “child.text”.

That’s the end of this routine.Now (below) we’ll need some wayto display the information weworked so hard to get. We’ll createa routine called “DisplayShowInfo”.

Now, we must update the“main” routine (next page, showntop right) to support our two newroutines. I’m giving the entireroutine below, but the new code isshown in black.

Next page, bottom left, is whatthe output of “DisplayShowInfo”should look like, assuming youchose “Continuum” as the show.

Please notice that I’m notdisplaying the time zoneinformation here, but feel free toadd it if you wish.

elif child.tag == 'ended':dict['Ended'] = child.text

elif child.tag == 'status':dict['Status'] = child.text

elif child.tag == 'classification':dict['Classification'] = child.text

elif child.tag == 'summary':dict['Summary'] = child.text

elif child.tag == 'genres':genrestring = Nonefor subelement in child:

if subelement.tag == 'genre':if subelement.text != None:

if genrestring == None:genrestring = subelement.text

else:genrestring += " | " + subelement.text

dict['Genres'] = genrestring

elif child.tag == 'runtime':dict['Runtime'] = child.text

elif child.tag == 'network': # has attributedict['NetworkCountry'] = child.attrib['country']dict['Network'] = child.text

elif child.tag == 'airtime':dict['Airtime'] = child.text

elif child.tag == 'airday':dict['Airday'] = child.text

elif child.tag == 'timezone':dict['Timezone'] = child.text

return dict

def DisplayShowInfo(self,dict):print "Show: %s" % dict['Name']print "ID: %s Started: %s Ended: %s Start Date: %s Seasons: %s" %

(dict['ID'],dict['Started'],dict['Ended'],dict['StartDate'],dict['Seasons'])print "Link: %s" % dict['Link']print "Image: %s" % dict['Image']print "Country: %s Status: %s Classification: %s" %

(dict['Country'],dict['Status'],dict['Classification'])print "Runtime: %s Network: %s Airday: %s Airtime: %s" %

(dict['Runtime'],dict['Network'],dict['Airday'],dict['Airtime'])print "Genres: %s" % dict['Genres']print "Summary: \n%s" % dict['Summary']

Page 10: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 10 contents ^

HOWTO - PROGRAMMING PYTHON Pt41Next, we need to work on the

episode list routines for the series.The “worker” routine will be called“GetEpisodeList” and will providethe following information...• Season• Episode Number• Season Episode Number(the number of the episode within theseason)

• Production Number

• Air Date• Link• Title• Summary• Rating• Screen Capture Image of Episode(if available)

Before we start with the code,it would be helpful to revisit whatthe episode list request to the API

returns. It looks something likethat shown on the next page, topright.

The information for eachepisode is in the “episode” tag –which is a child of “Season” – whichis a child of “Episodelist” – which isa child of “Show”. We have to be

careful how we parse this. As withmost of our “worker” routines thistime, the first few lines (below) arefairly easy to understand by now.

Now we need to look for the“name” and “totalseasons” tagsbelow the “root” tag “Show”. Oncewe’ve dealt with them, we look for

def main():tr = TvRage()#--------------------# Find Series by name#--------------------nam = raw_input("Enter Series Name -> ")if nam != None:

sl = tr.FindIdByName(nam)which = tr.DisplayShowResult(sl)if which == 0:

sys.exit()else:

option = int(which)-1id = sl[option]['ID']print "ShowID selected was %s" % id

#------------------------------# Get Show Info#------------------------------showinfo = tr.GetShowInfo(id)#------------------------------# Display Show Info#------------------------------tr.DisplayShowInfo(showinfo)

ShowID selected was 30789Show: ContinuumID: 30789 Started: 2012 Ended: None Start Date:May/27/2012 Seasons: 2Link: http://www.tvrage.com/ContinuumImage: http://images.tvrage.com/shows/31/30789.jpgCountry: CA Status: Returning Series Classification:ScriptedRuntime: 60 Network: Showcase Airday: SundayAirtime: 21:00Genres: Action | Crime | Drama | Sci-FiSummary:Continuum is a one-hour police drama centered on KieraCameron, a regular cop from 65 years in the future whofinds herself trapped in present day Vancouver. She isalone, a stranger in a strange land, and has eight of themost ruthless criminals from the future, known as Liber8,loose in the city.

Lucky for Kiera, through the use of her CMR (cellularmemory recall), a futuristic liquid chip technologyimplanted in her brain, she connects with Alec Sadler, aseventeen-year-old tech genius. When Kiera calls and Alecanswers, a very unique partnership begins.

Kiera’s first desire is to get "home." But until shefigures out a way to do that, she must survive in ourtime period and use all the resources available to her totrack and capture the terrorists before they alterhistory enough to change the course of the future. Afterall, what’s the point of going back if the future isn’tthe one you left?

def GetEpisodeList(self,showid,debug=0):showidstr = str(showid)strng = self.GetEpisodeListString + self.ApiKey

+ "&sid=" + showidstrurllib.socket.setdefaulttimeout(8)usock = urllib.urlopen(strng)tree = ET.parse(usock).getroot()usock.close()for child in tree:

Page 11: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 11 contents ^

HOWTO - PROGRAMMING PYTHON Pt41

the “Episodelist”, “Season” tags.Notice above that the “Season” taghas an attribute. You might notice(in the code above) that we aren’tincluding the “Showname” or“Totalseasons” data in thedictionary. We are assigning themto a variable that will be returnedat the end of the routine to the

calling code.

Now that we have that portionof the data, we deal with theepisode specific information(shown below).

All that’s left now (bottomright) is to append the episode

specific information (that we’veput into the dictionary) to our list,and keep going. Once we are donewith all the episodes, we return tothe calling routine and, as I statedearlier, return three items of data,“ShowName”, “TotalSeasons” andthe list of dictionaries.

Next, we need to create ourdisplay routine. Again, it’s fairlystraightforward. The only thingthat you might not recognize is the“if e.has_key(‘keynamehere’)“ lines.This is a check to make sure thatthere is actually data in the“Rating” and “Summary” variables.

<Show><name>Continuum</name><totalseasons>2</totalseasons><Episodelist><Season no="1"><episode><epnum>1</epnum><seasonnum>01</seasonnum><prodnum/><airdate>2012-05-27</airdate><link>http://www.tvrage.com/Continuum/episodes/1065162187</link><title>A Stitch in Time</title><summary>Inspector Kiera Cameron loses everything she has and findsherself on a new mission when she and eight dangerousterrorists are transported from their time in 2077 back to2012 during the terrorist’s attempt to escape execution.She takes on a new identity and joins the VPD in order tostop the terrorists’ reign of violence. Along the way, shebefriends Alec Sadler, the 17 year old who will one daygrow up to create the technology her world is built upon.</summary><rating>8.8</rating><screencap>http://images.tvrage.com/screencaps/154/30789/1065162187.png</screencap></episode>

if child.tag == 'name':ShowName = child.text

elif child.tag == 'totalseasons':TotalSeasons = child.text

elif child.tag == 'Episodelist':for c in child:

if c.tag == 'Season':dict = {}seasonnum = c.attrib['no']for el in c:

if el.tag == 'episode':dict={}dict['Season'] = seasonnumfor ep in el:

if ep.tag == 'epnum':dict['EpisodeNumber'] = ep.text

elif ep.tag == 'seasonnum':dict['SeasonEpisodeNumber'] = ep.text

elif ep.tag == 'prodnum':dict['ProductionNumber'] = ep.text

elif ep.tag == 'airdate':dict['AirDate'] = ep.text

elif ep.tag == 'link':dict['Link'] = ep.text

elif ep.tag == 'title':dict['Title'] = ep.text

elif ep.tag == 'summary':dict['Summary'] = ep.text

elif ep.tag == 'rating':dict['Rating'] = ep.text

elif ep.tag == 'screencap':dict['ScreenCap'] = ep.text

self.EpisodeItem.append(dict)return ShowName,TotalSeasons,self.EpisodeItem

Page 12: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 12 contents ^

HOWTO - PROGRAMMING PYTHON Pt41Some shows don’t have thisinformation, so we include thecheck to make our print-to-screendata a little prettier (shown aboveright).

All that’s left is to update our“main” routine (next page, showntop right). Once again, I’m going toprovide the full “main” routinewith the newest code in blackbold.

Now, if you save and run theprogram, the output of the“GetEpisodeList” and“DisplayEpisodeList” will work.Shown bottom right is a snippet ofthe Episode information.

That’s it for this month. Asalways, you can find the full sourcecode on pastebin athttp://pastebin.com/kWSEfs2E. Ihope you enjoy playing with thelibrary. There is additional dataavailable from the API that you caninclude. Please remember, TVRageprovides this information for free,so consider donating to them tohelp their efforts at updating theAPI and for all their hard work.

I’ll see you next time. Enjoy.

def DisplayEpisodeList(self,SeriesName,SeasonCount,EpisodeList):print "--------------------------------------"print "Series Name: %s" % SeriesNameprint "Total number of seasons: %s" % SeasonCountprint "Total number of episodes: %d" % len(EpisodeList)print "--------------------------------------"for e in EpisodeList:

print "Season: %s" % e['Season']print " Season Episode Number: %s - Series Episode Number: %s" %

(e['SeasonEpisodeNumber'],e['EpisodeNumber'])print " Title: %s" % e['Title']if e.has_key('Rating'):

print " Airdate: %s Rating: %s" % (e['AirDate'],e['Rating'])else:

print " Airdate: %s Rating: NONE" % e['AirDate']if e.has_key('Summary'):

print " Summary: \n%s" % e['Summary']else:

print " Summary: NA"print "==========================="

print "------------ End of episode list ------------"

--------------------------------------Series Name: ContinuumTotal number of seasons: 2Total number of episodes: 10--------------------------------------Season: 1

Season Episode Number: 01 - Series Episode Number: 1Title: A Stitch in TimeAirdate: 2012-05-27 Rating: 8.8Summary:

Inspector Kiera Cameron loses everything she has and finds herself on a new mission whenshe and eight dangerous terrorists are transported from their time in 2077 back to 2012during the terrorist’s attempt to escape execution. She takes on a new identity andjoins the VPD in order to stop the terrorists’ reign of violence. Along the way, shebefriends Alec Sadler, the 17 year old who will one day grow up to create the technologyher world is built upon.===========================

Page 13: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 13 contents ^

Greg Walters is owner of RainyDaySolutions, LLC, a consulting companyin Aurora, Colorado, and has beenprogramming since 1972. He enjoyscooking, hiking, music, and spendingtime with his family. His website iswww.thedesignatedgeek.net.

HOWTO - PROGRAMMING PYTHON Pt41

def main():tr = TvRage()#--------------------# Find Series by name#--------------------nam = raw_input("Enter Series Name -> ")if nam != None:

sl = tr.FindIdByName(nam)which = tr.DisplayShowResult(sl)if which == 0:

sys.exit()else:

option = int(which)-1id = sl[option]['ID']print "ShowID selected was %s" % id

#------------------------------# Get Show Info#------------------------------showinfo = tr.GetShowInfo(id)#------------------------------# Display Show Info#------------------------------tr.DisplayShowInfo(showinfo)#-----------------------------# Get Episode List#-----------------------------SeriesName,TotalSeasons,episodelist = tr.GetEpisodeList(id)#-----------------------------# Display Episode List#-----------------------------tr.DisplayEpisodeList(SeriesName,TotalSeasons,episodelist)#-----------------------------

Page 14: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 14 contents ^

HHOOWW--TTOOWritten by Elmer Perry LLiibbrreeOOffffiiccee PPtt2233:: BBaassee FFoorrmmss && MMaaccrrooss

For the previous four parts ofthis series, we have slowly built

a database document usingLibreOffice's Base module. Wehave a database with forms toenter our data, and queries andreports for extracting the data. Wenow have a usable document forrecording our book library.However, our current design hasone flaw we need to overcome. Ifwe need to enter a new author ormedia type while we are in thebooks form, we have to close thebook form and open one of theothers. If we could enter newauthors and media types directlyfrom the books form, it wouldbehave more like an applicationand make data entry even easier.We can accomplish this through afew short macros.

The LibreOffice Basic languageis very similar to other Basiclanguages, such as Visual Basic forApplications. To manipulate theunderlying LibreOffice document,we access the Uno frameworkcontrolling the document. The Unoframework is quite complex, but Iwill explain, as best I can, the

properties and objects we will use.The goal is not to teach you how towrite LibreOffice macros, but howyou can use them.

MACRO SECURITY AND

OPTIONS

While macros allow us to docool things in our documents, theycan also cause problems. Somepeople use macros to compromiseother people's systems, therefore,we need to take a few minutes totalk about macro security. Whether

you are running LibreOffice on

Linux, Mac, or Windows, maliciouscode in a macro can compromiseyour data and possibly your entiresystem.

Macro security in LibreOffice issimple. Tools > Options opens theOptions dialog for LibreOffice.Under LibreOffice, select Security.Click on the Macro Security buttonto pop up the macro securityoptions. You have four options.Never use the Low security option– it will run macros without askingyou. I recommend the Mediumsecurity level. With this level, youare prompted whether to run themacros when you open a documentcontaining macros. The High andVery High options require acertificate or folder you designateas trusted. While this is great, Ibelieve nothing trumps theinstincts of the user. You usuallyknow whether you were expectinga document to contain macros.When in doubt, click No. Click OKto save your choice and OK to closethe options dialog.

Now, on to the fun stuff.

THE MACROS

We will write four macros forour database document. Three willdeal with opening forms, and thelast will update the list boxes forauthors and media types. Thegeneral idea behind macros is toaccomplish tasks that are not builtinto the program, or to simplifycomplex tasks. Our macros reallyaccomplish both, as we willsimplify the tasks of addingauthors and media types andprovide functionality not built intothe program.

Before we can begin to writeour macros, we need a container tohold them. Macros are contained ina module. Modules can live in theprogram itself or within adocument. Since our macros arespecific to our database file, wewill embed them in the document.Macros embedded in a documentare available only when thedocument is loaded. Macroscontained in the program areavailable as long as the program isrunning.

Page 15: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 15 contents ^

HOWTO - LIBREOFFICE Pt23Tools > Macros > Organize

Macros > LibreOffice Basic. TheLibreOffice Basic Macros dialogpops up. Select book.odb from theMacro from-list. Click the Newbutton. A dialog pops up askingyou for a name for the module.Name it FormCalls. Click OK. Thisbrings up the LibreOffice macroeditor. The macro comes with adefault main subroutine. We willnot use this subroutine. HighlightSub main and End Sub and pressthe backspace key to delete them.

Our first macro is a generalizedsubroutine for opening a form. Ageneralized subroutine is writtenfor reuse. We will call this routinetwice from other routines wewrite. Type the subroutine shownabove into the editor.

The first line of the subroutineis called the signature. Thesignature determines how thesubroutine is called. A signaturestarts with the keyword Sub, whichdefines this call as a subroutine.Next, the name of the subroutine.In our case, OpenAForm is thename of the subroutine. Finally inthe parenthesis, we have thearguments used when calling thissubroutine. In our case, we have avariable named FormName which

is a type String. In the second lineof the subroutine, Dim is anotherkeyword. Dim initializes a variableas a type, and, optionally, a value.We define a variable namedGetForm as a type Object. Thethird line assigns a value to thevariable GetForm through a chainof commands in the Unoframework.

ThisDatabaseDocument refersto the currently open databasedocument. In our case, book.odb.FormDocuments is a collection ofall the forms in the document.Finally, GetByName retrieves aspecific form object from thecollection. Notice, we pass thevariable FormName from thesignature to this method. Once thecall is complete, the variable

GetForm is the object of the formname passed to the subroutine.The fourth line calls the Openmethod of the form. On the fifthline, we tell Basic this is the end ofthe subroutine with the commandEnd Sub.

We will call the OpenAformsubroutine twice. Once to openthe authors form, and once toopen the media form. Add the twosubroutines shown below to youreditor.

The signature on these twosubroutines are a little different.Since we will call them from acontrol within a form, we need topass the object making the call asan argument, even though we donot use it. The argument oEv is a

reference to the object making thecall. We will use this to ouradvantage later, in the lastsubroutine, but here we do itbecause it is required. These twosubroutines are pretty simple. Wejust make a call to OpenAFormpassing the name of the form wewant to open, Authors or Media.

The final subroutine deals withour problem of refreshing the datain the list boxes for authors andmedia when we add authors ormedia using the two subroutinesabove.

Sub ListRefresh(oEv asObject)

oEv.source.model.Refresh

End Sub

Once again, since we will callthis subroutine (shown right) froma control, we need a reference tothe control making the call.However, this time we will actuallyuse the object. This subroutinemakes a method call to the

Sub OpenAForm (FormName as String)Dim GetForm as ObjectGetForm = ThisDatabaseDocument.FormDocuments.GetByName(FormName)GetForm.Open

End Sub

Sub OpenAuthorsForm(oEv As Object)OpenAForm("Authors")

End Sub

Sub OpenMediaForm(oEv As Object)OpenAForm("Media")

End Sub

Page 16: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 16 contents ^

Elmer Perry's history of working,and programming, computersinvolves an Apple IIE, adding someAmiga, a generous helping of DOSand Windows, a dash of Unix, andblend well with Linux and Ubuntu.

HOWTO - LIBREOFFICE Pt23underlying model of the list boxand refreshes the data in the list,thus updating our list of authors ormedia types. Save your module andclose the Basic editor.

MAKING CONNECTIONS TO

MACROS

At this point, our macros donothing. We need to connect themto objects in our form to activatethem when needed. First, we willconnect the open formsubroutines to buttons in our form,and then we will connect theListRefresh to the list boxes.

In the database pane, click onForms. Right-click the Books formand select edit. Add two pushbuttons to the form, one under theAuthors table and another underthe Media table. Right-click thebutton under the Authors tableand select Control to bring up thebuttons properties dialog. On theGeneral tab, change the name toAddAuthors and the Label to AddAuthors. On the Events tab, clickthe ellipses (…) button next toExecute Action – which brings upthe Assign Action dialog. Click theMacro button to bring up theMacro Selector dialog. In the tree

list under Library, select book.odb> Standard > FormCalls. SelectOpenAuthorsForm from the MacroName list and click OK. Click OK toclose the Assign Action dialog.Close the buttons propertiesdialog.

Do the same with the buttonunder the Media table, only nameit AddMedia, make the label AddMedia Type, and assign the macroOpenMediaForm to the ExecuteAction event.

Finally, we need to add therefresh subroutine to our listboxes. Right-click the Authors

column in the authors table andselect Column. On the Events tab,click the ellipse (…) button beside“When receiving focus”. In theAssign Action button, use theMacro button to assign theListRefresh macro to the action.This will cause the list to updatedata from the Authors table whenyou click on a list box in thecolumn. Do the same for the Mediacolumn in the media table. Saveyour changes to the Books formand close it.

TESTING YOUR CHANGES

Any time we make changes toour forms, we will want to testthem and make sure we goteverything right, especially incases where we have used macros.One simple typo could causethings to not work. Double-clickthe Books form to open it. Add anew book with an author andmedia type you have not addedalready. Click the Add Authorsbutton to make sure it opens theform. Add some authors. Close theAuthors form. Click on the authorsdropdown list box and verify thatthe authors you added are there.Do the same test with the AddMedia Type button and listbox.

FINAL THOUGHTS AND

REFERENCES

Again, I would like to emphasizethat writing macros in LibreOfficeBasic is complex. Documentation ispretty sparse, but it is out there. Ifyou are interested in taking up thechallenge, here are somereferences to get you started:LibreOffice Basic Guide:http://wiki.documentfoundation.org/images/d/dd/BasicGuide_OOo3.2.0.odtAndrew Pitonyak's OpenOfficeMacro Information:http://www.pitonyak.org/oo.php

You can find the macros used inthis How-To on pastebin.com athttp://pastebin.com/MU2Ztizi

Next time, we will move on toanother part of the LibreOfficesuite and explore the Mathmodule.

Page 17: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 17 contents ^

HHOOWW--TTOOWritten by Jeremy Boden

CCrroonn

This is very easy to set up –although, later, I shall use a

slightly complicated example toillustrate its use.

If you have several usersconfigured on your machine, eachuser gets their own independentschedule which they can configure.

Experienced users willrecognise this as a description ofCron, pre-installed on virtually allLinux machines. The use of cron byroot is somewhat different, and isused by some system functions –so we shall ignore the use of cronby root.

Each user specifies theirschedule via a “crontab” which canbe listed or edited via the crontabcommand. We can list our crontabwith the crontab -l command:

You will always find thesedescriptive comments in yourcrontab – and you should retainthem. To customise your crontabyou need to add one (or more)lines containing time informationand a command (or script) to be

run.

Cron runs as a backgrounddaemon, and will run yourcommand(s) at the appropriatetimes.

Note: your commands will be rununder your user privileges; it isn'tpossible to gain elevated privilegesby using sudo, etc.

There are 5 fields to specify thedate – and the formats can bemade quite complicated.

The separator between each ofthe five fields is always one ormore spaces (or tab characters).Individual fields may containcomplicated specifications such as1-5,10-15 (but are usually either anasterisk or a single number). Thehyphens and comma are not to beconsidered as field separators.

Each one is typically a numberof units. So, for example, 2,4,6means run at 2 units, 4 units, and 6units. Another variation is 2-5which is the same as 2,3,4,5. If wewant to run on every valid

occasion, we should specify a *.Writing something like */10 meansrun once every 10 units (so */10 inthe minutes field means run at00,10,20,30,40,50 minutes past thehour).

We may also use names in thosefields where it makes sense.

As if this wasn’t enough,combinations are allowed e.g: 1-3,7,9 is equivalent to: 1,2,3,7,9

1st fieldMinute of the hour (0 - 59)

2nd fieldHour of the day (0 - 23)

3rd fieldDay of the month (1 – 31)

4th fieldMonth of the year (1 – 12 or feb,jun, etc)

5th fieldDay of the week (0 – 7; both 0 and7 mean Sunday, or names: mon,tue, wed, etc).

Page 18: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 18 contents ^

HOWTO - CRON

EXAMPLES

First, a bad example – thiswould run only if 13th June is aMonday (next occurs in 2016)!

0 1 13 jun mon some-command

More sensibly,

0 1 13 * * some-command

This would run at 01:00 on the13th of each month.

Suppose you want to logproblems with a very badconnection, using a user-writtenscript named .whatip.sh which is a(hidden) file in the home directory,you might run the following:

*/10 * * * * [ -x.whatip.sh ] && bash.whatip.sh 2>/dev/null

This runs every 10 minutes. The[ -x .whatip.sh ] command teststhat the executable file exists, andonly if this is true does the &&permit running of the script (whichwrites to a log file); the 2>/dev/nullcauses any output to be ignored.

Despite the wealth ofpossibilities in specifying the timea job is to be run, there are certain

specifications which can't be easilyspecified, such as “run on the lastday of the month”. For such cases arun specification of something like:

0 1 28-31 * * some-script

would be suitable – with the scriptmaking an early exit if it isn'tactually the very last day of themonth.

EDITING CRONTAB: USING

THE CRONTAB -E COMMAND.

This will almost certainly notuse your normal editor, such asgedit, but a more basic one – suchas nano. This is perfectly good forediting configuration files andworks in a non-GUI environment.

You still have keys such asinsert, delete, backspace. Screennavigation (up, down, etc) is viacursor keys and page-up, page-down keys. However, you don'thave scroll bars of any sort.

The function keys are listedacross the bottom – but you needonly two of those listed.

Scroll down to the last line andenter your changes to your

crontab.

I understand that the very lastline must end with a newline – thismay not be necessary.

Check, then press CTRL+O towrite out your changes.

Finally, press CTRL+X to exit.

If you want to disable a crontabspecification, comment it out byinserting a # in the first position.

It's quite hard to come up with acrontab line which does usefulwork, without turning it into ascript – but I do have a usefulexample (the credit for thisbelongs to an unknown author).

First the problem: If you move afair number of files around, thenNautilus will create a smallthumbnail file for it. If you movethe file, you get anotherthumbnail, and if you look at yoursystem directories you willgenerate many thousands ofthumbnails. The problem is thatNautilus never deletes thumbnails.

To check if you have a problem,enter the following command:

du -sbh .thumbnails

I get a value of 20M i.e.20MBytes (that's roughly 1,000thumbnails). You might see a muchlarger value.

The solution: Every day I run acron job to delete thumbnailswhich were last accessed morethan 7 days ago. The commandpart in the crontab is:

find ~/.thumbnails -type f-atime +7 -exec rm '{}' \;

It is critical that the command isentered exactly as shown includingthe trailing \;

Because this command includesthe rm (remove file) command, youmay like to test it first by runninganother closely associated (andharmless) command in a terminalwindow:

find ~/.thumbnails -type f-atime +7 -exec ls '{}' \; |more

Note the replacement of the rmcommand by the ls command.

Once you are happy with theoperation, you can enter a timespecification and the command

Page 19: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 19 contents ^

HOWTO - CRONcontaining the rm operation intoyour crontab. Obviously you maywant to change the value of +7 tosuit your machine. My crontabentry reads:

45 19 * * * find~/.thumbnails -type f -atime+7 -exec rm '{}' \;

Or, each evening, at 19:45remove excess thumbnails.

If you have multiple users, youwill need to repeat for each one.

Your crontab is actually storedin a sub-directory of the /vardirectory – so a system upgradewhere you choose to replace allyour system files (even if youretain your /home directory) willcause your crontabs to be lost.However, it is important that youedit your crontab only via thecrontab command, as thisincorporates some important errorchecking.

EXCURSIONARY NOTE

If you have not performed aninstall which involved overwritingyour /home directory in the lastyear or two, then the thumbnailremoval entry may work slightly

differently – but the difference ismarginal and rather historical.

Originally, in addition to settingcreation and modificationtimestamps on files, Linux alwaysrecorded file access timestamps(this is the -atime in our crontabentry). This can be inefficient, sincereading a file always caused anadditional write (to update theaccess timestamp). It is nowpossible to indicate that you don'twant any atime updates to takeplace – and this is the currentdefault.

Note that frequently accesseddirectories would always be lookedat more often than every 7 daysand so (under the old scheme),their thumbnails would never bedeleted. Under the new scheme,atime is never updated, and soeven these thumbnails would bedeleted and very quickly recreatedevery 7 days. It's not a noticeableproblem for thumbnails – althoughI understand one or two olderapplications find the atime changeto be a problem.

To check your setting enter:

cat /etc/fstab | grep /home

into a terminal screen; I get 2 linesdisplayed.

# /home was on /dev/sda7during installation

UUID=0648d2d1-9a41-4257-8b79-dfc7bc227e82 /home ext3defaults,noatime 0 2

(My /home is mounted as ext3 –yours is probably ext4).

I have manually changed/etc/fstab to mount everything asnoatime – which means no accesstimestamps are updated, just likethe modern default. If you don'tsee noatime listed, or you seeatime in its place, you shouldconsider modifying your fstab fileto use the noatime option unlessthere is a special reason not to.

The Ubuntu Podcast covers allthe latest news and issues facingUbuntu Linux users and FreeSoftware fans in general. Theshow appeals to the newest userand the oldest coder. Ourdiscussions cover thedevelopment of Ubuntu butaren’t overly technical. We arelucky enough to have somegreat guests on the show, tellingus first hand about the latestexciting developments they areworking on, in a way that we canall understand! We also talkabout the Ubuntu communityand what it gets up to.

The show is presented bymembers of the UK’s UbuntuLinux community. Because it iscovered by the Ubuntu Code ofConduct it is suitable for all.

The show is broadcast live everyfortnight on a Tuesday evening(British time) and is available fordownload the following day.

podcast.ubuntu-uk.org

Page 20: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 20 contents ^

HHOOWW--TTOOWritten by Nicholas Kopakakis BBlleennddeerr -- PPaarrtt 33

Many, many times in yourblender sessions you will

press the TAB key. It’s thekeyboard shortcut for switching toEdit Mode.

Load the snowman.blend filethat we created last month, and,on the header, locate the buttonshowing that you are in ObjectMode (it's called header, but it isplaced by default where a footershould be).

Select with the RMB (RightMouse Button) the head (topUVsphere) of our snowman.

Press the TAB key. The entireheader changes and now you arereading “Edit Mode” on the samebutton. (You can alternativelypress that button, and, from there,you can select the edit mode. Fornow, we don't need to know whatthe other modes are).

Also the UVsphere changes to aorange-wired sphere.

You are in edit mode. While inedit mode, you are able to adjustand manipulate only the selectedobject. Try, for example to selectwith the RMB the lamp or thenose. You can't. You can select onlya vertex or group of vertices of theobject that you are in.Vertex is a 3-dimensionalcoordinate,Edge is a line connecting twovertices andFace is the planar field in between3 or more vertices.

In edit mode, you can selectvertices, edges and faces – thesame way we saw in the first partof this series, 2 months ago. Usethe box selection tool, the lassotool, the circle selection tool, RMBand Shift+RMB to select multiplevertices.

Also in theheader,observe three

small buttons representing thevertex, edge and face selection.

From these buttons you canchange what you select (vertex,edge or face). Alternatively, pressthe keyboard shortcut Ctrl+Tab.

Go ahead and switch back toobject mode by pressing the TABkey.

On the header again, you cansee that the buttons that wementioned before havedisappeared, and some otherscame back. Let’s focus for a minuteon the buttons showing below

These are called LayersButtons. The yellow dot in theupper left button indicates that wehave objects in that layer selected,or recently selected, and thedarker gray color that we arecurrently in that layer.

Press the number 2 on yourkeyboard (NOT the numpad) or thesecond button from the upper leftcorner. Everything disappears – aswe are now on a different layer.

Press Shift+S for Snap menu, andselect Cursor to Center. PressShift+A to add a new object. Fromthe Mesh group select Cylinder.Notice now the Layers Buttons.

It shows us that we haveobjects in two layers, and thesecond layer is the active one withsomething selected. Press S forscale, and 0.3 to scale it down 30%.Press G for grab, Z to lock it to Z-axis, and 0.3 to move your cylinderup 30% of a blender unit.

If it’s not selected already,press Numpad-5 to switch toorthographic view (explained inissue #69) and Numpad-7 for topview.

Press the TAB key to enter theedit mode. Press Shift+S andCursor to Center to move yourcursor again to the center of yourgrid – in case you have moved yourcursor. Press Shift-A to add a Circlefrom the Mesh group. After that,press F6, and, from the window

Page 21: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 21 contents ^

HOWTO - BLENDER Pt 3that appears, change the Fill Typefrom Nothing to Ngon. After that,press S for scale, and 0.5 to scaledown your circle by 50%.

Press the TAB key to return toobject mode. While in edit mode,the objects that you add (in thisexample the circle) are all parts ofa single object and blendermanipulates them as a singleobject.

We have the hat. Now let’screate the hands of our snowman.Press 3 on your keyboard (NOTNumpad-3) to work in Layernumber 3.

Shift+S again to move ourcursor to center. Shift+A to add anew Mesh. A cylinder again. Press Sfor scale, Shift+Z to keep thedimensions of Z-axis, and alter theother 2 axis, X and Y. Press 0.02 forscaling 2%. After that, press Sagain, Z to alter only the Z-axis

dimensions, and 0.5 to make it halflong. Lets go to edit mode again.With the cylinder selected, pressTAB. Add a new cylinder, scale itdown, rotate it, and move it inorder to create a branch arm.

When you are done with yourbranch, Press Alt+1 on yourkeyboard (NOT Numpad-1) toselect Layer Number 11.

TIP: Press 1, 2, 3... to 0 on yourkeyboard: you select your activelayer from 1 to 10. This is the upperrow on your Layers Buttonsmentioned earlier. Pressing Alt+1,Alt+2... to Alt+0 selects the lowerrow of layers from 11 to 20.

With Layer 11 active, add a newCylinder (by now you have to knowhow to add a new Mesh).

Press TAB to switch to editmode. Press Z key to display yourcylinder as wireframe. This is a veryuseful view of your object, and Ipersonally use it a lot to toggle theview from solid to wireframe. PressA to select all vertices (if notalready selected). (When in objectmode, pressing the A key selectsall objects, but, when in edit mode,this key selects or deselects allvertices.)

Now it's time to create a pipe.

Assuming that youhave a frontorthographic view,

and the small button on the rightof the mode selection buttonindicates the wireframesymbol...select all vertices.

Scale down your cylinder to 8%.

Press A to deselect all vertices.Now, box select (using the B key)only the upper vertices.

Scale up a little by pressing Skey and moving your mouse awayfrom the center of your selection.Press A to deselect all vertices, andbox select the lower vertices only.

Scale down a little by pressing Skey and moving your mousetowards the center of yourselection. After that, add a newcylinder, scale it down, and createthe rest of your pipe.

It is a good time also to replacethat nose that we did last month(using a cone) with a new onebased on a cylinder – because wedon't actually want a so sharp edgefor our carrot-nose.

Now we have almost what weneed.

Do the same as we did with thecylinder a little earlier to createanother branch arm. Place it in anew layer or in the layer where youhave the other branch. You canalso duplicate your branch arm byselecting it and pressing Shift+D.

Now that you have all theelements in your layers, you caneither move all objects to thestarting layer (Layer 1), or bypressing Shift and the Layer-

Page 22: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 22 contents ^

Nicholas lives and works in Greece.He is working for a post-productionhouse (commercials - films) forseveral years. Three months ago hemigrated to Ubuntu because “itrenders faster”. Blender found himtwo years ago.

HOWTO - BLENDER Pt 3buttons that have objects in them– to combine the view of all layersthat are selected.

TIP: To move an object to anotherlayer, select the object and press Mkey. From the Move to Layerwindow, select where you want tomove your object.

Next month, we will add somecolor in our lives, introducingtextures!

For this month, I'll suggesthttp://www.blenderartists.org – aforum where you can find thelatest news, job ads, artworks, andmuch more blender-related stuff.

Also for this month, I have avideo for you. Go tohttp://www.youtube.com/watch?v=USyoT_Ha_bA, and have a lookback in 1963 at the ancestor of allcomputer graphics, IvanSutherland's Sketchpad (myWacom tablet almost cries).

CCOODDEEWWOORRDD

Solutions are on the second last page.

Every number in the grid is 'code' for a letter of the alphabet.Thus the number '2' may correspond to the letter 'L', for instance.All - except the difficult codeword puzzles - come with a fewletters to start you off

Puzzles are copyright, and kindly provided by,The Puzzle Club - www.thepuzzleclub.com

Page 23: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 23 contents ^

HHOOWW--TTOOWritten by Mark Crutch IInnkkssccaappee -- PPaarrtt 1100

The previous instalmentincluded a comic strip which

was made in Inkscape using paths,ellipses and rectangles with flatfills and gradients – all elementsthat have been covered in thisseries so far. But it also includedone other type of object which isan essential element of manyimages: text.

Creating text objects inInkscape isn't difficult, but doescome with a few caveats that caneasily trip up beginners. Some ofthese are common to all vectorgraphics programs, but the firstissue you're likely to face ispeculiar to Inkscape and involves abrief history lesson…

Inkscape's native file format isSVG, an open format specified bythe World Wide Web Consortium(W3C). By using an open format,Inkscape creates files that can beviewed and edited, at least tosome extent, in a wide range ofapplications. This is a huge benefitto the user, whose files aren'tlocked-in to being used just withinInkscape, but has the disadvantage

that the Inkscape developers havelittle direct control over whatmakes it into the specification, andwhat doesn't.

The first version of the SVGspec was released in 2001,followed by version 1.1 in 2003.After that, several years werespent working on version 1.2,which was to include manyadditions and improvements –including additions to support textwhich will wrap and reflow to fillits container. The Inkscapedevelopers spent quite some timeimplementing support for this“flowed text” format, fullyanticipating its official release inthe new SVG standard.

Then SVG 1.2 withered anddied. It never became a standardand to this day – 8 years later! –SVG 1.1 is still the latest officialversion of the SVG specification.This left Inkscape with the abilityto create objects that arecompatible with only an abortedspec, but, as this facility had madeit into a release version of thesoftware, it would break

compatibility with users' files if thecode was simply excised. TheInkscape developers took thepragmatic decision to leave theFlowed Text feature in place, eventhough using it will create filesthat other applications will notfully understand.

As a result of this historicalissue, Inkscape can create text intwo different forms: the SVG 1.1type, which doesn't automaticallyflow into its container (which I'll bereferring to as SVG Text), and theSVG 1.2 type which does flow(Flowed Text), but which doesn'tconform to the SVG specification.The problem arises because it's fartoo easy to accidentally createFlowed Text, especially if you haveprevious experience with othergraphics applications.

Let's get practical andactually create sometext. First select the Text

tool by clicking its icon in the toolpalette, or by pressing “T” or F8.

Now, simply click inside thedrawing window and start typing.

If you can't see anything, checkthat your color and opacitysettings make sense via the statusbar. Congratulations, you've justcreated some SVG Text. If youswitch back to the Select toolusing the tool palette or F1 key,you can move, scale, skew androtate your text object in the sameway as any other SVG element.Because this type of text objectconforms to SVG 1.1, it can bedisplayed or edited by variousother applications. As you can seefrom this image, even skewing androtating the text object in Inkscape(below) isn't enough to prevent itdisplaying in Firefox (bottom):

Page 24: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 24 contents ^

HOWTO - INKSCAPE Pt10

Some other graphicsapplications require you to drag arectangle on the canvas to containyour text. This is especiallycommon in desktop publishingprograms such as Scribus, wherealmost everything is defined bydrawing a frame to contain it. Youcan do this in Inkscape as well –just select the Text tool then clickand drag a rectangle onto thecanvas before typing. You've nowcreated a Flowed Text object. Withthe Text tool still active, and theFlowed Text object selected, youshould see a small square handleat the bottom-left of the textframe. By moving this handle youcan change the size and shape ofyour frame, and the text will re-flow automatically. The followingimage shows the same FlowedText object duplicated a couple oftimes in Inkscape. The copies havehad their frame sizes changed, andyou can easily see that the text hasmoved around, and, in the case ofthe bottom-right frame, it hasbeen automatically truncated:

If we load this SVG file intoFirefox, the result is a blank page.Firefox ignores the Flowed Textcompletely, and the same appliesto almost every other application.Remember, the differencebetween creating SVG Text andFlowed Text is as simple aswhether you just click, or click-drag. If you want to use your SVGfiles in other applications, youshould almost always just clickwhen creating your text objects. Ifyou're in any doubt, select yourtext object and check the statusbar, which will describe the objectas either “Text” or “Flowed text”.

Despite the tone of theprevious few paragraphs, there aresometimes valid reasons why youwould want to use Flowed Text. Ifyou don't want to use yourInkscape files in anotherapplication, then the presence ofnon-standard SVG code won'taffect you. Even if you do want touse your SVG files elsewhere, it cansometimes be easier to createFlowed Text during the drawingstage, and then convert it to SVGtext using the Text > Convert toText menu entry just before yousave the final version of your file.Loading the file into Firefox gives

exactly the result you wouldexpect:

The real advantage of FlowedText in Inkscape is that it can flowinto shapes other than simplerectangles. First you will need ashape for the text to flow into: thiscan be any of the simple Inkscapeprimitives such as rectangles,ellipses and stars, or it can be apath element which allows you tocreate complex shapes using allthe Boolean operations and nodeediting tools that have been

described in previous articles. Itmust be a single object though, socan't be a group. You will also needsome text, but it doesn't matterwhether you create SVG Text orFlowed Text at this stage. Selectboth your shape and the text, andthen use the Text > Flow intoFrame menu to perform the magic.Note that the status bar nowdescribes your text object as“Linked flowed text”, and that youcan modify your shape as much asyou like, with the text re-flowing tofit:

As with normal Flowed Text,this will not be understood byother SVG applications. You canstill use Text > Convert to Text,although with very complex pathsyou may find that the text shiftsaround a lot during the conversion.Nevertheless, for labels andspeech bubbles, the ability tochange your container shapes andhave the text re-flow to suit, can

Page 25: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 25 contents ^

HOWTO - INKSCAPE Pt10be a real time saver.

Now that you know how tocreate basic text objects in theirvarious forms, it's time to exert alittle more control over the style ofyour words. Most commonly, you'llwant to choose a suitable font, setits size, and perhaps change thejustification. All of these optionsare available from the Tool ControlBar, and, although they can bechanged at any time, it's ofteneasier to set them before you click(or click-drag) to place your textcursor to avoid problems with thefocus being in the wrong placewhen you start to type.

The drop down menu to the leftof the toolbar lets you select afont. Inkscape can be a little fussyabout its fonts, so you may findthat some fonts on your systemaren't available, especially thosethat haven't been created by aprofessional type foundry. There'salso an occasional glitch that can

occur when you first open thismenu: Inkscape shows a shortenedversion of it, with just a few fontslisted. If that happens, simply clickaway from the menu to close it,and then re-open it. Finally, youmay find that some fonts simplyrefuse to stay selected whenpicked from this menu. I commonlyhave this problem with “ArialBlack”, which Inkscape immediatelyreplaces with a bold version “Arial”.In this case, you can use the “Textand Font” dialog from the Textmenu to select the stubborntypeface, which will be used whenyou click the Apply button.

The size drop-down lets youpick from a few predefined sizes,all in units of “SVG pixels”. You canalso type directly into this box tospecify a different size, but there'sno way to use any other units. Thefollowing two buttons are toggles,used to switch to bold or italicversions of the selected font – or abold-italic version if both areactive.

Finally, there are four buttonsfor setting the text's justification.Left, centre and right justification

can be used for any piece of text,but full justification (where theprogram tries to line up both thestart and end of every line) isavailable only for flowed text. Youcan convert fully justified flowedtext into SVG text – which does asurprisingly good job ofmaintaining the justification, but itplays havoc with Inkscape's on-page text editing if you need tosubsequently change the content.

Having created your textobjects in Inkscape, you may wantto transfer the SVG file to anothermachine, or post it online. In doingso, there's a good chance thatyou'll run into a problem withmissing fonts. Text in SVG files isstored as a string of characters,together with some styleinformation which contains thefont name. If an identically namedfont isn't present on thedestination computer, thesoftware used to display the filewill substitute it with analternative, often with dramaticeffects on the appearance of yourimage. The image right shows acouple of panels from one of mycomic strips, first as it should

appear using a couple ofcommercial comic fonts, and thenhow it appears on an Ubuntu boxthat doesn't have those fontsinstalled.

There are four possiblesolutions to this problem:• Ensure that the required fontsare present also on the destinationmachine. This may not be possibleif it's not your computer, or if thefont licence prohibits it.

Page 26: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 26 contents ^

Mark has been using Linux since1994, and uses Inkscape to createtwo webcomics, 'The Greys' and'Monsters, Inked' which can both befound at:http://www.peppertop.com/

HOWTO - INKSCAPE Pt10• Don't use the SVG format totransfer files to other systems. Formy comics, I always export a PNGversion of the file to ensure thatmy readers see a pixel-perfectrepresentation of the image.Exporting to other formats will bethe subject of part 12 of thisseries.• Only use commonly availablefonts. This is not a perfectsolution, but may be viable in somecircumstances. My “Greys” comics,for which I make the SVG filesavailable to download, use theubiquitous “Arial” font for thisreason. Even with that precaution,they often display poorly in a webbrowser, and although thisapproach makes it easier to openthe files in Inkscape, I still producePNG versions for the benefit ofcasual readers.• Convert your text into pathsbefore saving the file.

That last solution is as simple asselecting the text then the Path >Object to Path menu entry. InInkscape 0.48, your text will bereplaced with some identicallooking paths, one for each letter,grouped together. Earlier versionssimply produced a singlecomposite path that contained allthe letters. Once converted to

paths, the text is just anothercollection of shapes in your SVGfile and no longer require the fontsto be installed.

This might sound like an idealsolution, but does come with adrawback: your “text” is no longera text object, so can no longer beedited using the text Tool inInkscape. If you decide to use thisapproach I recommend performingthe conversion to paths as late aspossible. You should also make acopy of the text object before youdo so, in case you need to edit itagain at a later date. The textobject should then be put onto ahidden layer, dropped behind someother object, made transparent, orsecreted away in some othermanner so that it doesn't interferewith the rendering of the file onthe destination machine.

Page 27: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 27 contents ^

HHOOWW--TTOOWritten by Michael R. Youngblood WWeebb DDeevv -- CCRRUUDD PPtt55

This month, we are going to talkabout localStorage. This

localStorage is built into thebrowsers for you to use to holdinformation that you can retrievelater. With that said, otherwebsites can also use it. When youare writing your code, you shouldwrite it with that in mind.

localStorage is a prettypowerful tool if you learn how touse it properly. It can allow you togive the user a place to hold datawithout holding it on your website.localStorage works by usingkey/value pairs. This basicallymeans this = that, key = value, oritemName = itemInfo. The valuecan hold only strings ofinformation, but there are ways toget around that if you want to holda set of strings. That is what wewill be doing.

Check out your ownlocalStorage, just run aconsole.log(localStorage);. Thereare other ways of checking yourlocalStorage, however they are notvery reliable. Doing it this way, youknow you are going to have your

answer returned to you.

We are going to make a lot ofchanges to your js file to adapt itfor use of local storage to hold ourUbuntu Versions. Since we will bedoing so many changes, we will gothrough the whole main.js file withchanges already added.

Before we go into the main.jsfile, we are going to add a buttonin the index.html file. I added mybutton after the form section, andbefore the list. Here is that code:

<section>

<buttononClick='clearLocalStorage()'>Clear localStorage</button>

</section>

This button is pretty simple. TheonClick function, as an attribute,will tell javascript to run whateveris in the attribute. The textbetween the button tag will bewhat is displayed inside the button.

Now that we have a “Clear

localStorage” button, let’s move onto the fun JavaScript. Startingfrom the beginning, we have aconsole log to tell us that our js fileis connected. If the functions donot contain anything new, I will justbe mentioning them with theircode.

console.log('js connected');

Next we have our get elementfunction “ge”, so that we can easilygrab elements from the DOM bytheir ID.

function ge(id) {

var theElement =document.getElementById(id);

return theElement;

};

The processForm functionchanges a little bit:http://pastebin.com/HuLiH3tw

First in the processFormfunction, we are preventing thedefault behavior of the form andconsole logging, to let us knowwhat is going on in the js as it

happens. The next console log ismaking sure we know what ourelements are and what we can dowith them.

This next portion of thefunction is checking to make sureour form fields are not blank, andletting the user know if they are. Ifthey are not blank, then we arecalling a function to store the data,and then display the data. Thedisplay data function will be a newfunction that we can call onanytime something happens to thedata.

After we are done working withthe data, we are going to clear thefields using ge(‘id’).value = ‘’;. Lastbut not least, we make thefunction return false to make surethe default behavior is prevented.

The storeData function also hashad a few changes made to it:http://pastebin.com/ef2Q7py4

The first thing we are going todo is create a key. This if statementis asking if the submit button has akey attached to it:

Page 28: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 28 contents ^

HOWTO - WEB DEV• If it doesn’t, it will create an ID.The ID it is creating will alwaysstart with ubuVers. This is so wecan make sure the data we areabout to pull back in and display,actually belongs to us. The secondpart of the key is a random numbermultiplied by 10000001. This way,if the random number comes backas 3, it will still have a long enoughstring of numbers to be unique.• If it does have a submit button, itwill set the ID to that key. That setsus up for editing the versions inour list if we need to. We will seethat action a little bit later.

The next portion of thisfunction is giving variable namesto the form elements, and addingtheir values into a dictionary,nothing too special there. After weconsole log those values to makesure we are doing what we thinkwe are doing, we have a veryspecial line of code.“localStorage.setItem(id,JSON.stringify(ubuVersDict));” is aline that is actually settinginformation to localStorage. If theID already exists in storage, it willoverwrite the information (hintsthe editing), and, if not, it willmake a new entry.

The second bit of information

getting passed to setItem() is thedata we put the version andrelease into. The data type for thatis known as many things, but, inJavaScript’s case, it is called json.Using the JSON object, we aregoing to “stringify” theinformation going into thelocalStorage. This means that it iscreating a string out of the jsonobject. This is important if youwant to be able to access that datalater, otherwise it will go in as[object Object].

Last up in the function are twolines that can make your life verydifficult if you forget them. Thefirst is to console log thelocalStorage object so debuggingis easier if we need to. The secondline is to make sure the submitbutton has a value of “Add”. The“Add” value on the submit buttonis another one of those things thatgoes with editing data later.

The displayData function is avery important piece of this puzzle.As I told you earlier, this will fireevery time something happens toour data. Let’s take a look at thatnow:http://pastebin.com/TPqq31ye

The first thing we are doing in

this function is to clear outeverything in our list. innerHTML isa great function if you need toclear or set information inside ofan HTML element. Immediatelyafter clearing our list, we are goingto jump into going through thelocalStorage data.

First up is to check if it is empty:• If it is, we are going to let theuser know that there is nothingbeing stored. Otherwise, we aregoing to look inside it.localStorage.length is countinghow many items are within thearray; if it is 0, it is empty.• If it is not empty, we have theopportunity to go and check thingsout. The first thing we do is loopthrough all of the items. We willneed to set a variable for the keyand the object inside the value.These variables are very importantto the whole function and thewhole project. The key variable issimply grabbing the key from localstorage by using the key object(localStorage.key(i)). The i beingpassed to the key object is theinteger that is being used to countthrough the for loop.

The value variable is passing thekey variable through the getItemobject, which returns the

information stored in localStoragefor the given key. The thirdvariable, obj, is changing thestringified information back toJSON data. JSON.parse will changeany stringified JSON data back tovalid JSON we can access again.

The next if statement ischecking to see if the key is one ofour “ubuVers” keys. Usingsubstring(x,y) is a way to grab apart of a string. x being thecharacter you would like to startwith, and y being the character youwould like to end on. The endingcharacter is not included in thegrabbed substring. For example,substring (0,2) of the word cat, willreturn “ca”. the 0 character beingc, and the 2 being t.

If the key does start with“ubuVers”, it is one of ours, and weneed to process it. The first thingwe are going to do is console logthe key and value out fordebugging, then we are going tomake a whole bunch of variables.

The first variable in this list isthe list element that we have beenwriting our versions to. Next weare creating an li element to holdour ubuntu version. Still nothingnew here. The third, fourth, and

Page 29: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 29 contents ^

HOWTO - WEB DEVfifth items on the variable list aregrabbing our version and releaseinformation and formatting it forour list. obj was the variable wemade earlier to hold the valuefrom our localStorage informationand inside of that was was arelease and a version. obj.versionand obj.release is how we get thatinformation back out. And last butcertainly not least:itemDeleteButton,itemDeleteButtonText,itemEditButton, anditemEditButtonText are creatingelements and text for our new editand delete buttons.

Now we are going to jump intosetting attributes and onClickfunctions for new buttons. Eachbutton needs to be created peritem so they can be attached tothe item it will be editing/deleting.Each button is getting a newattribute with setAttribute. Theattribute is ID, and is being set toits key. Then each button is gettingan onclick command to interactwith javascript when pressed. Thedelete button is running a functionthat will be calling a deleteItem()function with an ID being passedto it. The edit button is doing thesame with a respective editItem()function.

listItem.innerHTML and therespective edit and delete buttonsare setting up the elements’ HTMLbetween the tags. In this case it isjust text, but could be full outHTML if you wanted it to be. Whichfinally brings us tolistItem.appendChild() commands.These commands are adding theedit button to the list item, thendelete, and finally adding anddisplaying the list item in our list.

The next function we have now(shown above) is a deleteItemfunction that we used on ourdelete button. This function isfairly straightforward.

The first thing we want to do isconfirm that the user would like toreally delete this item, so we askthem with a window.confirm()

prompt. This prompt gives a cancelor ok option. If OK is pressed, itwill come back into your JS as true;if cancel, it will come back as false.So if (true) { do this } else { nothinghere }. If they do in fact want todelete the item, we simply pass thekey that was supplied to thefunction intolocalStorage.removeItem(); and itis gone. We then let the user knowit was successfully deleted and we

refresh our list.

The editItem function (shownbelow) is almost as simple. As Imentioned earlier a couple times inother functions, we already setthose up for editing. Here is thegoodness that makes all that work.

In this case, we are grabbing theinformation from localStorage

function deleteItem(key) {// as to make sure the user wants to delete thisif (window.confirm('Are you sure you would like to delete this version?')) {

// remove the item from localStoragelocalStorage.removeItem(key);

// let the user know it happenedalert('The version was deleted successfully');

// reload the viewdisplayData();

}}

function editItem(key) {// get the object being edited from local storagevar value = localStorage.getItem(key),

obj = JSON.parse(value);

// populate the form with the objectge('ubuVersNum').value = obj.version;ge('ubuVersName').value = obj.release;

var editButton = ge('submit');editButton.value = 'Edit Version';editButton.key = key;

}

Page 30: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 30 contents ^

Michael Youngblood has been in theindustry of web design anddevelopment for 13 years. He hasbeen working for a world widewireless tech corp for six years and isworking on his bachelor’s of sciencein mobile development.

HOWTO - WEB DEVbased on the key that was passedto the function, just like we did foreach of the rows in localStoragewhen we were displaying them.Instead of displaying them,though, we are setting the valuefor the form fields to theinformation we get back.

After the fields are repopulatedwith the information, we set thesubmit button to display “EditVersion” instead of “Add”, and tie akey to its object with the value ofthe key we are editing. That way,when they press the submitbutton, it is doing the same thing itnormally would, only this time itwill trip our submit.key exists ifstatement in our storeDatafunction and be set to the value ofthe key object in our submit buttonobject. Pretty cool, eh?

Our last function is a very, veryeasy function. However, it hasbeen elaborated and filled up witha lot of extra lines it doesn’t need,just to make sure the user actuallywants to do it. It is the clear localstorage button function:http://pastebin.com/i9shwb7z

The only line we really need inthis whole function islocalStorage.clear(). However,

when this is run, it will cleareverything in it, no going back.With that said, the first thing youare going to want to do, is makesure that there is anything in therein the first place and let the userknow if there isn’t. If there is, and itwill be removing data from it, askthe user if he/she really wants todo this. The importance here isthat localStorage can containinformation from your site, andfrom others. It isn’t like a cookiethat can be accessed only by yourdomain name – localStorage can beread and manipulated by any site,any domain, any page. If they doindeed want to delete, remove itand call our displayData() functionto display nothing in our list.

Now that we are done with allof our functions, it is time to tellthe browser what to do when itloads our javascript:http://pastebin.com/VqzFiDYF

The first thing is a variable forour form. Next, we are attachingthe processForm function to ourform when a user submits it. Toend our javascript goodness forthe month, we are calling thedisplayData() function so thatwhen a user comes to our page, itwill pull up any information he

previously entered into our formwhen it loads.

I very much hope you enjoyedthis month’s article. I am planningon showing you how to convertyour code to JQuery, add a littlebit of “zaz” to our page, andmoving our localStorage to a realdatabase. I would love to hear yoursuggestions for any future webdeveloper articles you would liketo see. Feel free to shoot over yoursuggestions or any othercomments via twitter: @aliendev2.

Remember to check back nextmonth for some more webdeveloper awesomeness. You canalso check out, follow, fork,download, view revisions of thecode on github:https://github.com/aliendev/FCM-UbuntuVers.

40% OFF BLENDER

MASTER CLASS

For one week only, get 40% offBlender Master Class and learnthe secrets of 3D design from amaster artist.

Use coupon code WILLITBLEND

Coupon good on print or ebookpurchases. Print books comewith free ebook editions (DRM-free, of course).

http://nostar.ch/Blender_promo

Page 31: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 31 contents ^

HHOOWW--TTOOWritten by Ronnie Tucker WWrriittee FFoorr FFuullll CCiirrccllee MMaaggaazziinnee

GUIDELINES

The single rule for an article isthat it must somehow be

linked to Ubuntu or one of themany derivatives of Ubuntu(Kubuntu, Xubuntu, Lubuntu, etc).

RULES

• There is no word limit for articles,but be advised that long articlesmay be split across several issues.

• For advice, please refer to theOfficial Full Circle Style Guide:http://url.fullcirclemagazine.org/75d471

• Write your article in whicheversoftware you choose, I wouldrecommend LibreOffice, but mostimportantly - PLEASE SPELL ANDGRAMMAR CHECK IT!

• In your article, please indicatewhere you would like a particularimage to be placed by indicatingthe image name in a newparagraph or by embedding theimage in the ODT (Open Office)

document.

• Images should be JPG, no widerthan 800 pixels, and use lowcompression.

• Do not use tables or any type ofbold or italic formatting.

If you are writing a review,please follow these guidelines :

When you are ready to submityour article please email it to:[email protected]

TRANSLATIONS

If you would like to translateFull Circle into your nativelanguage please send an email [email protected] andwe will either put you in touch withan existing team, or give youaccess to the raw text to translatefrom. With a completed PDF, youwill be able to upload your file tothe main Full Circle site.

REVIEWS

GAMES/APPLICATIONSWhen reviewing games/applications please state clearly:

• title of the game• who makes the game• is it free, or a paid download?• where to get it from (give download/homepage URL)• is it Linux native, or did you use Wine?• your marks out of five• a summary with positive and negative points

HARDWAREWhen reviewing hardware please state clearly:

• make and model of the hardware• what category would you put this hardware into?• any glitches that you may have had while using the hardware?• easy to get the hardware working in Linux?• did you have to use Windows drivers?• marks out of five• a summary with positive and negative points

You don't need to be an expert to write anarticle - write about the games, applicationsand hardware that you use every day.

Page 32: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 32 contents ^

https://spideroak.com

Get 25% off any SpiderOak packagewith the code: FullcirclemagFans

Page 33: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 33 contents ^

AASSKK TTHHEE NNEEWW GGUUYYWritten by Copil Yáňez

Hi, everyone! Welcome back toAsk the New Guy!

If you have a simple questionand want an answer that doesn’trequire taking sides on the “roundvs. square dialogue box corners”debate, contact me [email protected].

Today’s question is:

Q: I want to watch cat videos.How do I do that with Ubuntu?

A: Good question. Nevermindall that tosh about a

distributed communication systemthat could survive a nuclear war.The Internet was designed firstand foremost to allow Departmentof Defense honchos to exchangevideos of Mr. Tibbles attacking apotato.

Early cat videos were nothingmore than ASCII animations thatRichard Nixon screened for hisdog, Checkers, but we’ve come along way since then. Now we havea whole universe of high-defmovies, TV shows, and dad-

getting-hit-in-the-crotch-at-a-kid’s-birthday-party footage. Accessingthose videos is the first stop formany of us once we get Ubuntuinstalled.

But, when you go looking forhigh-larious cat vids, you’ll quicklydiscover that not ALL videos areavailable to you. What gives? This isnot the America Nixon would havewanted!

Don’t panic. All that felinetomfoolery is only a few clicksaway. Let’s look at how to getvideos working in Ubuntu andwhere to go for easy, no-hasslestreaming on-line.

First, though, a quick word onphilosophy, because I know howmuch readers of this magazine liketo get their Hobbes on.

Ubuntu, like Linux itself, is builton the open source ideal thatsoftware should be free todownload, modify and distribute.Unfortunately, many of the videoswe want to watch are encodedusing proprietary software, known

as codecs. Codecs are easilyavailable, and, once installed, allowyou to watch just about any videoformat out there.

So, why aren’t they available bydefault? Well, including themwould do two things. First, it wouldrequire that all users pay a fee forthe privilege. Second, it wouldundermine the very philosophy onwhich Ubuntu was built and whichencourages the smart mindshelping in its development tocontribute.

Are you doing something wrongby installing the proprietarycodecs?

Um. Yes? No? Maybe?

Here’s where things get a littlegray, especially in the US whereuse of these codecs is coveredunder the Digital MilleniumCopyblah, blah, blah, and I’ve lostyou. Look, even the most ethicalexamination of the issue wouldstill argue for the personal use ofproprietary codecs since you stillhave to pay for content that’s been

encoded using them. And, whilepiracy is certainly a concern online,all the examples you’ll see beloware legal streaming services.

Besides, the consequence fornot using the codecs is that you’llhave to get your cat videos the oldfashioned way, via zoetrope andflip books. At that point, you’rejust one pair of aviator goggles anda walking cane away frombecoming a character in a badsteampunk novel.

So what codecs should you getand what will they allow you towatch and how do they work?

Who cares?

Remember, this is Ask the NewGuy. My goal is to get you up andrunning without too much muckingabout. Let’s just download themost common stuff and movealong.

In Ubuntu 12.10, click on theUbuntu Software Center icon alongthe left side of your screen. If it’snot there, you can also get to it by

Page 34: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 34 contents ^

typing “soft” into the Dash searchfield.

When the Ubuntu SoftwareCenter screen opens, type“restricted extras” in the searchfield. You’ll see some softwarecalled “Ubuntu Restricted Extras”(funny how that works, no?). Clickon that and then click Install. You’llhave to give Ubuntu your passwordto finish the install.

Because some of the fonts thatare included are owned byMicrosoft, you’ll need to click ontheir EULA (End User LicensingAgreement). I didn’t read it all butyou’re welcome to. Pretty sure Iowe them my spleen now.

Once you’re done with that,you’ll probably also want theability to play DVDs by typing thefollowing into a terminal window(CTRL-ALT-T):

sudo/usr/share/doc/libdvdread4/install-css.sh

Um, that’s kinda it!

I know, everything in Ubuntu isso easy, it’s anti-climactic. It’s likeputting together a crack team of

operatives to steal the CrownJewels – only to have the Queenherself hand them to you whileshe’s out for a pint at the cornerpub.

Yes, you may run across someformats that won’t playautomatically. The error messageusually provides a link to search forand download the appropriatecodec. If that appears, do it, forGod’s sake! Cats playing pianos,man!

So, you’re set up to watch allmanner of videos in formats youdidn’t even know existed. What’sout there? May I suggest you headover to YouTube and search forfunny cats? We’ll see you in a fewweeks.

While you’re there, did youknow you can also rent movies

from YouTube? That’s right. Clickonhttp://www.youtube.com/user/movies and watch The ABCs of Deathor All Superheroes Must Die. Oh, Iforgot, you’re so highbrow, la-dee-da, too good for The HumanCentipede. Fine. They’ve also gotWall-E. Happy now?

If you have Amazon Prime, youalso have a ready supply of FREEstreaming movies, includingMission Impossible III and DowntonAbbey. If you have problems withthe videos not playing, run thesecommands to allow the Amazonplayer to update:

sudo apt-get install hal

cd ~/.adobe/Flash_Player

rm -rf NativeCache AssetCacheAPSPrivateData2

Hulu Desktop has a version thatworks with Ubuntu, and you candownload that herehttp://www.hulu.com/labs/hulu-desktop-linux. If you’ve beenlooking to catch up on theadorkable Zooey Deschanel onNew Girl, now’s your chance.

Crackle.com is a relativenewcomer and offers no-hasslestreaming of movies and TV shows.It’s not the most current selection,and you do have to sit throughcommercials, but c’mon, threewords: Beverly Hills Ninja.

One last suggestion for you.Check out www.canistream.it.Enter a movie you want to watchand the website will tell you whichservice, if any, streams it.

Well, I guess that covers it for –what’s that? Netflix? Um, yeah,they’ve been promising nativeLinux support for a long time now.Thankfully the community hascome to the rescue. There’s a PPAwhich can be added to your list ofrepositories that will let you watchNetflix in Ubuntu. Run these twocommands in a terminal:

sudo apt-add-repositoryppa:ehoover/compholio

ASK THE NEW GUY

Page 35: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 35 contents ^

Copil is an Aztec name that roughlytranslates to “you need my heart forwhat again?” His love of women’sshoes is chronicled atyaconfidential.blogspot.com. Youcan also watch him embarrasshimself on Twitter (@copil).

sudo apt-get update && sudoapt-get install netflix-desktop

Voila! You’ll now see ‘NetflixDesktop’ in your list ofapplications.

Well, hopefully you had noproblem setting up video playbackin Ubuntu and found somethingworth watching. Any problems? Letme know.

Good luck and happyUbuntuing!

ASK THE NEW GUY

1166xx1166 SSUUDDOOKKUU

Solutions are on the second last page.

Numbers 0 to 9 and letters A to F are to be filled into the16x16 grid so that every row, every column, and every4x4 box contains 0 to 9 and A - F.

Puzzles are copyright, and kindly provided by,The Puzzle Club - www.thepuzzleclub.com

Page 36: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 36 contents ^

LLIINNUUXX LLAABBWritten by Charles McColm

DDVVDD RRiippppiinngg

In FCM#61, I wrote about DVDripping and encoding. For the

article, I tested the ripping andencoding speeds on single core,dual core, and four core systems.As expected, the four core systemshad the fastest speed from start tofinish. But there was a surprisingresult as well, the DVD burners inthe dual core systems ripped(cached the DVD to the hard drive)almost 3 times faster than thequad core systems (and just lessthan double an eight core systemarmed with a SATA Blu-ray I testedlater). From this, I surmised thatthe performance of the DVDplayers/writers had more to dowith the caching speed of themovie than the speed or numberof CPU cores.

Why does all this matter? DVDcaching (commonly called ripping)takes only a fraction of the timethat’s needed for compressing andencoding the video, but it still addsseveral minutes to the process.Ideally, you want the best outcomeon the best possible hardware. Ifyou have 100 DVDs to back up(caching is used in backing up

DVDs as well), and one DVD drivetakes 10 minutes longer, thatprocess is suddenly 1000 minutes(16.67 hours) longer.

Logically, you would think thelatest technology would give youthe best results. But what aboutacross brands?

To compare DVD ROMs andwriters, I used a selection of DVDdrives from different years, using

different interfaces, and fromdifferent manufacturers. I usedAcidrip to cache the DVD. Eachtime I cached a DVD, I made sure touse a new directory for the cache(deleting any old directories toensure Acidrip wasn’t borrowingfrom any other existing cache).

The results are shown below.

In this case, the newesttechnology didn’t necessarily mean

the fastest. Although I didn’t test aBlu-ray player for this experiment,I did test one prior to thisexperiment using the same DVD Iused in the experiment in issue 61,and (on the 8 core) it cached betterthan most, but still a couple ofminutes slower than the older DVDwriters in the dual core systems,just over 6 minutes.

Interface also doesn’t seem tomake a big difference. Though Itested only 1 SATA DVD drive (andthe SATA Blu-ray I mentioned), acouple of PATA DVD drives beatthe SATAs.

Both the slow Hitachi-LG andSony DVD drives had small buffersizes. You could surmise that thebuffer size has something to dowith the speed of the caching,except for the fact that the fastestAOpen DVD drive had a smallerbuffer than most of the otherdrives.

Made in 2001, the AOpen DVDdrive is also one of the oldestdrives, but it posted the bestcaching time, so age isn’t

Page 37: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 37 contents ^

LINUX LABnecessarily a factor (though wearand tear could be).

What about the Maximum DVDread speed? The Sony DVD drivewas the slowest in the group andthe second slowest performingdrive (not to mention the oldest),but it still beat a drive eight yearsnewer and with the fastestMaximum DVD read speed.

One rumour I heard was thatcertain manufacturerspurposefully cripple their drives tomake it more difficult to copyDVDs. Looking at the statistics, theworst performers are Hitachi-LGdrives, and the Sony drive. WhileSony is a well known supporter ofDigital Rights Management (DRM),and LG drives were among theslowest in the test conducted inFCM#61, I’m skeptical this is thereason why these particular drivesperformed the worst.

Doing more digging, Idiscovered that the maximum DVDread speeds published bymanufacturers are not necessarilythe maximum DVD video readspeeds. This is where it gets tricky;it’s difficult to find accurate DVDvideo read speeds for drives.

I found that the LG DC-4522B,rated for 16x, actually transfersvideo data at a maximum of 4.8x.The maximum DVD read speed isalso part of a group of statisticsknown as Data Transfer Rate (DTR)which includes burning as well.Drive manufacturers either nolonger have – or have never --published DTR video statistics forthe other drives in this experiment.

At this point, I went looking toother sources and foundwww.cdrinfo.com – a site (withbanner ads) that publishes avariety of information about

optical media technology. The siteis Windows-oriented, relying onproprietary programs to do a lot ofthe testing, but their numbersseem to jive with the data Igathered. The AOpen DVD1648was among the fastest of the DVDdrives they tested copying DVDsusing CSS. While cdrinfo.com didn’thave the same LG drives testedhere, the LG 16x drives I looked atwere among the slowest drivesreading CSS encrypted DVDs.

So what does all this mean? Ifyou’re interested in archiving yourDVDs or Blu-rays, try to get as

much information about the DVDvideo read speeds beyond thesimple maximum read and burnspeeds published on the websitesof most manufacturers. A speedyDVD or Blu-ray drive could saveyou hours of work.

IMPORTANT LINKS

http://www.cdrinfo.com/http://www.btc.com.tw/http://www.lg.com/http://global.m.aopen.com/

Charles is a step-father, husband,and Linux fan, who hosts a not-for-profit computer refurbishingproject. When not breakinghardware/servers, he maintains ablog at:http://www.charlesmccolm.com/

Page 38: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 38 contents ^

MMYY SSTTOORRYY

I should preface this by sayingthat I’ve been using Linux for a

long, long time. I also should notethat, in all that time, I’ve neverlearned to program, develop orhack anything. I can write basicscripts if I have to, tinker withconfig files when necessary, andwork when needed with thecommand line; that’s about it. I’m auser, not a developer, hacker orguru.

I first came to Linux in 1995,after repeated headaches with thethen new Windows 95. I’d heardabout this Unix-like operatingsystem that a college student hadcreated and was giving away forfree, and it piqued my curiosity. I’dlike to say I just found a distro andinstalled it and life was grand, butit didn’t work that way back then. Iinstead had to download thesource code, get a GCC compilerand all the other necessitiesrunning under DOS, and do it thehard way. But I was hooked. Istarted with TWM as a windowmanager, compiled a few apps Idownloaded from a BBS, and I wasoff and running. Within a year or

so, I’d found you could buypackaged versions at the localoffice supply, and my first was RedHat, though now I can’t rememberwhat version it was. Later cameDebian, Mandrake, then SuSE.Debian and SuSE – now openSuSE –I’ve bounced back and forth withover the years, and forperhaps the last fiveor so I’ve prettymuch settledonopenSuSE.Until justrecently.

Anyonewho keepsup with withLinux news inrecent years can’t avoidrunning across things aboutUbuntu. The trolls may say whatthey will, but Ubuntu has madegreat progress in putting Linuxinto the mainstream, and todayyou can’t find many applicationsthat, if they have a Linux version atall, aren’t packaged for Ubuntu.Many computer manufacturers,like System76, if they use Linux, it’s

Ubuntu. It’s in schools, institutions,government offices, it’s just abouteverywhere. Even Google now hasits own version of Ubuntu for itsemployees. What is so specialabout it? Why has one distributionbecome almost synonymous withLinux? It piqued my curiosity.

About two yearsago, I actually

tried Ubuntu– I think it

wasversion10.04 or10.10, and

franklywasn’t that

impressed. Itwas Gnome-centric

for one, and I’m a KDEuser. I read about Kubuntu being aKDE spin of Ubuntu, so I gave thata try. Sorry to say, compared toopenSuSE or Debian it was tooslow and bloated for my taste, so ittoo didn’t last long on mycomputer. In the time betweenthen and now, though, Ubuntu hascontinued to become the port offirst call for anyone looking into or

trying Linux. Even one of myfavorite video podcasts, the LinuxAction Show, has become veryUbuntu-centric, Ubuntu gainingconverts of the two hosts. So,recently, I decided to use theexample of one of the hosts andgive the latest Ubuntu a 30-daytryout, basically force myself touse it for 30 days and see how itfelt after that. About two monthsago I started on this experiment,and, well, here’s what happened.

At first, I was quite impressedwith Unity, it was different thanthe Gnome 2 I remembered, butmore impressive to me were thespeed improvements since my lastforay with Ubuntu two years ago.However, after just a week of usingonly Unity, I started to feel that,while I’d learned my way around itand most of its way of doingthings, I saw it as more eye-candythan as a better way of working.While I liked some of the lensesand the way they integrated theweb into the desktop, I felt overallthe HUD was too slow, took up toomuch screen real estate, and, inparticular with the menu

Written by Robert Boudreau

Page 39: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 39 contents ^

integration, it was just too hard tofind what you’re looking for. Iknow it’s a work in progress, intime it will get much better andmore refined, but, as it stands now,it just doesn’t work for me and theway I like to do things. But, I wasgoing to be fair, and stuck to myplan of using it for thirty days.Then I dumped it and installedopenSuSE 12.1.

Something happened, though.There was an unexpected side-effect. I’d never even given it athought while I was experimentingwith Ubuntu, but it was therenonetheless, and, when I wentback to openSuSE, it suddenlydawned on me. I knew why Ubuntuand its spin-offs are always at thetop of the distro heap, why they’reso popular, and why they’reachieving what so many othershave failed to: it all has to do withpackages.

For those unfamiliar withopenSuSE, it’s a great Linuxdistribution, one of the best. Theyhave huge software repositorieswith just about anything you couldwant in them. But they have oneserious drawback: you have to bereal careful if you install softwarefrom any but the default

repositories. If you do want to geta newer version of something, orto try some software from anotherrepository, it’s often going to leadto dependency problems. Thenthere’s the problem of trying tofind and install proprietary driversor software that doesn’t fit the“100% Open Source” model, likethe VLC media player. OpenSuSEhas a great software search systemon its web site, and you can almostsurely find what you want, but itrequires adding another repositorythat in all likelihood will causeconflicts.

I, of course, had learned to dealwith these problems years ago, andcould generally work around them

to get the system I wanted, but it’sstill a bit annoying. And, very oftenwhen it came time for a programupgrade, I was left having torepeat the whole dependencyfixing all over again. After I did thislast install of 12.1, and wentthrough all the fixes that I neededto do in order to get my computerwhere I wanted it, it hit me. I didn’tremember having any need to dothat in Ubuntu. Even when I addedand pulled software from PPAs,there weren’t any conflicts. Nodependencies to hunt down,nothing that worked before andthen got broken. It all just worked.

That’s Ubuntu’s greatestadvantage, why I believe it has

gotten to be the default choice ofnot only new Linux users, but alsomany seasoned veterans. TheUbuntu packaging system issecond to none. I doubt this is easyto do, but it seems to be a coreduty of the packagers and thosewho oversee the repositories, thatthings are gotten right. It’sobviously why so many Ubuntuvariants and spin-offs still use theUbuntu repositories, they cancount on that stability. In myopinion, it’s a major achievementwhat will keep Ubuntu in theforefront. Not the snazzydesktops, the coming webintegration, or the constant proand con media hype that surroundsit. It’ll be that rock-solid packagingsystem that will keep Ubuntu atthe top.

When I realized this, what did Ido? Installed Kubuntu. I didmention I was a KDE guy, didn’t I?What a difference from just twoyears ago! The latest Kubuntu(12.04.1) is as solid, fast and well-done as any KDE distro out there,and... it has those great Ubunturepositories behind it. What morecan anyone ask for?

MY STORY

Page 41: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 41 contents ^

RREEVVIIEEWWWritten by Lucas Westermann

There has been quite a buzzsurrounding the HTC One X –

reviews, questions about therelease of Android 4.1, etc.However, it's rather uncommon tohear much about the One X's littlebrother – the One S. The HTC OneS is essentially a smaller, cheaper,and slightly less powerful versionof the One X. Having had (andused) the phone for a good fewmonths, I felt it time to share myinsights into the device. The phoneI was using before this was aSamsung Galaxy S II, which is what Iwill be comparing the One S to.

Specifications• 130.9 x 65 x 7.8 mm (length xwidth x depth)• 120 grams• 4.3” AMOLED display with a 960 x• 540 (qHD) resolution• Android 4.1.1 with HTC Sense 4(may still be shipping with 4.0 –update is available over the air)Complete list:http://www.htc.com/www/smartphones/htc-one-s/#specs

SCREEN

At first glance, the screenseems a little less vivid (comparedto the S II). Though the colorsaren't quite as bright, I find theHTC One S to be a lot morecomfortable on the eyes, and thescreen seems much moreresponsive. The real estate is usedwell by the Sense skin, and Ihaven't noticed any contrast issues

with the official themes for Sense.The automatic backlightadjustment is adequate – I'vefound that at times the screen canbe a little dark for my tastes, whichis easily remedied by adjusting thebrightness manually. The only issueI have is the “ring toss” slide tounlock feature. It's fine if you'replanning to just unlock your phone– but it's also the method neededto answer calls when the phone islocked. If you're not carefulenough to get the “answer” iconinto the ring, it will fail to answerthe call, and you'll have to tryagain. Very problematic if you'reon the go and have cold hands (orare wearing gloves which you needto take off first). More than onecall was nearly missed this way.

CAMERA

HTC advertises the One S as a

great photo-taking phone, offeringthings such as panorama shots andlow-light capabilities. Personally, Ifind the camera works better thanany of my past cell phones – but itdoesn't beat most point andshoots. Features such as thepanorama mode can be buggy (orjust plain difficult to use). If youdidn't own any other camera, youcould probably manage to do verywell for yourself if you invested insome form of tripod to keep thecamera steady. Also very usable ifyou're out somewhere and want tocapture a moment. Reason aloneto buy the phone? No. If you'retorn between two phones andcamera quality is important to you,then it might help make yourdecision.

As you can tell, the photos arenice, although the first shot of thepanorama (I went right to left) is

HHTTCC OOnnee SS

Page 42: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 42 contents ^

REVIEWextremely blurry, though I felt thatI was holding the camera steadiestfor that shot. If anyone isinterested in seeing the originalphotos, send me an email and I'llpass them along.

PERFORMANCE

The device has a 1.5GHz-1.7GHzdual core CPU, which results in a

snappy response from the deviceat most times. Opening apps(besides games, which take just alittle bit longer to open thannormal apps) is quick, and usingthe Recent Apps feature is a deadsimple way to free up some of the1GB of RAM, if you need it. Wi-Fisignal strength is on-par with anyof my laptops, or my Asus TF101tablet. This means that I have asteady (if sometimes weak)connection, even in some of theproblem rooms where the Galaxy SII had issues. I also find that theOne S is faster to change from E to3G connection when it becomesavailable – the Galaxy S II alwayshad a delay before the speedadjusted, which doesn't seem to bepresent in the One S. Definitely animprovement if you're someonewho commutes through manyareas of varying signal strength.That being said, the phone doesseem to ignore areas of extremelyweak signals entirely. The S II oftenhad a weak connection in placeswhere the One S has none at all.However, this won't be typical foranyone who lives in an area witheven sub-par coverage.

The One S responds to touchinput very well, with the exceptionof the lock screen, which seems to

be more of an implementationissue than an actual hardwareissue. I've also noticed a significantimprovement on transitions andweb browsing with the upgradefrom 4.0 to 4.1.1 (and the additionof Project Butter). The differencebetween the One S and the GalaxyS II is the difference between nightand day. The S II could freeze or lagwhen getting around the homescreens, whereas the One Shandles it without so much as ahiccup. There are, obviously, someperformance issues that crop upwhen you're taxing the device withheavy apps – but for normal basicusage, it's a vast improvement.However, the HTC One S does notcontain a removable battery – so ifit does hang, you'll need to holdthe power button for 10 secondsand cause a “hard reset”, which isuseful to note. Also, I've found thatthis can sometimes result in yourphone rebooting in your pantspocket, as the power button islocated directly at the top of thedevice. If you keep your devices ina jacket pocket, shirt pocket, or apurse, you probably won't noticethis issue. That being said – theOne S has also randomly rebootedwhile I was using it. It happens veryrarely, but not for any reason I candiscern. This could also be

happening in my pocket, renderingthat complaint moot. Is a rebootproblematic? Not really, as thedevice boots quickly, and I have yetto experience a crash when doingthings like talking on the phone orreplying to emails/text messages.The S II would hang with surprisingfrequency when doing any task atall, leading to a few interruptedcalls.

SOUND QUALITY

HTC loves to advertise that theOne S comes with “Beats Audio”.However, I don't find that theaudio quality sounds anybetter/worse than my MotorolaMilestone, the Samsung Galaxy S II,or my old 2nd generation iPodTouch. Not that I have anycomplaints about the quality. Thespeaker is sufficient (though the SII seemed to be a bit clearer), andphone calls are extremely clear. Ihave yet to have complaints aboutthe call quality from the device(even in crowded subway trains).As such, I'm inclined to say themicrophone (and noise filtering) isa lot better than the S II – though Ican't say I've done a fair trial.

BATTERY LIFE

Page 43: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 43 contents ^

REVIEWI haven't put the phone through

a stress test of any sort to measureexact hours under heavy load.However, I tend to use my phonefor listening to music whenever Igo out, it's set to automaticallypull/push emails, and if I am usingthe maps function, I'll have Wi-Firunning in the background.Otherwise I shut off allunnecessary antennas (Bluetooth,Wi-Fi, etc). Throughout the day, I'llanswer emails, check news, browsewebsites, download some updates,upload photos via instant uploadon Google+, use Dropbox,occasionally tether the device viabluetooth, or use it for navigation.At the end of the day, after about6-8 hours of usage like that (withconstant music playback) thedevice is around 35-40%.Occasionally it drops into the red14-15% mark, but I have yet toexperience the phone being deadwhen I need it. I do charge it everynight (unless it's nearly full and I'mat home the next day so using thephone is unimportant, then I mayjust leave it). I also put it intoairplane mode when I'm at home,as my house has terrible reception– I save some battery life byavoiding the search for radiotowers. If I need to find a signal, Ican quickly turn on the antennas

again. Overall, the device seems tolast longer than the S II, and isroughly on-par with my father'siPhone 4S.

BUILD QUALITY

The phone seems to be madeout of metal, for the most part.The screen also seems to be madeout of tough glass – I can't say forcertain what exactly it's made of,but it resists any scratches fromwhatever I may have in my pockets(coins, a zipper from myheadphone case, etc). It doescollect a lot of fingerprints(obviously) but they wipe offwithout a lot of effort – the screenhas probably been treatedsomehow. Overall, the device feelssolid and has survived a fewroughly one-meter falls without ascratch (I should probably notethat these were neitherintentional, nor caused by me). The

covering for the SIM card is solid,and can probably survive beingtaken on and off a great number oftimes. The camera stands out alittle at the back, where I wouldhave expected it to collect a lot ofscratches. However, the lens seemsto be made of the same material asthe screen, and has yet to get aserious scratch.

CONCLUSION

The HTC One S is a great littlephone that can currently be hadfor around €380. The SamsungGalaxy S II I owned cost about €20more, and I was never half assatisfied with it as I am with theOne S. If anyone is in the marketfor an Android smart phone (thatisn't quite as huge as the One X),then I would definitely recommendthat you consider the One S whenmaking your decision. If you want aphone that can double as a camera

on the fly, the One S is by far themost capable camera replacementI've had the pleasure to use, soalso consider that. For anyone whois looking for a larger device, theOne X should definitely also be onyour list of options, as its quality isvery similar to the One S.

A generally great device,though the occasional randomcrash, and the somewhatinaccurate “slide to answer”system prevents it from gettingfull marks.

If anyone has exact questions,or wants to know something Ihaven’t covered, feel free to emailme at [email protected]. Pleaseput “HTC One S Review” or “FCM”in the subject line, so it doesn’tdisappear into my inbox.

Lucas has learned all he knows fromrepeatedly breaking his system, thenhaving no other option but todiscover how to fix it. You can emailLucas at: [email protected].

Page 44: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 44 contents ^

Full Circle PodcastEpisode 32, TheYear ThatWas….Well Nearly!!

Your hosts:• Les Pounder• Tony Hughes• Jon Chamberlain• Oliver Clark

from theBlackpool (UK) LUGhttp://blackpool.lug.org.uk

In this episode Les bringseveryone up-to-date withwhere he’s been, there’s a“Special Announcement” andthe lads take a look back at2012, “A Year in Tech”

LLEETTTTEERRSSIf you would like to submit a letter for publication, complimentor complaint, please email it to: [email protected] NOTE: some letters may be edited for space.

THINGS ARE HEATING UP

In FCM#69, reader Saravanan Mobserves that his Dell Vostro

1550 laptop runs too hot underUbuntu, but not under Windows 7.I have seen similar things happento a variety of laptops – thoughnot all. The only common pointswith computers that exhibit thisbehaviour are a 64-bit CPU and adedicated graphics chip, i.e.besides the one integrated intothe CPU. For example, it hashappened to me with a Lenovo(Core i5 and Nvidia graphics card)and a Sony Vaio (Celeron with asecondary Intel GPU), both at leastsince version 12.04 onwards. It alsoseems to be the case for the Dellthat Saravanan mentioned.

A solution that worked for mewas to abandon Ubuntu andderivatives for these computers,install Debian (or Linux MintDebian) instead. The fans nolonger spin up constantly, andbattery life got rather better.

I am not very clear as to whythis happens, but the fact that

Debian tends to be slightly moreconservative towards introducingmodifications into the kernel maybe a factor. The followingLaunchpad thread gave me foodfor thought:https://answers.launchpad.net/ubuntu/+source/linux/+question/195794

Alan Ward

AMAHI HOME SERVER

Danish Lala asked about anarticle for creating a Home

Server running Ubuntu. I'd like topoint out that Amahi Home Serveris setup with either Fedora orUbuntu 12.04 as the operatingsystem. It does almost all of theheavy lifting for you. It can befound at: http://www.amahi.org.

Patrick Dickey

Join us on:

facebook.com/fullcirclemagazine

twitter.com/#!/fullcirclemag

linkedin.com/company/full-circle-magazine

ubuntuforums.org/forumdisplay.php?f=270

goo.gl/FRTMl

FULL CIRCLE NEEDS YOU!

Without reader inputFull Circle would be an

empty PDF file (which I don'tthink many people would findparticularly interesting). Weare always looking for articles,reviews, anything! Even smallthings like letters and desktopscreens help fill the magazine.

See page 29 to read our basicguidelines. Follow those andyou're almost guaranteedsuccess.

Have a look at the last page (ofany issue) to get the details ofwhere to send yourcontributions.

Page 45: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 45 contents ^

Page 46: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 46 contents ^

QQ&&AACompiled by Gord Campbell

If you have Ubuntu-related questions, email them to:[email protected], and Gord will answer them in a futureissue. Please include as much information as you can about your problem.

Q I carelessly deleted the /tmpdirectory. Now I can't login.

A (Thanks again to SeijiSenseiin the Ubuntu Forums) See

this message thread:http://ubuntuforums.org/showthread.php?t=2107154

Q I have a Macbook Pro withRetina display. Can I use

Ubuntu?

A You're going to love 13.04!For now, see this blog:

http://linuxmacbookproretina.blogspot.com.au/2012/12/ubuntu-1304-daily-build-macbook-pro.html

Q After installing Ubuntu 12.10,Libreoffice won't let me open

any bases or build new bases. Themessage says it can't locate anyJava installations. Has anyone elsehad this problem?

A Yes, I would say the thepackaging of Libreoffice-base

is incomplete. After installingopenjdk-jre, you should be able to

create a database.

Q How can I make my wirelessconnection use a static IP

address in Ubuntu 12.10?

A (Based on information fromchili555 in the Ubuntu

Forums) This is a blow-by-blow,which should also work in Ubuntu12.04, and you can probably do itfaster than the time it takes toread this. Click on the networkicon, which is probably next to thevolume control on the top-right ofyour screen, and select EditConnections. Select the Wirelesstab. Click on the name of yourcurrent connection and select"Edit".

A new window pops up. Selectthe IPv4 Settings tab. "Method" isa drop-down box, select "Manual."The next box is Addresses, click onAdd. For "Address," type in theaddress you want the computer touse. Make sure it is not in therange of DHCP addresses yourrouter might assign. I used192.168.1.32 For Netmask, use

255.255.255.0. Gateway is theaddress of your router. Mine is192.168.1.1 but some routers use192.168.0.1. Some use a verydifferent address.

In order to browse the web, youmust specify DNS Servers. Whenyou signed up with your ISP, youprobably got an informationpackage suggesting what DNSservers to use. Google operatesexcellent DNS servers at 8.8.8.8and your router can also passrequests to DNS servers, so youmight enter 8.8.8.8 192.168.1.1into this field. I plugged in thenumbers my ISP suggested,separated by a space.

Save your changes, and you'redone. You can restart networking,or just reboot to have the changetake effect.

At least, that's the theory. Idiscovered that Network Managersaved the original settings under anew name, and that is what it used.When I clicked on the icon, it didn'toffer the modified settings as aconnection option. So, I made the

changes once again, this time tothe new name. Clicked save,disconnected and reconnected,and I was using the static IPaddress. I used Conky to display myIP address with this line:

IP Address: ${addr wlan1}

Your wireless might be wlan0.

Q After entering all thenecessary info to set up the

wireless connection, not only did itnot connect, but there did notappear to be any attempt toconnect. Went to thesettings/network/settings pageand it reports that it's on, thehardware address, and also says"firmware missing".

A (Thanks to ubfan1 in theUbuntu Forums) From a wired

connection, add the package linux-firmware-nonfree

sudo apt-get install linux-firmware-nonfree

Page 47: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 47 contents ^

Q & A

Q After installing Ubuntu 12.04,my G4 Mac mini was mute.

A (Thanks to linuxopjemac inthe Ubuntu Forums) Use this

command:

sudo nano /etc/modules

Add these lines at the end:snd_aoa_i2sbussnd_aoa_fabric_layoutsnd_aoa_codec_tassnd_aoa_codec_onyx

Then CTRL-X and "y" to save.Reboot. Sound works, hopefully.

Q (Thanks to baseballa51 andDuckHook in the Ubuntu

Forums) I have a RocketRAID 2640x1 PCIE 1x 4 port SATA Controller,with four drives attached to it. Icannot access my HDDs connectedto the RAID controller card.

A This web page:http://www.flynsarmy.com/20

12/11/installing-rocketraid-2760a-drivers-on-ubuntu-12-10was for a slightly different versionof the card, but it spelled out thesteps needed to use the RAIDcontroller.

TIPS AND TECHNIQUES

Driver File Types

The Linux kernel is constantlygrowing, so new versions often

drop support for older hardware. Ifyou are stuck with one of theseolder devices, the solution canrequire compiling a driver fromsource code and installing it onyour system.

That sounds drastic andcomplicated, but it's better thanthe alternative. When I movedfrom Windows 98 to XP, my lovely(and semi-expensive) webcambecame electronic trash.

As DuckHook explained in thisthread:http://ubuntuforums.org/showthread.php?t=2101512 the first thingsyou need to know about are somenew file types. If you go to avendor site and download a Linuxdriver for your device, you willprobably get some-long-name-with-version-info.gz where gz isshort for GNU zip. If you're comingfrom Windows, you are probablyfamiliar with zip files, which maycontain one or several files. The gz,or the zip, is interesting only once

you see what is inside.

Double-clicking on a .gz willgenerally open it in a programwhich can extract the contents.With any luck, there will be one ormore .sh files, perhaps includinginstall.sh

When you first look inside a .gz,you might see one or more fileswith readme in the name. Beforeyou even extract the contents, youshould see what they say.Sometimes they will bore you witha list of changes from the previousversion, but sometimes they willcontain information you reallyneed to know. Then, you canextract the files.

A .sh is a shell script, similar to a.bat (batch) file in MS-DOS orWindows, but more powerful. Itwill probably compile the sourcecode, but a default Ubuntuinstallation needs someenhancements to do this. The mostbasic is build-essential, so youshould install that now. You mightalso need ubuntu-dev-tools; itnever hurts to be prepared byinstalling that collection ofprograms. Once those are ready,you can run the script with theseterminal commands:

cd the-folder-where-you-extracted-the-files

sudo sh install.sh

The gz probably containedsome source code, but you don'tneed to know the file type,because the script looks after it.However, it might be useful toknow what it produces: long-name-of-some-device-driver.ko where kostands for kernel object. If youever see instructions for installinga device driver, they may tell you toput a .ko file in a specific location.

The terminal command: lsmodwill tell you what device drivers arein use. The results are normallyshort names which do not includeversion information.

DuckHook also explained thatthese commands:

sudo modprobe -rname_of_driver

sudo modprobe name_of_driver

will unload and reload a devicedriver.

And always, remember: whenyou run across stuff you don'tunderstand, Google is your friend.

Page 48: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 48 contents ^

Jennifer is a fine arts student fromthe Chicagoland area. You can follow@missjendie on Twitter or visit herblog at missjendie.com.

UUBBUUNNTTUU GGAAMMEESSWritten by Jennifer Roger

Artizens is an upcoming co-opplatformer with a focus on

customization and creativity.Typically, a gamer is limited to theequipment presets, and high-levelcharacters often look nearlyidentical. The team at Artizens, Inc.wanted to change things up a bit,and give players the chance tocreate their own weapons andarmor.

Players have workshops wherethey create gear for theircharacters by uploading photos ordrawing them themselves. Forthose not as confident with their

artistic skills, you can choose fromvarious presets and gear createdby other players from around theworld. Once you decide on yourequipment, you can mix themhowever you want, and share themwith other players. If you’re notkeen on sharing yourpersonalizations with thecommunity, there will be a featureto make your character’s gearinvisible to everyone except foryou. There won’t be moderation onnew uploads, but there will beoptions for flagging inappropriateor fraudulent items.

Artizens isn’t just aboutcustomization though - thedevelopers also wanted to create adifferent style of gameplayinspired by games like MonsterHunter and Magic: The Gathering.In each mission, players and theircompanions are called to battlethrough numerous arenas inpursuit of the stage’s boss. Yourskill rank will increase with eachmission you complete, but thedifficulty of the next mission willincrease as well. If you lose amission, your rank will go downand the missions will get easier. Tokeep things fresh and challenging,the missions are semi-randomlygenerated, and playing on a harderdifficulty level will yield greaterrewards.

Purchasing the game will giveyou 10,000 shines, the in-gamecurrency. With the currency,players can buy additional contentat the trading post, as well as in-game expansions. Shines can alsobe purchased with real currency, orearned by selling your content toother players. For those notinterested in selling items, there

will be an à là carte system foracquiring new monsters, missions,and crafts.

Artizens, Inc. plans on releasingmonthly expansions in the form ofnew monsters, crafts and mods. Inaddition to co-op, there are plansfor a friends system as well as anonline matchmaking feature. Theteam also plans to releasefrequent updates to improveplayer experience and tocontinuously add new content.

As of early February, Artizenshas nearly reached its Kickstartergoal, and the alpha release isanticipated for July 2013. Artizenswill be available for Windows, Macand Linux, and the team hopes thatthere will also be future supportfor Steam.

AArrttiizzeennss

Page 49: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 49 contents ^

MMYY DDEESSKKTTOOPP

I run Ubuntu 12.10 Quantal with Unity 3D desktop on my ToshibaSatellite C655D-S5200 laptop with C50 Dual core 1.0 MHzprocessor and 4 GB DDR3 RAM.

The Wallpaper is Dark_Wallpaper_223 fromhttp://www.gothicwalpapers.com, but I’m running Wallch, andchanging them to the 1000 Wallpapers downloaded from theWallch Website at 5 Min intervals.

I have a AMD Radeon HD 6320 Graphics chip-set so my driversare not supported for Unity 3D. The Theme is Boje-Red runningCompiz for Wobbly windows and Rain working. I’m saving for anAsus G74 so I can have the ultimate Ubuntu experience.

James Marshall

Your chance to show the world your desktop or PC. Email your screenshots andphotos to: [email protected] and include a brief paragraph about yourdesktop, your PC's specs and any other interesting tidbits about your setup.

This is my Desktop. I love Linux and open source software.

My distribution is Ubuntu 11.10, and I use Conky and AWN on mydesktop, and this is Gnome3 desktop environment.

CPU : Intel Core 2 Duo, 2.200 GHzGraphic : IntelRAM : 2 GBHDD: 250 GB

Shell Theme : Dark ShineWindow Theme : HopeIcon-Theme : Faience-OcreGTK+ Theme : Ambiance

Kaveh Shahhosseini

Page 50: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 50 contents ^

MY DESKTOP

Attached are the screenshots of my favorite tweaked desktopsof Ubuntu 12.04 LTS running on my laptop. I am a newbie toUbuntu, but have heard about it before, about 6 years or so.Unfortunately, I couldn't get hands on it since I hadn't a PC of myown, but now I have one.

Dock is Cairo, Conky for monitoring, and some basic tweakingson terminal too.

Laptop : Dell Vostro 1550Processor : Intel® Core™ i5-2430M CPU @ 2.40GHz × 4, 2nd gen.RAM: 2 GBHDD: 320 GBOS : Ubuntu 12.04 LTS 64-bit

Saravanan

This desktop configuration runs perfectly both at my homeand office workstations. I use Unity 5.16.0 together withConky which is visible in the bottom right corner. I also useweather and system load indicators that can be seen in thetop panel.

OS: Ubuntu 12.04.1 LTS i686CPU: Intel(R)Core(TM) i5-2520M CPU @ 2.50 GHzMemory: 7.8 GB

Gtk Theme: AmbianceIcon Theme: ubuntu-mono-darkCursor Theme: DMZ-WhiteWindow Theme: Ambiance

Sinevar

Page 51: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 51 contents ^

PUZZLE SOLUTIONS

CO

DE

WO

RD

Codeword and 16x16 Suduko puzzles arecopyright, and kindly provided by, The PuzzleClub - www.thepuzzleclub.com

SU

DO

KU

Page 52: ISSUE #70 - February 2013 - Full Circledl.fullcirclemagazine.org/issue70_en.pdf · • Oliver Clark http ... and an electric guitar – all you need to do is install Audacity and

full circle magazine #70 52 contents ^

HHOOWW TTOO CCOONNTTRRIIBBUUTTEEFull Circle Team

Editor - Ronnie [email protected] - Rob [email protected] - Les Pounder & [email protected]

Editing & Proofreading

Mike Kennedy, Lucas Westermann,Gord Campbell, Robert Orsino,Josh Hertel, Bert Jerred

Our thanks go to Canonical, the manytranslation teams around the worldand Thorsten Wilms for the FCM logo.

FULL CIRCLE NEEDS YOU!A magazine isn't a magazine without articles and Full Circle is noexception. We need your opinions, desktops, stories, how-to's,reviews, and anything else you want to tell your fellow *buntu users.Send your articles to: [email protected]

We are always looking for new articles to include in Full Circle. For help and adviceplease see the Official Full Circle Style Guide: http://url.fullcirclemagazine.org/75d471

Send your comments or Linux experiences to: [email protected]/software reviews should be sent to: [email protected] for Q&A should go to: [email protected] screens should be emailed to: [email protected]... or you can visit our forum via: fullcirclemagazine.org

FCM#71Deadline:Sunday 10th Mar. 2013.Release:Friday 29th Mar. 2013.

EPUB Format - Recent editions of Full Circle have a link to the epub file on the downloads page. If you have any problems withthe epub file, you can drop an email to: [email protected]

Google Currents - Install the Google Currents app on your Android/Apple devices, search for 'full circle' (within the app) andyou'll be able to add issues 55+. Or, you can click the links on the FCM download pages.

Ubuntu Software Centre - You can get FCM via the Ubuntu Software Centre: https://apps.ubuntu.com/cat/. Search for 'fullcircle', choose an issue, and click the download button.

Issuu - You can read Full Circle online via Issuu: http://issuu.com/fullcirclemagazine. Please share and rate FCM as it helps tospread the word about FCM and Ubuntu Linux.

Ubuntu One - You can now have an issue delivered to your free Ubuntu One space by clicking the 'Send to Ubuntu One' buttonwhich is available on issues 51+.

Getting Full Circle Magazine: