Full Circle BOOK REVIEW: THE INDEPENDENT MAGAZINE FOR THE UBUNTU COMMUNITY

ISSUE #72 - April 2013

SSOOLLYYDDXX AANNDD SSOOLLYYDDKK RREEVVIIEEWWEEDD A DEBIAN BASED DISTRO WITH OR KDE full circle magazine #72 1 Full Ciircle Magaziine iis neiither affiiliiated wiith,, nor endorsed by,, Canoniical Ltd.. contents ^ HowTo Full Circle Opinions THE INDEPENDENT MAGAZINE FOR THE UBUNTU LINUX COMMUNITY My Story p.32 Programming Python p.08 Columns

LibreOffice p.13 Command & Conquer p.06 Ubuntu News p.04 My Opinion p.33

Network Settings p.16 Ask The New Guy p.27 Ubuntu Games p.42 Review p.35

Letters p.38 Blender p.19 Linux Labs p.30 Q&A p.40

BACK NEXT MONTH BACK NEXT MONTH

Inkscape p.21 Linux Certified p.44 Ubuntu Women p.XX Web Dev p.27 Graphics Web Dev

The articles contained in this magazine are released under the Creative Commons Attribution-Share Alike 3.0 Unported license. This means you can adapt, copy, distribute and transmit the articles but only under the following conditions: you must attribute the work to the original author in some way (at least a name, email or URL) and to this magazine by name ('Full Circle Magazine') and the URL www.fullcirclemagazine.org (but not attribute the article(s) in any way that suggests that they endorse you or your use of the work). If you alter, transform, or build upon this work, you must distribute the resulting work under the same, similar or a compatible license. Full Circle magazine is entirely independent of Canonical, the sponsor of the Ubuntu projects, and the views and opinions in the magazine should in no way be assumed tfoulhl acivrecleCamnaognaiczainlee#nd7o2rseme2nt. contents ^ EEDDIITTOORRIIAALL

This magazine was created using :

WELCOME TO ANOTHER ISSUE OF FULL CIRCLE!

hat's right, folks. Full Circle is six years old this T month. Incredible! Never, when I started FCM all those years ago, did I imagine that it would still be going strong six years later. I can't stress enough that every issue is created by a team of folks, not just me, so a BIG thanks to all of them. Their names are listed on the last page of every issue and at the top of each article. My thanks also go out to the many translation teams around the world.

The one thing I like to do each birthday issue is to have a survey where you, the Full Circle Podcast readers, can give us your opinion on FCM. What would you like to see more/less of? Released monthly, each episode covers all the latest Ubuntu news, What do you like/dislike? Full details are on page 38; the survey is at: opinions, reviews, interviews and http://goo.gl/hR7zc. listener feedback. The Side-Pod is a new addition, it's an extra I'm sure you Python fans will know about the Special Editions that Robin Catling has (irregular) short-form podcast which is intended to be a branch been putting together (which, by the way, is up to volume six). Well, he's now creating a of the main podcast. It's series of Special Editions from the LibreOffice series, so, if you've been wanting to somewhere to put all the general gather them into one handy dandy issue, volume one is up on the main Full Circle site. technology and non-Ubuntu stuff The easiest way to find the Special Editions is to use the search box on the site. that doesn’t fit in the main podcast.

Anyway, I shan’t keep you any longer. Enjoy the issue, and please fill in the survey! Hosts: • Les Pounder All the best, and keep in touch! • Tony Hughes Ronnie • Jon Chamberlain • Oliver Clark [email protected] http://fullcirclemagazine.org

full circle magazine #72 3 contents ^ UUBBUUNNTTUU NNEEWWSS Written by The Ubuntu News Team

CHANGES IN UBUNTU some other takes on the is in need of 9 Ubuntu Members http://www.canonical.com/content announcement: with a good community track RELEASES DECIDED BY THE /canonical-and-chinese-standards- record and enough time available body-announce-ubuntu- UBUNTU TECHNICAL BOARD Ubuntu Technical Board Meeting for meetings once a month. collaboration he Ubuntu Technical Board Decisions Regarding The New Nominations will be accepted T announce their decision to Release Proposals - through Friday April 5th at 12:00 This story has also been covered in change support for non-LTS http://www.webupd8.org/2013/03 UTC for ubuntu-membership- the wider press: releases from 18 to 9 months, and /ubuntu-technical-board- boards at lists.ubuntu.com the adoption of a mechanism to meeting.html China to create home-grown allow users to continuously track http://fridge.ubuntu.com/2013/03/ - the development focus without Ubuntu To Halve Support Window 22/ubuntu-membership-board-call- http://www.bbc.co.uk/news/techn explicitly upgrading from release for 'Regular' Releases - for-nominations/ ology-21895723 to release. http://www.omgubuntu.co.uk/201 3/03/ubuntu-to-halve-support- CANONICAL AND CHINESE Ubuntu tapped by China for http://fridge.ubuntu.com/2013/03/ window-for-regular-releases STANDARDS BODY national operating system - 19/changes-in-ubuntu-releases- http://www.theregister.co.uk/2013 decided-by-the-ubuntu-technical- Canonical to halve support for ANNOUNCE UBUNTU /03/22/china_makes_linux_os_with board/ standard Ubuntu releases - COLLABORATION _canonical_help/ http://www.linuxuser.co.uk/news/c he CSIP (China Software and Also read the follow-up post by anonical-to-halve-support-for- Integrated Chip Promotions China chooses Ubuntu for a Rick Spencer, Vice President of standard-ubuntu-releases T Centre), National University of national reference OS coming in Ubuntu Engineering, for his Defense Technology (NUDT) and April - comments on the decisions by the UBUNTU MEMBERSHIP Canonical join forces to create http://www.engadget.com/2013/0 Ubuntu Technical Board, and how Ubuntu Kylin, a China-focused 3/23/china-chooses-ubuntu-for-a- they will impact users: BOARD CALL FOR Ubuntu desktop system. This national-reference-os-coming-in- http://fridge.ubuntu.com/2013/03/ NOMINATIONS announcement represents the first april/ 19/ubuntu-technical-board-looks- lizabeth Krumbach, on behalf step into the government’s five at-shuttleworths-proposal-for- E of the Community Council, year plan to promote open source Goodbye Windows: China to create release-management- makes a call out for restaffing the software and accelerate the home-grown OS based on Ubuntu - methodology/ Membership Board, which is growth of the open source http://arstechnica.com/informatio responsible for voting new Ubuntu ecosystem within the country. n-technology/2013/03/goodbye- Visit the following articles for members. The Membership Board

full circle magazine #72 4 contents ^ UBUNTU NEWS windows-china-to-create-home- Summit May 14th-16th, 2013 from grown-os-based-on-ubuntu/ 14:00 UTC to 20:00 UTC. He Many Thanks to the Ubuntu News UBUNTU 13.04 RELEASED! encourages people to register a Team for their contribution this blueprint and ask the track leads to month. Ubuntu 13.04 continues UBUNTU 8.04 (HARDY add a session for them. He also Ubuntu's proud tradition of outlines some improvements to integrating the latest and HERON) SERVER, 10.04 News this month comes from: the Google+ Hangouts, the greatest open source (LUCID LYNX) DESKTOP AND plenaries, the schedule, summit https://wiki.ubuntu.com/UbuntuW technologies into a high-quality, 11.10 (ONEIRIC OCELOT) scheduler, and registration eeklyNewsletter/Issue309 easy-to-use Linux distribution. processes. This release cycle has seen a REACHING END OF LIFE ON https://wiki.ubuntu.com/UbuntuW significant push toward daily MAY 9 2013 http://mhall119.com/2013/04/uds- eeklyNewsletter/Issue310 quality, which has allowed most dam Conrad, on behalf of the 13-05-ubuntus-second-online- developers and users to A Ubuntu Release Team, developer-summit/ https://wiki.ubuntu.com/UbuntuW participate more actively announces the formal End of Life eeklyNewsletter/Issue311 throughout the cycle, and we (EOL) dates of Ubuntu 8.04 (Hardy NEW UBUNTU MEMBERSHIP feel this also shows in the final Heron) server, 10.04 (Lucid Lynx) quality of this release. OARD EMBERS https://wiki.ubuntu.com/UbuntuW desktop and 11.10 (Oneiric Ocelot) B M lizabeth Krumbach announces eeklyNewsletter/Issue312 desktop and server. Along with performance the Ubuntu Membership Board E improvements to , updates Members approved by the Ubuntu http://fridge.ubuntu.com/2013/03/ to common desktop packages, Community Council. Zhengpeng 29/ubuntu-8-04-hardy-heron- and updated core and toolchain Hou, Mathieu Trudel-Lapierre, server-10-04-lucid-lynx-desktop- components, Ubuntu 13.04 also Jared Norris, Eleanor Chen, and and-11-10-oneiric-ocelot-reaching- includes the new Friends service, Penelope Stowe are welcomed (or end-of-life-on-may-9-2013/ to consolidate all social welcomed back!) into the 1200 UTC networking accounts via Ubuntu Membership Board and Iulian Online Accounts. Also included Udrea, Javier Lopez, and Benjamin is a tech preview of Upstart's Kerensa were welcomed (or new user session feature. welcomed back!) into the 2200 UTC UDS 13.05: UBUNTU’S Membership Board. Read more about the new SECOND ONLINE DEVELOPER features of Ubuntu 13.04 in the https://lists.ubuntu.com/archives/u SUMMIT following press releases: buntu-news-team/2013- ichael Hall announces the http://ubunt.eu/1304Server and: April/001777.html M next Ubuntu Developer http://ubunt.eu/1304Client

full circle magazine #72 5 contents ^ CCOOMMMMAANNDD && CCOONNQQUUEERR Written by Lucas Westermann UUbbuunnttuu TToouucchh FFoollllooww--uupp

fter my article last month on Mail support was very effective in the reader's case, he mentioned it's impractical to deal with, and A Ubuntu Touch, I received a either of those applications, the TouchPal's Keyboard, Dialer and TouchPal's Contacts and Dialer app relative flurry of responses from last time I used them. Thunderbird Contacts app. This does more than (one shortcut for both tools) readers (more so than for any also offers the Lightning plug-in just replace the keyboard, but also apparently does not suffer from other article I've ever written). Due for calendars, which works well offers a custom dialer and contacts this limitation, and the reader once to the response, I thought it might with Google Calendar. There are app. His reasoning for why this app again finds it more flexible and be nice to share readers’ responses also numerous plug-ins for is worthwhile was because he easier to use. in a follow-up article. The first Thunderbird that allow the syncing found typing on the typical weekend of April also saw a big of contacts. As such, I think it Android keyboard to be “slow, The second email I received was change in the TF101 Ubuntu Touch highly unlikely that Ubuntu Touch boring and error-prone”. He found short and to the point. The reader packages, and I was finally able to releases will be lacking a tool with the “swipe to type” method of felt the possible lack of Aldiko (an get the developer preview running similar features. That leaves TouchPal's keyboard much more e-reader application), and Kindle on my tablet. However, as hardly Google and Navigation. My intuitive, and, due to the learning apps on Ubuntu Touch would be any functionality exists at this fear is that Canonical will decide to algorithm, less error-prone. The something to consider. Now, I'm time, I will save a full-on review for include some new /navigation reader also notes that while not sure Aldiko will be a later date (an official Beta tool, instead of trying to include TouchPal's keyboard app offers ported/available for Ubuntu Touch, release, for example). Google's tried-and-tested predictive features, they are but I think Canonical would be applications. There is always the turned off by default, and it's not remiss if they didn't include some The first response I received argument “Google Maps can easily necessarily clear how to enable form of Kindle app. Once again, was from a reader who shared his be accessed through a browser”, them. According to a Sprint user Amazon does allow reading of opinion that Ubuntu Touch but it defeats the purpose of a guide, sliding right on the space Kindle books online (“Amazon absolutely must have integrated quick and handy maps tool. At this bar enables predictive typing, and Cloud Reader”), but it's hardly an support for Google accounts point, all we can do is wait and see. sliding to the left disables it again. ideal solution. That being said, the (Google Mail, Google Contacts, list of dummy applications in the Google Calendar (with emphasis This same reader also stated The Dialer and Contacts apps Developer Preview does include an on the reminders), Google Maps that he wished to see a highly included in the TouchPal package Amazon store shortcut, which and Navigation). Upon reading the functional/usable keyboard in are useful for the reader, because makes me believe Ubuntu will do article, I realised I had neglected to Ubuntu. While I haven't had issues the default Contacts app tends to its best to integrate Amazon mention anything of the sort. That with the default Android lose data included in the Notes services. I would supply further being said, I imagine Ubuntu will keyboards, there seems to be a sections of contacts when they information about the apps ship with some form of mail client large number of Android users who contain a lot of text. As the reader included, but, as the keyboard isn't (Evolution/Thunderbird). Google prefer keyboards such as Swype. In creates these Contacts on the PC, working properly, I can't connect to

full circle magazine #72 6 contents ^ COMMAND & CONQUER the wireless, making nearly every page is split up in this way: devices are probably not worth of FCM. If any musicians out there app throw “not connected” errors, flashing. have suggestions on audio or disabling those features I'd be • Working with phablet-flash interfaces they have had working interested in testing. (official Ubuntu method, contains On a completely unrelated with Ubuntu, or if anyone has just the Galaxy Nexus, and the note. After my article on the specific questions they'd like me to Lastly, I had a reader explain to Nexus 4, 7 and 10); Rocksmith Real Tone Cable for cover in the articles, feel free to me that he wanted to install • Working, but not available from recording electric guitar, I had a email me at [email protected]. Ubuntu Touch on a Samsung cdimage.u. (unofficial ports, reader request an article or two on Please include the words “FCM Galaxy S III, but cited the Ubuntu maintained by the community, but using Audacity to record acoustic Guitar Article” in the subject line, Wiki page where it was listed as a fairly functional); and guitar. These articles will happen so I can separate them from usual “work in progress”. So, for anyone • Work-In-Progress (basically the as soon as I have a working audio C&C emails. else who was wondering waiting point for any port that interface available to me, and I will something similar, I say this: if hasn't yet gotten be covering recording acoustic I hope at least a few people you're willing to give up a perfectly unlocking/installing instructions, guitar with a microphone, with have found the reader responses functional device in order to install working code or an image). pickups, electric guitar (direct-in), useful and/or interesting! I had a pretty much non-functional and with a microphone in front of definitely never heard of the Developer Preview just to see Unless you want to help debug the amp. If all goes well, this will TouchPal Keyboard, Dialer and what it looks like, you can and develop, Work-In-Progress happen within the next two issues Contacts app. Got any questions? generally expect any of the Wiki Suggestions? Then feel free to pages for your device to include email me at [email protected]. decent instructions. That being Please include either “FCM” or said, Ubuntu Touch is not in an “C&C” in the subject line, so it alpha, beta, or release candidate doesn't get lost in my inbox! stage. It is quite literally a snapshot of their demo device, including multiple accounts you can't access, a guest account you need to use, and examples of applications they want to include. If, however, you have a second or third Android device just sitting around (such as my TF101), then Lucas has learned all he knows from feel free to flash it and play around repeatedly breaking his system, then having no other option but to a little, just don't expect to be discover how to fix it. You can email breathing new life into an old Lucas at: [email protected]. device (just yet). Lastly, the Wiki

full circle magazine #72 7 contents ^ HHOOWW--TTOO Written by Greg Walters PPrrooggrraammmmiinngg IInn PPyytthhoonn:: PPtt 4433

ast time, we started a project Series.s00e00 import os L that would eventually use the from os.path import join, getsize, exists Series.S00E00.S00E01 import sys TvRage module that we created import apsw the month before that. Now we Series.00x00 import re will continue the project. This time #------Series.S0000 # NEW LINES START HERE we will be adding functionality to #------our program: tweaking the Series.0x00 from xml.etree import ElementTree as ET filename parse routine and adding import urllib import string two fields (TvRageId and Status) to We will also fix any ‘missing from TvRage import TvRage the database. So, let’s jump right leading zero’ issues before we in. write to the database. the following groups... When we get to this point, First, we will make the changes Our first pattern tries to catch S[1] = Monk (next page, bottom left) we to our import lines. For those who multi-episode files. There are prepare the show name by are just joining us, I'll include the various naming schemes, but the S[2] = 01 removing any periods in the show ones from last time (shown top one we will support is similar to S[3] = 05 name, and then pull the season right). 'S01E03.S01E04'. We use the and episode information from the pattern string S[4] = 01 various groups, and return them. The lines after ‘import re’ are "(.*)\.s(\d{1,2})e(\d{1,2})\.s(\d{1,2}) S[5] = 06 For the season information, if we the new ones for this time. e(\d{1,2})". This returns (hopefully) have a pattern like “S00E00”, the five groups which consist of: the We are using only groups S[1], season number will have a leading The next thing we will do is series name (S[1]), season(S[2]), S[2] and S[3] in this code, but you zero. However if the pattern is like rewrite the GetSeasonEpisode episode number 1 (S[3]), season can see where we are going with “xxx”, then the season is assumed routine. We are going to throw out (S[4]), and episode number 2 (S[5]). this. If we find a match, we set a to be the first character, and the pretty much everything we did last Remember that the parens create variable named “GoOn” to true. trailing two are the episode. In month, and make it more flexible each group for returns. In the case This allows us to know what we order to be forward thinking, we across the possible season/episode above, we group anything from the should do after we’ve fallen want to make the season a two- schemes. In this iteration, we will first character up to the ".s", then through the various If lines. digit number with a leading zero if be able to support the following two numbers, skip the "e", then needed. schemes... two numbers, and repeat. So the So, next page (top right) is the filename code for the GetSeasonEpisode Next, in our MakeDatabase Series.S00E00 "Monk.S01E05.S01E06.avi" returns routine. routine, we will change the create

full circle magazine #72 8 contents ^ HOWTO - PROGRAMMING PYTHON Pt43 SQL statement to add the two new def GetSeasonEpisode(filename): fields (next page, top). GoOn = False filename = filename.upper() Again, the only thing that has changed from last time is the last This is our first pattern check. #Should catch multi episode .S01E01.S01E02 type filenames two field definitions. resp = re.search(r'(.*)\.s(\d{1,2})e(\d{1,2})\.s(\d{1,2})e(\d{1,2})',filename, re.I) if resp: In our WalkThePath routine, the showname = resp.group(1) GoOn = True only changes are the lines that else: actually insert into the database. This is to support the new Our second pattern check looks for SddEdd or sddedd... structure. If you remember from # Should catch SddEdd or sddedd resp = re.search(r'(.*).S(\d\d?)E(\d\d?)(\.*)', filename, re.I) last time, we pass the folder that if resp: holds our TV files to this routine. In showname = resp.group(1) GoOn = True my case, there are two folders, so else: it's set into a list and we use a for loop to pass each into the routine. The next pattern looks for ddxdd. As we go through the routine, we #check for ddxdd resp = re.search(r'(.*)\.(\d{1,2})x(\d{1,2})(.*)', filename, re.I) walk through each directory if resp: looking for files with extensions of showname = resp.group(1) .avi, .mkv, .mp4 and .m4v. When we GoOn = True else: find a file that matches, we send it to the GetSeasonEpisode routine. This pattern checks for Sdddd. We then check to see if we already #check for Sdddd resp = re.search(r'(.*).S(\d\d)(.\d\d?)' , filename, re.I) if resp: showname = resp.group(1) if GoOn: GoOn = True shownamelength = len(showname) + 1 else: showname = showname.replace("."," ") season = resp.group(2) if len(season) == 1: And finally we try for ddd season = "0" + season # Should catch xxx episode = resp.group(3) resp = re.search(r'(.*)(\d)(.\d\d?)',filename,re.I) ret = [showname,season,episode] if resp: return True,ret showname = resp.group(1) else: GoOn = True ret = ["",-1,-1] return False,ret

full circle magazine #72 9 contents ^ HOWTO - PROGRAMMING PYTHON Pt43

def MakeDataBase(): # IF the table does not exist, this will create the table. # Otherwise, this will be ignored due to the 'IF NOT EXISTS' clause sql = 'CREATE TABLE IF NOT EXISTS TvShows (pkID INTEGER PRIMARY KEY, Series TEXT, RootPath TEXT, Filename TEXT, Season TEXT, Episode TEXT, tvrageid TEXT,status TEXT);' cursor.execute(sql) have it entered into the database, sqlquery = 'SELECT count(pkid) as rowcount from TvShows where Filename = and, if not, we add it. I’m going to "%s";' % fl give you (top right) only part of the try: routine from last month. for x in cursor.execute(sqlquery): rcntr = x[0] if rcntr == 0: # It's not there, so add it The two lines in black are the try: ones that are new this time. sql = 'INSERT INTO TvShows (Series,RootPath,Filename,Season,Episode,tvrageid) VALUES (?,?,?,?,?,?)' cursor.execute(sql,(showname,root,fl,season,episode,-1)) We are already over halfway except: done. Next are some support routines that work with our def WalkTheDatabase(): TvRage routine to fill in the tr = TvRage() database fields. Our first routine SeriesCursor = connection.cursor() runs after the WalkThePath sqlstring = "SELECT DISTINCT series FROM TvShows WHERE tvrageid = -1" routine, and runs through the database, getting the series name because they are cancelled. So, instance of the series name, no string.capwords(x[0]," ") and querying the TvRage server for now we have the status and can matter how many of them I have, the id number. Once we have that, write that to the database (above). where the field tvrageid is equal to We are using the capwords we update the database, then use “-1”. If, for example, we have 103 routine from the string library to that id number to once again query We will pause here in our code episodes of Doctor Who 2005. By change the series name (x[0]) to a TvRage to get the current status of and look at the SQL query we are using the Distinct, I will get back “proper case” from the all- the series. This status can be "New using. It’s a bit different from only one record, assuming that we uppercase we currently store the Series", "Returning Series", anything we’ve done before. The haven’t gotten a TvRageID yet. show name in. We do this because "Canceled", "Ended" and "On string is: TvRage expects something other Haitus". The reason we want this for x in that all-uppercase entries, and we SELECT DISTINCT series FROM SeriesCursor.execute(sqlstrin won’t get the results we are information is that, when we go to g): check for new episodes, we don't TvShows WHERE tvrageid = -1 looking for. So the series name want to bother with series that seriesname = x[0] “THE MAN FROM UNCLE” will be Which says, give me just one won't have any new episodes searchname = converted to “The Man From

full circle magazine #72 10 contents ^ HOWTO - PROGRAMMING PYTHON Pt43

def UpdateDatabase(seriesname,id): idcursor = connection.cursor() sqlstring = 'UPDATE tvshows SET tvrageid = ' + id + ' WHERE series = "' + seriesname + '"' try: idcursor.execute(sqlstring) except: print "error"

def GetShowStatus(seriesname,id): tr = TvRage() idcursor = connection.cursor() dict = tr.GetShowInfo(id) status = dict['Status'] sqlstring = 'UPDATE tvshows SET status = "' + status + '" WHERE series = "' + seriesname + '"' try: idcursor.execute(sqlstring) except: print "Error"

Uncle”. We use that in the call to that we just got to TvRage – to get print("Requesting information on " + searchname) our TvRage Library FindIdByName. the series information. If you sl = tr.FindIdByName(searchname) This gets the list of matching remember, there is a lot of which = tr.DisplayShowResult(sl) if which == 0: shows, and displays them for us to information provided about the print("Nothing found for %s" % seriesname) pick the best one. Once we pick series from TvRage, but all we are else: one, we update the database with concerned about at this point is option = int(which)-1 id = sl[option]['ID'] the id number and then call the the show status. Since everything UpdateDatabase(seriesname,id) GetShowStatus routine to get the is returned in a dictionary, we just GetShowStatus(seriesname,id) current show status from TvRage look for the [‘Status’] key. Once we (bottom right). have it, we update the database with that and move on. We are almost done with our black, below) to call the The UpdateDatabase routine code. We finally add one line to our “WalkTheDatabase” routine after (top) simply uses the series name main routine from last month (in we are done getting all our as the key to update all the records startfolder = ["/extramedia/tv_files","/media/freeagnt/tv_files_2"] with the proper TvRage ID. #for cntr in range(0,2): #WalkThePath(startfolder[cntr]) WalkTheDatabase() GetShowStatus (above) is also # Close the cursor and the database very simple. We call the cursor.close() GetShowInfo routine from the connection.close() print("Finished") TvRage library by passing the id

full circle magazine #72 11 contents ^ HOWTO - PROGRAMMING PYTHON Pt43 filenames. Again, I’m going to give options for, in this case, the tv you only part of the Main routine, series Midsomer Murders. Requesting information on Midsomer Murders 5 Found just so you can find the correct ------place to put the new line. I entered (in this case) 1, which 1 - Midsomer Murders - 4466 associates that series with the 2 - Motives and Murders - 31373 3 - See No Evil: The Moors Murders - 11199 That’s all our code. Let’s TvRage ID 4466. That’s entered 4 - The Atlanta Child Murders - 26402 mentally go over what happens into the database, and we then use 5 - Motives & Murders: Cracking the Case - 33322 when we run the program. that ID to request the current Enter Selection or 0 to exit -> status for the series, again from First, we create the database if TvRage. In this case, we got back it doesn’t exist. “Returning Series”. This is then the age group I fall in. entered into the database and we Next, we walk through the move on. The full code is, as always, predefined paths, looking for files available on PasteBin at Greg Walters is owner of RainyDay that have any one of the following While doing the initial “run” http://pastebin.com/MeuGyKpX Solutions, LLC, a consulting company extensions: into the database, it will take a in Aurora, Colorado, and has been Next time we will continue with programming since 1972. He enjoys while and require your attention, cooking, hiking, music, and spending .AVI, .MKV, .M4V, .MP4 because each and every series the integration with TvRage. Until time with his family. His website is needs to ask about the ID number then have a great month! www.thedesignatedgeek.net. When we find one, we go match. The good news is that this through and try to parse the has to be done only once. If you filename looking for a series name, are “somewhat normal”, you won’t Season number, and episode have that many to deal with. I had number. We take that information 157 different series to do, so it and put it into a database, if it took a little while. Since I was does not already exist there. careful when I set up my filenames (checking TvRage and Once we are through looking TheTvDB.com for the proper for files, we query the database wording of the series name), the looking for series names that don’t majority of the searches were the have a TvRage ID associated with #1 option. them. We then will query the TvRage API and ask for matching Just to let you know, over half files to gather that ID. Each series of the TV series that I have either will go through that step once. The ended or have been canceled. That following screenshot shows the should tell you something about

full circle magazine #72 12 contents ^ HHOOWW--TTOO Written by Elmer Perry LLiibbrreeOOffffiiccee PPtt2255:: FFoorrmmuullaa LLaayyoouutt

s you create more complex the x + 1 in the denominator of the line would make the formula The keywords ‘from’ and ‘to’ A formulas in Math, you will fraction? You can use curly difficult to read. However, just generate the lower and upper soon discover that things don't brackets to group the two pressing the Enter key in the editor range of these commands. The always display the way you were elements together. does not result in a new line. In following markup demonstrates: expecting. There are a few tricks to order to get a new line in the Enter the same formula in the formula, you use the newline sum from x=0 to x=n f(n) " making formulas display the way or " we want them, especially complex editor, but with curly brackets element. int from x to n f(n+1) formulas. Today, we will look at grouping the addition: many of these tricks to make our Editor example: Result: formulas come out right. 2 over {x + 1} x over 250 = 5 over 100 You then get the newline GROUP ELEMENTS WITH 100x = 250(5) newline result you wanted: 100x = 1250 newline SCALED BRACKETS BRACKETS 100x over 100 = 1250 over Any time the formula doesn't 100 newline Sometimes, you need a bracket x = 12.5 The curly brackets, {}, have a flow the way you were expecting, to span more than one line. A good example of this is with a matrix. If special use in formulas. They help you can use curly brackets to group Result: you to group elements together. items together to make things you just use the bracket Without them you can get a come out right. You will see more characters, you get an ugly looking different formula than the one you use of brackets as we work matrix. were expecting. Here are a couple through other examples in this of examples to show you what I How-To. The markup: mean. (matrix {x#x+1##y#y+1}) EQUATIONS SPANNING Enter the following into the The result: formula editor: MORE THAN ONE LINE

2 over x + 1 Some equations make more To get brackets that scale to the sense if they are broken into SUM / INTEGRAL LIMITS size of our matrix we use the You will get the multiple lines, or you need to show markup “left (“ and “right )”. This following result: the progression of a formula The sum and int commands can results in a much nicer looking through each step to its take optional parameters to signify matrix. But what if you actually wanted conclusion. Doing this all on one the range of the sum or integral.

full circle magazine #72 13 contents ^ HOWTO - LIBREOFFICE Pt25

The markup: L_{n-1} + L_{n-2} # if n > alignr 6x # `=` # 45 c^2 = a^2 + b^2 newline 1.} } "The Pythagorean Theorem." right none left(matrix {x#x+1##y#y+1} right) The result: Result: The result: The result: You will notice the back tick or grave ( ` ) marks around the equals To get scalable square brackets signs. This is necessary because use “left [“ and “right ]”. To get the equals sign is a binary operator scalable curly brackets use “left and requires an expression on both CHEMICAL FORMULAS lbrace” and “right rbrace”. You can sides. The back tick ( ` ) is the small Math was designed for find a full list of all the brackets in Notice that I ended the space mark in Math. You could mathematical equations, but you the LibreOffice help definition with “right none” to get accomplish the same thing with can make chemical formulas, too. documentation. our definition to show correctly. the Math symbol for a long space Since variables are usually in italics, (~) or empty brackets ({}). you will want to turn off the italics ALIGNING ELEMENTS USING Remember in a matrix that UNPAIRED BRACKETS for variables (explained later). everything between the hashes is MATRIX an independent expression. Sometimes, you only need a Example: bracket on one side, but not the You will notice (in the Lucas You will also notice, in the other. If you don't put a closing numbers definition) I used a matrix matrix { second row, I use the command bracket, you get an inverted to get everything to line up "molecules" # H_2 SO_4 ## “alignr” to align the 6x to the right "Isotopes" # U lsub 92 lsup question mark and the equation correctly. The matrix command is 238 ## in its column. Use “alignl” to align will look messy. To fix this useful for this because Math "Ions" # SO_4^{2-{}} to the left and “alignc” to align to } problem, use the mark up “left doesn't have a command for the center. Center alignment is the none” or “right none”, depending aligning on a certain element. With default, except in a matrix, which Result: on your needs, to indicate you have the matrix command, we can use defaults to left alignment. no opening or closing bracket. the columns and rows to get elements to align the way we want A good example of this is the them. A good example of this is to TEXT IN A FORMULA mathematical definition of the get equations to align on the Lucas Numbers. equals sign. Sometimes, you will need to add notes or text to your formula. Note the “lsub” and “lsup” in The markup: For example: You can add text by enclosing the text in quotation marks (“”). the isotope formula. The “lsub” L_n = left lbrace matrix { makes a left subscript, and the matrix{2 # if n = 0; ## 3x + 2x # `=` # 45 ## “lsup” makes a left superscript. You 1 # if n = 1; ## Example:

full circle magazine #72 14 contents ^ HOWTO - LIBREOFFICE Pt25 will also need to add some special CHANGING THE FONT AND dialog. In the Category dropdown, double arrows to your catalog for you select the type of element CONCLUSION chemical formulas. FONT SIZE spacing you want to control. You set the different spacing for the All the different options for Sometimes, you will want to use formatting your formula can seem COLOR, BOLD, AND ITALICS elements as percentages of the a font or font size other than the elements width or height, overwhelming, but you will get the defaults. Format > Fonts brings up depending on the spacing type. hang of it with practice. The first The color, bold, and ital the dialog to change the fonts for and most important thing to commands allow you to emphasize variables, functions, numbers, and remember is using curly brackets certain parts of your formula. They text. You can also set some custom to group elements in a formula. affect only the elements which fonts here as well. Format > Font Look in the Elements dialog or the follow them. To affect more Size brings up the dialog for font context menu when in doubt about elements you need to group them sizes. You set the base font, and how to do something, and you together with brackets. then the element sizes are set as might want to keep this article on percentages of the base. hand as a reference. Example: For example, if we wanted to change the spacing for the bold color blue c^2 = color alignment on the equals signs we Next month, we will discuss red {a^2 + b^2} newline did earlier, we would select matrix using formulas in LibreOffice ital color green "The Writer. Pythagorean Theorem" from the category. If we set the column spacing to 0%, the Result: expressions will butt up against the equals sign.

Result:

Format > Alignment brings up Notice that I put brackets the alignment dialog. Here we can around the elements in the square change the default alignment for root to make them red. Also, for CHANGING ELEMENT the formula, left, right, or center. the c2, I combined color with the SPACING AND ALIGNMENT bold command. You can choose Elmer Perry's history of working, from eight colors: black, white, and programming, computers Sometimes, it is necessary to involves an Apple IIE, adding some cyan, magenta, red, blue, green, change the spacing and alignment Amiga, a generous helping of DOS and yellow. of the overall formula. Format > and Windows, a dash of , and Spacing bring up the spacing blend well with Linux and Ubuntu.

full circle magazine #72 15 contents ^ HHOOWW--TTOO Written by Jan Mussche NNeettwwoorrkk SSeettttiinnggss

hen you connect your private network? When using other address” settings. This way, you When using a fixed address, you W desktop, laptop, networks as well, the choice, if are in control: you decide which always know which address it is printer/scanner, tablet, cellphone there is even a choice, is simple: address the computer uses, and and you can use this in scripts to or whatever other device you you will use DHCP to set all you know it always uses that one address the computer. might have, to a network, you need parameters automatically for a same address. to set a few things straight in working connection. What do you have to do to order to get connected. setup a connection? DHCP stands for: Dynamic Host The first choice you make is Configuration Protocol (See I will explain this using a whether you use a wired or a http://en.wikipedia.org/wiki/Dyna Kubuntu system. For other wireless connection. For the tablet mic_Host_Configuration_Protocol systems, there will be differences and the cellphone, this choice is for more info about DHCP). Here a in setting it up, but they will be easy: only a wireless connection is DHCP server handles all requests minor. possible. for a connection, it hands out the IP address, sets the gateway, and When you open the Network For the laptop and printer you takes care of the correct DNS connection settings, you see what can, almost always, choose addresses. is shown in the picture above. I use between the two, and for desktops a wired connection, since this is the the choice is probably made Routers have a DHCP server on only connection the computer has. already, with the presence of the board so you can use it very easily. The connection is called: “Wired Ethernet port and the missing connection 1”. Now this is just a wireless card. Using DHCP, the router will give Both ways have advantages. name, you can use anything you your connected device the first want here. You can make more The second choice is how do free address in the range of When using DHCP, your device than one connection if you need you want your device to be addresses it can use, meaning it will almost automatically be to, each using its own settings. connect to your network. Do you might use a different address each connected to a network when it use the devices (cellphone, tablet, time it is connected. comes in range AND you have Each time the computer is laptop) also on other networks, permission to connect to it. You booted, the connection is switched wifi at the office, school, mall or For a desktop, which is placed just need to chose the security on automatically—which makes maybe even in the train, or is it under or on your table and which used by the network (if any) and life easy. (desktop, printer/scanner) will be there till it falls apart, you probably type in a password. connected to only your own can also use the manual “fixed As you can see, I use the

full circle magazine #72 16 contents ^ HOWTO - NETWORK SETTINGS

Automatic (DHCP) method of • The subnet mask is used to when you want to connect to it. It and still want a fixed address so connecting to my router. In the organize your network. It tells is not important which address you you can use that address in scripts middle of the screen I chose DHCP, which addresses can be used by get, it is not important to know when connecting to that device? and now the other fields for means of a filter. In my case the which addresses the network uses. setting IP address, Subnet mask value is set to 255.255.255.0. This Local networks can use one of a There is a way, but it depends and Gateway are grayed out. They means when placing this filter on couple of address ranges, either on your router whether it is don't need to be filled out since top of the address, the DHCP the 192.168.x.x series or the possible to use it. the DHCP router takes care of server can use only the addresses 10.10.x.x series. Your device them. 192.168.1.0 until 192.168.1.255. receives an IP address and that's it: Some routers can be told that Only the part after the last decimal you're connected. It is not when device X is trying to connect, In the second picture, I chose point can change. This is caused by important to know which address it always gets the same address, no the manual settings and typed the the value “0” in the mask. Mind it is, what the gateway is—it all matter how few or how many values of IP address, Subnet Mask you, in this range there are a few works automatically. devices are connected to the and Gateway. addresses which will not be used router already. for connected devices since they But what if you want to have are used by the network itself. the ease of use of the DHCP server, This is done by means of the

• The Gateway is the door which connects your local private network to the Internet. It is the address for the “inside” part of the router, the local LAN side of the router.

On the other side, the WAN side of the router, the address is the IP address your Internet Service Provider gave you, either by means of a fixed or a DHCP address.

A few explanations: Using DHCP (on a private network) has the big advantage • IP address is the address your that you don't need to know device gets. It is like your home anything about the network, or address. In a network it is used to about somebody else's network, find the device.

full circle magazine #72 17 contents ^ HOWTO - NETWORK SETTINGS

MAC address. MAC stands for a different IP address from my ISP. for my wife and me). Give your device a name which Media Access Control. See Since we are connected 24/7 it will is easy to remember, choose an IP http://en.wikipedia.org/wiki/MAC_ not happen frequently. In this section of the setup, you address, find the MAC address the address for more info. find the button DHCP Reservation. device uses, and add it here on this Below that you see the local This is the one to use if you want to page. (This is done in another part The MAC address is a unique network setup. combine DHCP with fixed of the page, which is not shown address for each network addresses. here.) Save your settings. card/chip, and is stored in the read The router has the address only memory of the card, or in the 192.168.1.1, with a subnet mask of Reboot your device and check chip which handles network traffic. 255.255.255.0, meaning addresses When clicking the button you the IP address it received. It should 192.168.1.1 – 192.168.1.255 can be will see the next picture, which is a match the entry in the table. There are no two chips/cards in used. part of the total screen which the world with the same MAC shows up. Now you have the best of both address. This makes them unique. DHCP Server is enabled, worlds, and the ease of using a (However, on most network because I want to make it easy for In here you see a table with DHCP server, and the fact your hardware, you can spoof a MAC devices to connect to the network. connected devices, their assigned devices always use the same fixed address, tell it to use an address DHCP is using the addresses IP address, their MAC addresses IP addresses. you specify, not what is on the 192.168.1.100 – 192.168.1.199 (100 and buttons to remove them from chip.) addresses, this should be enough the list.

Now, how to use the MAC address? This depends on your router, if it is possible, and, if so, how to do that.

My router, a Cisco Linksys E4200, has the ability of combining the MAC address of a connected device to a handed-out IP address.

In the Setup tab you find the settings for your Internet connection. As can be seen here, I have a DHCP address from my provider. This means, whenever the modem shuts down, I could get

full circle magazine #72 18 contents ^ HHOOWW--TTOO Written by Nicholas Kopakakis BBlleennddeerr -- PPaarrtt 55

aving a lousy model is not I will give you an example to tab. H something that you want for make it more clear what textures your models, of course, but, as a are and what they are capable of. good friend of mine (and experienced 3D artist) told me: In the image below, we have a “you can save a lousy model with sphere with a plane, and good texturing.” illuminated by 3 lights.

This month, I will try to explain And, finally, we have ball of the very basics of texturing (the aluminum foil garbage on a beach Now, go to the material tab and truth is that I know the very (very sad). press the New button to create a basics). There are a lot of books material for the body of our out there describing texturing snowman. techniques—as textures are a very important matter for 3D modeling.

Low poly is a mesh in Next, we have the same 3D computer graphics that has a objects, but this time with textures relatively small number of and image mapping to create the polygons. We usually use low poly surface filling on earth. Name the material with a models for performance reasons, For the last picture I used an unique name—for example, in real-time applications such as image for the sand, and, for the “body_Material”. games. foil, the cloud texture with some normal map displacement. Next, press the tab next to the High poly models are usually material tab called Textures. used for animated movies or high But enough with the examples. detail pictures, in conditions, in Let’s load our snowman.blend file. general, where we don't have real- time performance restrictions. Select the three spheres (body) (http://en.wikipedia.org/wiki/Low_ Next, we have the same objects of our snowman, and press Ctrl+J poly) with different textures on them. to Join the three meshes to one. Name it “body” under the object

full circle magazine #72 19 contents ^ HOWTO - BLENDER Pt 5

Press New to create a new with these settings: texture. Name it body_Texture, or whatever you like.

Find a picture of snow to use as Under the Influence section, a texture. There is a very tick on Emit and put the value interesting site that I use a lot at -0.800 to light up your image a http://www.cgtextures.com. You little, and, under Geometry, tick can register and have access to Normal and enter 4 for value to thousands of images that you can give a hard surface feeling. Finish the snowman by creating use as a texture (with the free and applying textures to the rest registration you can download up of the meshes (hands, nose, to 15MB of images per month. mouth, etc.) Download the low resolution images and you will be just fine). Feel free to send me your For our snowman, I downloaded creations of the snowman project the image Snow0041_5_S.jpg. at [email protected], and I'll present the best here at Full Circle Under the type button, select Magazine. image or movie. Leave the rest to default, or Next month, I'll introduce you experiment with them to see what to the Cycles render engine—a you get (remember that very powerful renderer that has Then press Open under the experimenting is one of the three been included with the blender Image section, and navigate to things that you need to master distribution ever since version your file system to select your blender, the other two are 2.64. Also, we will start a new image. practice!). project. Send me your ideas.

Now, for the ground, here’s For this month, I have a game called Dead Cyborg created by what I have done (of course, you Nicholas and works in Greece. can use an image instead). I Endre Barath He has worked for a post-production Under the Mapping section, created a texture from the type (http://www.deadcyborg.com). house for several years and migrated to Ubuntu because “it renders select Sphere for the Projection Clouds, adjusting some of the Another game created with the blender game engine. Enjoy! faster.” You can email him at: and leave Coordinates as it is settings. [email protected] (Generated).

full circle magazine #72 20 contents ^ HHOOWW--TTOO Written by Mark Crutch IInnkkssccaappee -- PPaarrtt 1122

reating images, diagrams and great for use as a master format, and its Gzipped counterpart, C drawings in is all very but does mean that the file size is “Compressed Plain SVG”. These well, but, at some point, you are large, and it's saving a lot of will save you a few bytes and likely to need them in a format information that most other produce a purer version of the SVG other than Inkscape's own applications won't understand. that can be easier to work with if variation of SVG. Inkscape has you subsequently have to edit the many import and export formats, If the size of the file is your file by hand, or if you want to use it with the exact selection depending main concern, but you still want to on a site like Wikipedia—where on various external applications as preserve the Inkscape-specific simple SVG files are favoured over well. In this article I will introduce data, then you should use application-specific versions. the most common and most useful “Compressed Inkscape SVG”. This Although this might appear to be formats, generally found in the file has an svgz file extension, and is an ideal format for serving on the format popup of the File > Save the same as a standard Inkscape web, it does remove