Search Results: "ron"

1 February 2010

Dirk Eddelbuettel: Rcpp 0.7.4

Yesterday, and about nine days after release 0.7.3 of Rcpp (a set of R / C++ interface classes), Romain and I released version 0.7.4. It has been uploaded to CRAN and Debian, and mirrors should already have new versions. As before, my local page is also available for downloads and some more details. The release once again combines a number of necessary fixes with numerous new features: Post-release, I also reworked the doxygen setup slightly so that all examples are now browseable, and the whole documentation is now searchable as well. Lastly, we had a remaining Windows build issue. Also, Brian Ripley and Uwe Ligges kindly sent us a small patch supporting the new Windows 64-bit builds using the new MinGW 64-bit compiler for Windows -- so release 0.7.5 may follow in due course. The NEWS file entry for release 0.7.4 is as follows:
0.7.4	2010-01-30
    o	matrix matrix-like indexing using operator() for all vector 
    	types : IntegerVector, NumericVector, RawVector, CharacterVector
    	LogicalVector, GenericVector and ExpressionVector. 
    o	new class Rcpp::Dimension to support creation of vectors with 
    	dimensions. All vector classes gain a constructor taking a 
    	Dimension reference.
    o	an intermediate template class "SimpleVector" has been added. All
    	simple vector classes are now generated from the SimpleVector 
    	template : IntegerVector, NumericVector, RawVector, CharacterVector
    	LogicalVector.
    o	an intermediate template class "SEXP_Vector" has been added to 
    	generate GenericVector and ExpressionVector.
    o	the clone template function was introduced to explicitely
    	clone an RObject by duplicating the SEXP it encapsulates.
    o	even smarter wrap programming using traits and template
        meta-programming using a private header to be include only
        RcppCommon.h
    o 	the as template is now smarter. The template now attempts to 
    	build an object of the requested template parameter T by using the
    	constructor for the type taking a SEXP. This allows third party code
    	to create a class Foo with a constructor Foo(SEXP) to have 
    	as<foo> for free.
    o	wrap becomes a template. For an object of type T, wrap<t> uses
    	implicit conversion to SEXP to first convert the object to a SEXP
    	and then uses the wrap(SEXP) function. This allows third party 
    	code creating a class Bar with an operator SEXP() to have 
    	wrap for free.
    o	all specializations of wrap :  wrap<double>, wrap< vector<double> >
    	use coercion to deal with missing values (NA) appropriately.
    o	configure has been withdrawn. C++0x features can now be activated
    	by setting the RCPP_CXX0X environment variable to "yes".
    o	new template r_cast<int> to facilitate conversion of one SEXP
    	type to another. This is mostly intended for internal use and 
    	is used on all vector classes
    o	Environment now takes advantage of the augmented smartness
    	of as and wrap templates. If as<foo> makes sense, one can 
    	directly extract a Foo from the environment. If wrap<bar> makes
    	sense then one can insert a Bar directly into the environment. 
    	Foo foo = env["x"] ;  /* as<foo> is used */
	Bar bar ;
	env["y"] = bar ;      /* wrap<foo> is used */    	
    o	Environment::assign becomes a template and also uses wrap to 
    	create a suitable SEXP
    o	Many more unit tests for the new features; also added unit tests
        for older API
As always, even fuller details are in the ChangeLog on the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

31 January 2010

Axel Beckert: abe@debian.org

On Wednesday I got DAM approval and since Saturday late evening I m officially a Debian Developer. Yay! :-) My thanks go to As Bernd cited in his AM report, my earliest activity within the Debian community I can remember was organising the Debian booth at LinuxDay.lu 2003, where I installed Debian 3.0 Woody on my Hamilton Hamstation hy (a Sun SparcStation 4 clone). I wrote my first bugreport in November 2004 (#283365), probably during the Sarge BSP in Frankfurt. And my first Debian package was wikipedia2text, starting to package it August 2005 (ITP #325417). My only earlier documented interest in the Debian community is subscribing to the lists debian-apache@l.d.o and debian-emacsen@l.d.o in June 2002. I though remember that I started playing around with Debian 2.0 Hamm, skipping 2.1 (for whatever reasons, I can t remember), using 2.2 quite regularily and started to dive into with Woody which also ran on my first ThinkPad bijou . I installed it over WLAN with just a boot floppy at the Chemnitzer Linux-Tage. :-) Anyway, this has led to what it had to lead to a new Debian Developer. :-) The first package I uploaded with my newly granted rights was a new conkeror snapshot. This version should work out of the box on Ubuntu again, so that conkeror in Ubuntu should not lag that much behind Debian Sid anymore. In other News Since Wednesday I own a Nokia N900 and use it as my primary mobile phone now. Although it s not as free as the OpenMoko (see two other recent posts by Lucas Nussbaum and by Tollef Fog Heen on Planet Debian) it s definitely what I hoped the OpenMoko will once become. And even if I can t run Debian natively on the N900 (yet), it at least has a Debian chroot on it. :-) I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting A few weeks ago, I took over the organisation of this year s Debian booth at FOSDEM from Wouter Verhelst who s busy enough with FOSDEM organisation itself. Last Monday the organiser of the BSD DevRoom at FOSDEM asked on #mirbsd for talk suggestions and they somehow talked me into giving a talk about Debian GNU/kFreeBSD. The slides should show up during the next days on my Debian GNU/kFreeBSD talks page. I hope, I ll survive that talk despite giving more or less a talk saying Jehova! . ;-) What a week.

Jordi Mallach: Cabanyal

Today, I was glad to attend the biggest demonstration ever in favour of the Cabanyal neighbourhood of Val ncia, a traditional district populated by the sea people of the city. After decades of oblivion, the Valencian right-wing government is trying to execute an old plan to open Valencia to the sea , which means demolishing around 450 traditional houses, many of them under protection for their cultural and architectural value, to extend a big avenue until the beach. Patrimonial loss aside, neighbours would be forced to other areas in the city (sadly, this has been happening for a decade already), making Cabanyal-Canyamelar the new posh neighbourhood for the richer class, destroying its identity and replacing it with a new set of skyscrapers.

The local government of PP, led by the infamous Rita Barber , knows that getting the anti-riot police in the neighbourhood and forcing very old men and women out of the houses where they were born isn't what many people like to see in the evening news. They also know time is their ally; this plan is many decades old, and there's no need to hurry now, so it's better to apply silent mafia tactics on the problem. It's very easy. First, stop investing a single euro in the area and monitor the slow but effective results of the degradation. Have a bit of patience, and after quite a few years, start promoting the illegal occupation of the increasing number of empty houses by marginal collectives which will bring the associated introduction of drug dealing in the area. This will surely make even more people leave or accelerate their decease. Keep repeating this process, until the Cabanyal is really fucked up. Now, start promoting the rehabilitation plan , which unavoidably includes splitting the neighbourhood in two pieces, and destroying a substantial part of it. Hopefully, many of the neighbours not directly affected by the demolitions will back the plan, they can't be blamed for being really fed up after all. Do all you can to confront those in favour to those against. In the meanwhile, start harrassing owners, make them end up selling their property at ridiculous prices and as soon as this happens, demolish it very quickly. Don't even bother with cleaning up the rubble: an increasing number of sites like this all over the place may be what makes a few more families give up and leave. In the end, you either have an empty neighbourhood, or you've managed to demolish all the annoying houses that block your shiny avenue. However, if a Supreme Court argues that the remaining houses still have some cultural value, you might want to consider changing your local law to unprotect those architectural elements. Today, many thousands of Valencians marched around Cabanyal to say enough! . From the street, I saw several old women out on the balconies of their beautiful houses, their eyes wet with tears, while they observed in silence all that many people who were fighting for them. There's still a long way to go in the courts until this is all over, but at least these people have a little more hope today than those in el Carme or La Punta, who ended up losing similar battles, years ago.

Adnan Hodzic: Life without evolution

I m using Gnome as my default DE after my KDE4 dissapointment, however what s bothering me for some time now is that I have to live with applications that I don t even use or like for that matter. So why live with those? Well if I try to remove some of those applications it ll want to pull down my whole DE along with them, however I couldn t believe solution was so simple. Applications I don t want to live with are: evolution, epiphany, empathy, ekiga, liferea, gnome-accessibility and couple of others. Step 1 might seem as it wants to remove whole DE, but it all it wants is gnome-desktop-environment which is meta/dummy package so don t worry. Step 1:
sudo apt-get remove epiphany epiphany-browser-data epiphany-data empathy
empathy-doc libempathy30 libempathy-common libempathy-gtk28 liferea
liferea-data evolution ekiga gok dasher orca gnome-accessibility
openoffice.org-evolution evolution-common evolution-data-server
evolution-webcal
Step 2:
sudo aptitude keep-all
Step 3: After you re done, you can use sudo apt-get autoremove or sudo aptitude -f install just so you can see it won t force you later on to remove any other deps. Yea, that was it

Stefano Zacchiroli: RC bugs of the week - issue 19

RCBW - #19 Back with the "ordinary track" of RCBW, here is this week squashes by yours truly: The attentive reader have noticed that there is one more than usual, the reason is the mighty BSP in M nchengladbach, which has powered all above squashes. I've enjoyed the BSP a lot, my first in M nchengladbach, which won't be the last. I recommend checking it out at least once in the future, even only for tasting Formorer's chili :-) The main highlight of the week is my personal award to the best feedback ever from an NMU-ed maintainer, the award goes to Jonas, kudos for your attitude.

Cyril Brulebois: Saving Private G-I

(Disclaimer: this post is not about G.I.) Graphical installer Josselin posted his thoughts about g-i, and given at least the first parts sound doable, I m tempted to have a look at dealing with the needed udebs. Never touched anything like this before, but oh well, one learns every day. Time to learn a bit more about X11 as well. It looks like generating a new mini.iso (using d-i s trunk) wasn t that difficult, so hopefully once I m done with a few udebs, it should be possible to add them to this image and make sure those are usable, at least when loaded manually. Once that finished, gluing everything together is probably going to be another story, but hopefully that won t be impossible. Unrelated stories

29 January 2010

Siegfried Gevatter: Confession

My dear Ubuntu, I think the time has come that I make a confession. You may be wondering why I haven t spent much time with you those last months, and you have the right to know. The case is, I have another one. She s called Debian. No, it s not because of you. It s also not because of your parents; while they aren t perfect, they are great in many ways and I certainly don t want to run away from then. Just wait and let me explain this. You surely remember that I spent a week with her some time ago? Well, now that I want to join Debian s family, I decided that after all that wasn t much time to get to know here, so I gave her another chance, and with this second experience I fell in love with her unstable character. Ubuntu, you are really extraordinary, and I m still telling anyone who wants to listen about your wonders, but you just can t appease my desire for trying out new things as well as Debian does. Now, this doesn t mean we won t see each other anymore. I ll still take you with me whenever I travel, and I ll continue helping you with the household. In fact, all this wouldn t signify a big change at all, if it wasn t that at the same time I also decided to refocus most of my efforts on raising children, which is what really reduced the time I spent helping you. So, while currently I m not seeing you as much as before, I hope you all the best, and I ll still try to help you advance, be it indirectly (1, 2) or, while probably to a lesser degree, continuing with direct contributions. By the way, hello Planet Debian!
3 comments
Siegfried-Angel Gevatter Pujals, 2010. Permalink License Post tags:

Siegfried Gevatter: Confession

My dear Ubuntu, I think the time has come that I make a confession. You may be wondering why I haven t spent much time with you those last months, and you have the right to know. The case is, I have another one. She s called Debian. No, it s not because of you. It s also not because of your parents; while they aren t perfect, they are great in many ways and I certainly don t want to run away from then. Just wait and let me explain this. You surely remember that I spent a week with her some time ago? Well, now that I want to join Debian s family, I decided that after all that wasn t much time to get to know here, so I gave her another chance, and with this second experience I fell in love with her unstable character. Ubuntu, you are really extraordinary, and I m still telling anyone who wants to listen about your wonders, but you just can t appease my desire for trying out new things as well as Debian does. Now, this doesn t mean we won t see each other anymore. I ll still take you with me whenever I travel, and I ll continue helping you with the household. In fact, all this wouldn t signify a big change at all, if it wasn t that at the same time I also decided to refocus most of my efforts on raising children, which is what really reduced the time I spent helping you. So, while currently I m not seeing you as much as before, I hope you all the best, and I ll still try to help you advance, be it indirectly (1, 2) or, while probably to a lesser degree, continuing with direct contributions. By the way, hello Planet Debian!
4 comments
Siegfried-Angel Gevatter Pujals, 2010. Permalink License Post tags: , ,

Joey Hess: xmonad layouts for netbooks

How a window manager with tiling layouts makes a 1024x600 resolution livable. I spend a lot of time in front of a screen, and for the past year I have used only my netbook. No desktops, no laptops. Just a cheap $200 computer that is nearly a kid's toy. The most challenging thing about this is dealing with the 1024x600 screen resolution. When I moved to this screen from something with many more pixels, it at first seemed very cramped. After a year, I think that the most important part of coping with the small screen is the flexability and customizability of layouts provided by the Xmonad window manager. In this post I will explain a few layouts I have developed for fitting specific tasks onto the netbook screen. (I assume that you know maybe 0.1% of Haskell (about what I do), and can read Haskell code without having a brain aneurysm.) web browsing
It's important that the web browser have as few toolbars and other cruft as possible, as horizontal space is especially at a premium. I've configured both Epiphany and Firefox to put everything in one tool bar. But now I use Chromium, which comes pre-configured that way.
What the netbook is designed for. You just want a web browser, taking up the full screen, and with its own tabs. So far, so easy: that's Xmonad's Full layout. But, you sometimes want to see two websites side-by-side. This layout accomplishes that, allowing the sizes to be adjusted as needed. It also uses Xmonad's Magnifier to zoom the smaller window when it's focused, which is useful if you briefly need to see more of a web site.
mySplit = magnifiercz' 1.4 $ Tall nmaster delta ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 60/100
screenshot screenshot web development If you're doing web development, you'll want probably one big web browser window, but also with a nice wide terminal on the same screen, in order to see web server logs. A simple way to do this is to mirror Xmonad's Tall layout by 90 degrees.
myWide = Mirror $ Tall nmaster delta ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 80/100
The myWide layout uses the full screen width for a single terminal, and splits the width when there are more. This is sufficient for viewing logs and doing minor things at the shell prompt, in between testing the result in the web browser. Of course a terminal can be temporarily moved to the master area by pressing mod-return, if you need it to be larger. screenshot screenshot chat
Tips on configuring Pidgin for a netbook: Set it up to use vertical tabs to save horizontal space. Configure the input area to only 1 line tall, and turn off as much other cruft as you can. The menu bars, sadly, cannot be disabled, nor can the excessively large borders. In my screenshots, you can see that stuff wasting space that could be used to show four more lines of text.
For chat, you want to put the buddy list on the side of the screen, and use the rest for conversation windows. Xmonad's IM module takes care of allocating a sidebar on the screen for the buddy window. The rest of the screen can be occupied by any layout you choose. I like to have the conversation windows be as wide as possible, and typically only want to see two conversations at a time. But sometimes I might have a dozen visible. A good layout to cope with those needs is Grid.
myChat' l = withIM size roster l
    where
        -- Ratio of screen roster will occupy
        size = 1%5
        -- Match roster window
        roster = Title "Buddy List"
myChat = myChat' Grid
The withIM layout puts the buddy list on the left; I prefer it on the right for some reason, so I tweaked my layout to do that. All it took was using the reflectHoriz layout modifier to get a mirror image of the layout. Then I reflect the inner layout back to its normal orientation. Being able to throw in a few function calls and mutate a layout like that is where Xmonad shines.
myChat' l = reflectHoriz $ withIM size roster $
            reflectHoriz $ l
screenshot screenshot logs
Ever notice that tail -f wastes the last line of the terminal? On a netbook this matters. shorttail lets the last line be used.
I have a dedidated workspace that I use to tail logs, and as a place to send long-running tasks (such as compiles). The layout for this needs to keep windows wide, to see whole logged lines, but they need only be five or so lines tall. And it's convenient to have one bigger window with the small ones below. Xmonad has a perfect layout for this, called Dishes, because it's sorta like a stack of plates.
myDish = limitWindows 5 $ Dishes nmaster ratio
    where
        -- The default number of windows in the master pane
        nmaster = 1
        -- Default proportion of screen occupied by other panes
        ratio = 1/5
screenshot screenshot
In the second screenshot above, I have 6 windows open, but only 5 are visible. The limitWindows 5 accomplishes this. It's handy mostly because gnome-terminal has a bad habit of crashing when resized to 0x0. (That's gotta be a bug in something!)
Notice that the screenshots above also have Procmeter in a sidebar on the right. I (ab)used the withIM layout to do that:
myLogs' l = reflectHoriz $ withIM procmeterSize procmeter $
              reflectHoriz $ l
    where
        -- Ratio of screen procmeter will occupy
        procmeterSize = 1%7
        -- Match procmeter
        procmeter = ClassName "ProcMeter3"
myLogs = myLogs' myDish
coding Everything above was easy. Doing coding (or writing) on a small screen is where it gets hard. When I'm coding I want to have one window that is exactly 80 columns wide, and as tall as possible, where I do the main development. Then I need a minimum of two other windows also visible: one action window for running tests and the like, and one to view references (emails, man pages, other files, etc). I may need to view any of these windows fullscreen at any time, of course.
As an example of the three window rule: While I'm writing this post, I have a reference window open with my .xmonad/xmonad.hs, and an action window open where I am managing screenshots.
Often, deep into something, I will accumulate many other reference and action windows. But three seems to be the magic, minimum number for me; use of screen or anything else doesn't reduce it; if I can't see all three at once, I will waste time and concentration flipping back and forth. The Xmonad layout I've developed to handle this is based on the handy FixedColumn layout, which automatically keeps the master window 80 columns wide. I modify this by adding the Magnifier, so that my action and reference windows "pop out" over the master window when focused.
myCode = limitWindows 3 $ magnifiercz' 1.4 $ FixedColumn 1 20 80 10
The 1.4 was carefully tuned, to magnify a window to be big enough to be usable for editing, reading, or command-line, while not obscuring too much of the other two windows. And again I use limitWindows, to only show three windows, in order to keep them all as big as possible. Other windows are hidden offscreen, but I can rotate to them with alt-tab as needed. screenshot screenshot reading ebooks When I'm reading an ebook, I want to have the reader in the middle of the screen. But a widescreen netbook like mine is too wide to comfortably read text all the way across, so it's nice to have margins. (In the margins, I put terminals, or notes.) The ThreeColumns module has a layout that does just that.
myBook = ThreeColMid nmaster delta ratio
    where
        nmaster = 1
        -- Percent of screen to increment by when resizing panes
        delta   = 3/100
        -- Default proportion of screen occupied by master pane
        ratio   = 2/3
screenshot putting it all together I join all my layouts together, so Xmonad will allow switching between them. These three combinations all have the same layouts, only ordered differently, so that different workspaces can have different default layouts.
codeFirst  = myCode    myWide    myGrid    myDish
dishFirst  = myDish    myCode    myWide    myGrid
gridFirst  = myGrid    myDish    myCode    myWide
Xmonad layouts can be decorated with things like title bars. To save horizontal space, I leave off the title bars on layouts where they are not needed to disambiguate windows. Two helper functions can be applied to add or remove titles (and also cause the layout to avoid the Gnome panel.)
withTitles l = noFrillsDeco shrinkText myTheme (desktopLayoutModifiers l)
noTitles l = desktopLayoutModifiers l
I have semi-dedicated workspaces; one for each of the above activities. To assign a layout to a workspace, I use the PerWorkspace module.
Notice that the "web" workspace has only two available layouts. Meanwhile, the "book" workspace always uses the specialized myBook layout; I don't use that layout elsewhere.
perWS = onWorkspace "logs" (withTitles $ myLogs' dishFirst) $
        onWorkspace "web"  (noTitles   $ (mySplit   myWide)) $
        onWorkspace "chat" (noTitles   $ myChat' gridFirst) $
        onWorkspace "book" (noTitles   $ myBook) $
                           (withTitles $ codeFirst)
Finally, I allow toggling between the currently selected layout and fullscreen mode, and use smartBorders to avoid displaying borders when there is only one window onscreen.
myLayout = smartBorders $ toggleLayouts Full perWS
Xmonad layout optimised for the small screen of a netbook: Done! (For now...)
screenshots screenshots screenshots screenshots screenshots
PS: Thanks to #xmonad regulars for always having the answer I need up their sleeves.

Craig Small: The Great Australian Internet Firewall

Some what belatedly (hey I'm travelling!) I've changed the layout of my main website http://www.enc.com.au/ so it now has black panels and a little pop-up. It's all in the name of T he Great Australian Internet Blackout which is a protest about the upcoming Australian Governments Internet Filtering.

As per usual with this sort of thing, the proposed solution will not even meet its rather vague goals, unless you count filtering a 1000 or so websites a "goal". While the numbers vary, the best estimates is its way over 100 to 200 million websites. So that 1000 is 0.0005, or 1 in 200,000.

The filter is alternatively going to filter reported refused classification material or perhaps "other stuff"; they'll get back to you on the second one. For the first it works that somone finds a website of sufficient level of classification, reports it to the government and it gets filtered. And how many times have you come across RC websites, just by wandering around? That's not R rated websites, its not porn, its not even reasonably exotic porn, but stuff that's downright nasty.

The government, as per usual, has come out with the tired old protect the children rant. The filter doesn't stop spam, it doesn't stop weirdos on facebook or MSN chatting up your teenage daughter or son, it filters websites that, unless you or your child is REAL unlucky you will never see; ever.

So why am I against it? Surely filtering RC level websites is great right? And to be honest if that is all this ever was going to be, it's still a complete waste of my (and if you are an Australian Internet user) your money, but once the filtering is in, there is going to be a line outside the relevant ministers door to filter anything else anyone wants to filter, for example:
This sort of filtering while initially seeming ok, will get worse, much much worse. There is not a real strong push from the general public about filtering RC websites, most people see and hate spam much more. If you are an Australian citizen I ask you to visit the The Great Australian Internet Firewall website and write to your local member of parliament.

<script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script>

28 January 2010

Biella Coleman: New Zealand, a photo-round up

kiwiwiwiwiw Kiwis have to be one of the cutest birds of all time. A bit chubby and clumsy looking, they are (to me, at least), walking, breathing icon of furry cuteness. Truth be told, I did not see one live in action during my recent trip to New Zealand, but I did see a Weka bird which is pretty similar. (Micah and I just consulted the Internets and agreed that we did in fact see cherubic Kiwi not a Weka. In fact, Micah almost ran one over on the west coast of the southern island but his quick reflexes born from years of saving servers while typing saved the bird. So as you can tell by now I finally got to go to New Zealand for a few weeks, even able to travel the south island before attending THE Linux conference of the region, LCA where I gave a talk (video to be posted when available). I jumped at the opportunity and was thrilled to find out that I could actually spend some time traveling around before the intense week long conference. So on January 5th I headed down with Micah to what I have found out is one of the windiest cities on earth ( Windy Wellington ) for a few days before heading to the south island to do a loop on the northern half of the island. I wanted to conquer the mountains made famous by a certain set of movies, but last semester was all about sitting in front of the computer, a sort of agonizing life of the mind, which did not prepare me physically for mountain trekking or as it call it there, tramping. So we decided to stick close to the coast (with one transalpine train that serenaded us through some awesome mountain passes) and hike along the coast, snorkel and swim, and kayak. After Andrew showed us around Wellington, we headed to the sea town of Kaikoura brimming with sea life, such as seals, dolphins, and birds. The two highlights there were our snorkeling trip and a hike along the peninsula. Originally we were going to go diving but I arrived to NZ with a head cold so we opted for the sinus friendlier version and snorkeled in the massive kelp forest, which was strikingly beautiful (I am used to tropical reefs and waters). There happened to be a lot of seals and given their curious nature, they would dart over right next to you and play. One seal I called him the twirler was chubby and mellow and twirled next to me for a long while. The lady seals were sleeker and faster and liked to dive deep down and the zoom up and surprise you. As someone who has spent a lot of time underwater, I found it fun and weird to be with animals that pay attention to you given that most of the sea life ignores you. The hike in Kaikoura was fantastic as well. You go high on a bluff and stare down at this water sparkling with the most beautiful blue hues brought out even more majestically by the white rocks. If I were to go back I would hike along the water and up above on the bluff. After a brief stopover in Christchurch to visit a friend, we took the transalpine train (across Arthur s pass) which was superbly beautiful and arrived on the west coast whose seas are far more rough, rocky, andtemperamental than on the east coast. The vegetation is lush as lush can be and you get the feeling that dinosaurs would have been a happy lot in these parts. The cool part about this area are the many rivers that feed into the ocean (we spent an afternoon swimming and exploring the caves in one) and then what are called the pancake rocks, which are odd geological creatures that really amaze. We then made our way to the Marlborough Sounds area, which includes the city of Nelson (apparently the sunniest in New Zealand) as well as many olive and grape vineyards in outlying areas. We spent some time in the Alpine lakes region hiking but more of the time on the coast. The highlight for me and it is a place I would love to go back to is the Abel Tasman National Park. We spent time hiking and kayaking there and you can even hike down the coast for 5-6 days (there are excellent camping facilities along the way). The coast is simply majestic with alpine like forest conditions (unfortunately a cool old tree whose name I can t remember is no longer common). This forest is situated along the most stunning waters, an electric but totally clear turquoise blue deceivingly inviting because the water was quite cold (but not as cold as the Oregon coast over the summer, which I went swimming in only once after weeks of bike travel). Along with the blue, parts of the coastal waters were a stunning clear green that I have never seen despite my many sea travels. If you ever plan on going to the South Island, I would not miss this area and might even try to spend a few days or more hiking the coastal trails and listening to the cool-as/sweet as birds, one of which has double vocal cords so it sings what sounds to be like totally electronic bird calls. We returned via the same ferry a massive 7 story ship from Picton to Wellington but the conditions were far far worse during our return trip. When we got out of the sounds, we hit the Cook Straight, notorious for being rough and tumble. And indeed, once we hit the waves, I felt like I was no longer in a boat but amusement park ride, the bow of the ship thrown high only to fall hard on upon the waves. It was sort of fun or fun for about 10 minutes until people, most especially kids, started yaking all over the place. It was really the most flagrant yakfest I have ever experienced (I mean it is a 7 story ferry, you can fit a lot of people on that boat) and that made the sail particularly difficult. I have pretty strong sea legs, never once getting sick sick during the year I spent at sea but massive yaking will bring out the sea sick feeling in even the hardiest of sea souls and I was thrilled to arrive in Wellington. Wellington is the only large city I spent any considerable time in and it is a pretty awesome one. The city center area is flat and by the water, with a magnificent area filled with museums, the national library, parks, breweries, and piers where kids like to jump off high things. The botanical gardens were the most beautiful I have been to and since I am a flower nut, I was in high heaven. In this area there are a ridiculous number of great coffee shops (NYC has a thing or two to learn as we don t have enough, I suspect it has something to do with insane real estate prices). The city is surrounded by hills populated by houses, some of the precipitously perched on cliffs that require lifts to get to! It was a wonderful home base for what was a sweet as conference (as they would say down there). And I hope to write about it sometime soon.

Biella Coleman: New Zealand, a photo-round up

kiwiwiwiwiw Kiwis have to be one of the cutest birds of all time. A bit chubby and clumsy looking, they are (to me, at least), walking, breathing icon of furry cuteness. Truth be told, I did not see one live in action during my recent trip to New Zealand, but I did see a Weka bird which is pretty similar. (Micah and I just consulted the Internets and agreed that we did in fact see cherubic Kiwi not a Weka. In fact, Micah almost ran one over on the west coast of the southern island but his quick reflexes born from years of saving servers while typing saved the bird. So as you can tell by now I finally got to go to New Zealand for a few weeks, even able to travel the south island before attending THE Linux conference of the region, LCA where I gave a talk (video to be posted when available). I jumped at the opportunity and was thrilled to find out that I could actually spend some time traveling around before the intense week long conference. So on January 5th I headed down with Micah to what I have found out is one of the windiest cities on earth ( Windy Wellington ) for a few days before heading to the south island to do a loop on the northern half of the island. I wanted to conquer the mountains made famous by a certain set of movies, but last semester was all about sitting in front of the computer, a sort of agonizing life of the mind, which did not prepare me physically for mountain trekking or as it call it there, tramping. So we decided to stick close to the coast (with one transalpine train that serenaded us through some awesome mountain passes) and hike along the coast, snorkel and swim, and kayak. After Andrew showed us around Wellington, we headed to the sea town of Kaikoura brimming with sea life, such as seals, dolphins, and birds. The two highlights there were our snorkeling trip and a hike along the peninsula. Originally we were going to go diving but I arrived to NZ with a head cold so we opted for the sinus friendlier version and snorkeled in the massive kelp forest, which was strikingly beautiful (I am used to tropical reefs and waters). There happened to be a lot of seals and given their curious nature, they would dart over right next to you and play. One seal I called him the twirler was chubby and mellow and twirled next to me for a long while. The lady seals were sleeker and faster and liked to dive deep down and the zoom up and surprise you. As someone who has spent a lot of time underwater, I found it fun and weird to be with animals that pay attention to you given that most of the sea life ignores you. The hike in Kaikoura was fantastic as well. You go high on a bluff and stare down at this water sparkling with the most beautiful blue hues brought out even more majestically by the white rocks. If I were to go back I would hike along the water and up above on the bluff. After a brief stopover in Christchurch to visit a friend, we took the transalpine train (across Arthur s pass) which was superbly beautiful and arrived on the west coast whose seas are far more rough, rocky, andtemperamental than on the east coast. The vegetation is lush as lush can be and you get the feeling that dinosaurs would have been a happy lot in these parts. The cool part about this area are the many rivers that feed into the ocean (we spent an afternoon swimming and exploring the caves in one) and then what are called the pancake rocks, which are odd geological creatures that really amaze. We then made our way to the Marlborough Sounds area, which includes the city of Nelson (apparently the sunniest in New Zealand) as well as many olive and grape vineyards in outlying areas. We spent some time in the Alpine lakes region hiking but more of the time on the coast. The highlight for me and it is a place I would love to go back to is the Abel Tasman National Park. We spent time hiking and kayaking there and you can even hike down the coast for 5-6 days (there are excellent camping facilities along the way). The coast is simply majestic with alpine like forest conditions (unfortunately a cool old tree whose name I can t remember is no longer common). This forest is situated along the most stunning waters, an electric but totally clear turquoise blue deceivingly inviting because the water was quite cold (but not as cold as the Oregon coast over the summer, which I went swimming in only once after weeks of bike travel). Along with the blue, parts of the coastal waters were a stunning clear green that I have never seen despite my many sea travels. If you ever plan on going to the South Island, I would not miss this area and might even try to spend a few days or more hiking the coastal trails and listening to the cool-as/sweet as birds, one of which has double vocal cords so it sings what sounds to be like totally electronic bird calls. We returned via the same ferry a massive 7 story ship from Picton to Wellington but the conditions were far far worse during our return trip. When we got out of the sounds, we hit the Cook Straight, notorious for being rough and tumble. And indeed, once we hit the waves, I felt like I was no longer in a boat but amusement park ride, the bow of the ship thrown high only to fall hard on upon the waves. It was sort of fun or fun for about 10 minutes until people, most especially kids, started yaking all over the place. It was really the most flagrant yakfest I have ever experienced (I mean it is a 7 story ferry, you can fit a lot of people on that boat) and that made the sail particularly difficult. I have pretty strong sea legs, never once getting sick sick during the year I spent at sea but massive yaking will bring out the sea sick feeling in even the hardiest of sea souls and I was thrilled to arrive in Wellington. Wellington is the only large city I spent any considerable time in and it is a pretty awesome one. The city center area is flat and by the water, with a magnificent area filled with museums, the national library, parks, breweries, and piers where kids like to jump off high things. The botanical gardens were the most beautiful I have been to and since I am a flower nut, I was in high heaven. In this area there are a ridiculous number of great coffee shops (NYC has a thing or two to learn as we don t have enough, I suspect it has something to do with insane real estate prices). The city is surrounded by hills populated by houses, some of the precipitously perched on cliffs that require lifts to get to! It was a wonderful home base for what was a sweet as conference (as they would say down there). And I hope to write about it sometime soon.

27 January 2010

Aurelien Jarno: Working on the eglibc package

In the last weeks, I stopped being motivated to work on the eglibc package, it s not fun as it was before. Maintaining this package is taking a lot of my (free) time, and I am not anymore able to follow the bug rate, especially for RC bugs or bugs that I consider high priority. In turn it does not give me time to integrate eglibc 2.11 or other wishlist features I would have liked to see (rework of the locales* packages, using multiarch paths, etc.). I hope it s only a bad moment and that things will change soon, so I can find time to work on GNU/kFreeBSD, QEMU or to do electronics. In any case you can help by handling bug reports or writing patches. Everything is in the BTS!

Romain Beauxis: Voluntering

For those who wonder why Debian is and should remain a voluntary-driven project, here are some insights... I hope I will never read this in a Debian mailing list:
Why? I am pursuing this change because Debian has negotiated a revenue sharing deal with XXXXX
I have nothing against ubuntu and I think it is a great distro. However, I believe that decisions like this go strongly against the principle of free software as we consider, in particular when it comes to putting the user first and not some cash deal. Forcing the user to choose for something because the company gave money for that is totally again this to me.

Russell Coker: The Australian Open and Android Phones (Seer)

On Monday I visited the Australian Open [1] it s one of the world s greatest tennis championships and it s on in Melbourne right now. IBM sponsored my visit to show me the computer technology that they use to run the event and display the results to the world via their web site and to various media outlets. picture of IBM Seer software running on HTC Hero The first thing that they showed me was the IBM Seer software on the HTC Hero phone (which runs the Google Android OS). Seer can be freely downloaded from the Android store. The most noteworthy feature is that it uses the camera in the Android phone to display a picture of whatever you are looking at with points of interest superimposed (such as the above picture where I asked for locations of events and toilets). But it also displays a map view and has some other features I didn t get a chance to test such as viewing twitter data relevant to the event. We really need this augmented reality feature enabled with tourist data for major cities. I m sure that there s lots of interesting things I haven t seen in my own home city, if I could just pull out a phone and see a map of what s around me whenever I m bored I could see some of them. I think that this has the potential to change the way we use phones, in theory this was available as soon as Google Maps was released, but Seer seems to be the start of a whole new range of developments. One of the uses of this will be for identifying the background in tourist photos, no more of the me in front of old building descriptions. Here is a Youtube Video of the Seer software in action [BMLgHGV4zWM]. The tour guide explained that to get the software to work on an iPhone would require the 3GS for navigation as the earlier iPhones don t have a compass. The Seer software was initially developed for The Championships, Wimbledon 2009 which happened at about the same time as the iPhone 3GS release. I expect that there will be enough iPhone 3GS units sold before Wimbledon 2010 to give IBM a good incentive to port Seer to the iPhone. Three (my phone company at the moment) has just sold out of the HTC Magic which has a digital compass. They are selling the HTC Touch Pro and HTC Touch Diamond that appear to lack a digital compass. Vodaphone is offering a HTC Magic free on the $29 contract right now. The other Australian mobile phone companies don t seem to offer any Android phones. So it seems that the only option right now if I wanted to purchase a phone in Australia that can run Seer is the Vodaphone HTC Magic, and that s a phone that was released almost a year ago (a long time with recent progress in phone development it s the modem before the HTC Hero I tested) and which has only a 3.2MP camera (the LG U990 Viewty I used to take the picture for this post has a 5MP camera and is older than that). So I expect that there aren t many people using Seer in Australia. If you happen to be in Melbourne and have an Android phone with a digital compass then you may want to visit the Australian open to try the Seer software. It should work equally well from outside the security fence I ll write about the other things I saw over the next few days.

25 January 2010

Russell Coker: Discovering OS Bugs and Using Snapshots

I m running Debian/Unstable on an EeePC 701, I ve got an SD card for /home etc but the root filesystem is on the internal 4G flash storage which doesn t have much spare space (I ve got a full software development environment, GCC, debuggers, etc as well as running KDE4). On some of my systems I ve started the practice of having two root filesystem installs, modern disks are big enough that usually it s difficult to use all the space, and even if you do use most of the space the use of a second root filesystem only takes a fraction of a percent of the available space. Today I discovered a problem with my EeePC, I had upgraded to the latest Unstable packages a few days ago and now when I run X programs the screen flickers really badly every time it s updated. Pressing a key in a terminal window makes the screen shake, watching a video with mplayer makes it shake constantly to such a degree that it s not usable. If that problem occurred on a system with a second root filesystem I could upgrade the other a few packages at a time to try and discover the root cause. But without the space for a second root filesystem this isn t an option. I hope that Btrfs [1] becomes ready for serious use soon, it seems that the btrfs snapshot facility might make it possible for me to preserve the old version in a bootable form before upgrading my EeePC (although even then disk space would be tight). So I guess I now need to test different versions of the X related packages in a chroot environment to track this bug down. Sigh.

Martin F. Krafft: Vodafone intransparency

Coming to New Zealand for an extended period of time, I figured it would make sense to purchase a prepay mobile plan to make it easier to mix with locals. Not knowing better, I went with Vodafone, which I whole-heartedly regret: their website is a massive pain in the ass, their price plans completely over the top, and their customer service representative incompetent and unfriendly. My latest experience eclipsed all previous encounters, and makes me want to tell you about it: Between all the obscure add-ons Vodafone threw at me when I bought this SIM card, two weeks ago I couldn t figure out how my balance had decreased from $30 to $0 when I rarely ever made calls. I wrote an e-mail to their customer service hotline, and it took them a week to get back to me, with the following text:
Due to being a Prepay Customer, unfortunately usage details are not available as per terms and conditions. I have although checked your usage and can confirm that all charges are correct.
Obviously, I wasn t going to accept this claim of omniscience, so when last weekend, $20 disappeared over the course of a day, that was the catalyst for me to reopen the ticket and reply along the lines of:
Only I know when I used my phone and thus only I can determine whether the charges are correct. Please show the full records to me, or else
This seemed to convince the representative, and 8 messages and 11 days after my initial request, I was told I could request the records at $5/30 records. Yes, you read that right: they wanted to charge me to view the records. I thus replied:
I am NOT willing to pay for that. If you are unable to comply with my desire for transparency, then I shall terminate the contract and make sure to inform the media as well as the consumer institute of this conduct. As stated previously, I shall also consult with a lawyer. Charging consumers to view data that is obviously available is a strong indication that you do not want me to see it. I can t imaging why this would be the case other than the data being inconsistent with reality.
That worked, and I finally got an Excel sheet with my usage data, which allowed me to track down the depletion of my account: to lure customers in, they promise free calls to other Vodafone numbers for the first four weekends. There are three problems with that though:
  1. Having purchased my card on Saturday afternoon, I was annoyed to find out that the remaining 34 hours of that weekend would be counted as a whole weekend.
  2. They don t provide a way by which to find out whether a given number actually belongs to Vodafone or not. The 021 prefix is not enough of an indication.
  3. They don t actually tell you anywhere but the aforementioned horrific website that the addon has expired.
So thanks, Vodafone. You ve lost a customer, who should have gone with 2degrees in the first place, who have much lower rates, even though their data coverage doesn t seem as good. I don t need data anyway. I ll still insist on Vodafone providing the data in a Free format. You can find more information about NZ mobile phone providers on the LCA2010 wiki page. NP: Age Pryor: Shank s Pony

24 January 2010

Steve Kemp: What the hell are you laughing at?

Slaughter
I received my first patch to slaughter today, which made me happy. (I've made a new release including it, and updated the list of primitives to actually document the file-deletion facilities which previously I'd omitted to avoid encouraging mass-breakage.)
Signing Binaries
Andrew Pollock mentions that the days of elfsign might be numbered. This is a shame because I've always liked the idea of signing binaries. Once upon a time, in the 2.4.x days, I wrote a kernel patch which would refuse to execute non-signed binaries. (This was mostly a waste of time; since it denied the execution of shell scripts. Which meant that the system init scripts mostly failed. My solution in the end was to only modprobe my module once the system was up and running, and hope for the best ...) Right now, having performed only a quick search, I don't see anything like that at the moment.
  • elfsign will let you store a binaries MD5 hash.
  • bsign will let you sign a binary with a GPG key.
But where is the kernel patch to only execute such hashed/signed binaries, preventing the execution of random shell scripts and potentially trojaned binaries? Without that I think signing binaries is a crazyish thing to do. Sure you can test that a file hasn't been modified, but even without those tools you can do the same thing via md5sums. (ObRandom: Clearly if you mass-modify all your binaries the system md5sums database will be trashed.)
Perl UTF
I've received a bug report against chronicle, my blog compiler. It seems that some versions of perl fail to run this:
     #
     #  Run the command, reading stdout.
     #
    open( FILTER, "$cmd ;utf8" ) or
       die "Failed to run filter: $!";
Removing the ;utf8 filter allows things to work, but will trash any UTF-8 characters from the output - so that's a nasty solution. I'm not sure what the sane solution is here, so I'm going to sit on it for a few days and continue to write test scripts.
ObSubject: 300

Russell Coker: Preventing Children from Accessing Porn

The following was written by Stefano Cosentino in regard to the ongoing efforts of the Australian government to censor the Internet with protecting the children as an excuse. All these Internet filtering ideas that have been in the news lately has made me voice my own opinion on the matter as a non-expert. I m an IT advisor. I take someone s problem and help them fix it. I have a few clients who provide laptops to their students, everything is done with these laptops. The students have no books. The school provides laptops to their primary school students as well as their high school students. They have done this long before the public system started to hand out laptops to a select number of high school students. When you provide a child with anything, there are always areas where a child will find that you may have overlooked. In fact, a young kid will probably find a host of things that you might have totally missed or didn t ever know about. One of these things is the inappropriate nature of information you may find that are associated with computers. This can be anything. But specifically, what the filtering argument has been about has been leaning towards Internet pornography and I would imagine, more specifically content of a pedophiliac nature. I m not against child pornography being banned or filtered. I personally think this is one of the most cruel, inconsiderate, disrespectful and self centered behaviors a person could display. Their psychological makeup isn t the scope of this article. However these ideas must be conveyed when discussing the Internet as a modern technological device that can be used for both good and bad. The primary school students that I attend to aren t very interested in this stuff and as it has been mentioned long ago by others who have joined this argument, are more interested in online flash games that include characters such as Ben 10, Pokemon and Yu-Gi-Oh. When I m called in to scan these computers during the school holidays and hand the laptops back to the kids or when they get handed back after 3 years for new ones, I find that the older primary school kids computers are usually more prone to the adult orientated content. To me this is the first sign of a filter s failure. This customer of mine spends more money on the filtering devices they use on campus than I charge them for a few days of work. Does it work? Sadly, I hate to report that no, it does not. It s completely useless. The kids still have files and traces of files on their computers that isn t suitable for young children. Not only pornography but also content of a violent or morbid nature. As young and impressionable people, everything they read, see and hear is absorbed. This shapes the way society will become in years to come. Since no one can realistically tell the future, wouldn t it be nice if we could make sure that the people looking after us and our lives forty or fifty years from now have a sane mind free of blemish? It s a different story for the high school children. While scanning their laptops I have to contact the police on a daily basis because of the nature of the content I find during my day. Some things you can let slip, today s version of a pinup girl, or a provocative pic of whatever skimpy clad girl the record companies are flogging off these days as musicians. But sadly that s rare. I won t go into detail of what I find on these laptops of 14 year old boys, but it ranges from some innocent growing up curiosity right to perverted, sick and most if not all of the time, illegal content. The filters fail again. The kids find a way around it. And they find it easily. I ve seen filters work and not work at all with young kids right through to young adults. All the filters do is either hinder the poor kids actually trying to do research of scholastic nature or prolong the inevitable and temporarily block a determined child s interest in the search for some adult related material. The filter might prevent accidental viewing but it doesn t stop the deliberate finding of pornography and other illegal content. How does a filter stop this from happening? How does a filter stop a child taking their parents adult videos and copying them to their laptop or finding dad s stash of Penthouse? How does it stop a school mate bringing this stuff to school to show everyone at lunch time or to trade for other content they found by other means. Remember back to when you were their age and caught a glimpse of your big brother s room wall. How many times did you try and catch a peak at that Samantha Fox poster hanging off the wall? Where s the filter now? Here s some thing to think about. The filter shouldn t be a thing, it should be a person. They re called responsible . They re called parents. What priorities do parents have if their child feels that what they look at online that is of an adult nature is acceptable? Or maybe the kid knows better, knows it isn t acceptable but still goes out of their way to get the stuff on their computer? Sneaker Net still exists, USB memory sticks are cheap and can now have two or three straight DVD rips on them, or perhaps five or six encoded films on there. Hundreds and thousands of images and so on. Filter failure again. When the kids go online, they know of the technology used to block them from gaining access to what they want to see. Chances are, they ll know what a proxy server is and does. Then they ll figure out what they need to do to get around the filter. I, myself did this back in high school and TAFE when I couldn t find photographs of a particular device I was researching. Turns out the name is also a form of sexual activity, in another language, but still. The filter stopped me from not only looking the offending content but also to look at the legitimate data that I needed to complete an assignment. I got around the problem by researching some more information and the following day I was breaking through firewalls and proxy servers with easy. Filter failure. How do I get around this issue when speaking to younger kids that need guidance and knowledge on how to deal with this situation? I hold talks at the school I provide my services to. I talk to the parents, no kids. The talk costs less than a broken filter they keep throwing money at keep up-to-date. The school puts these filters in place to appear responsible, because while the kids are attending their school, the school is in fact responsible. In fact, there is nothing more the school can do. They could educate the children, but you can tell someone what to do, and the chances of them doing it are pretty dismal. Music is not allowed on their computers either. Yet we constantly find iTunes on there and a host of music that traces to certain peer to peer applications where they acquired the stolen music. If a kid can learn how to do that, imagine what sort of influence can be placed on them from a more positive angle. Like maybe parents providing an explanation for starters of what it is they re looking at. What it is they ll find online. What material is inappropriate. What material should you tell an adult about. Why do I get stupid emails with Russian girls wanting to marry me. Kids absorb everything. Parents have relegated responsibility but not delegated it. This filter idea might help slow down a child s enthusiasm to learn about everything, both good and bad. But educating the kids from an early stage in life about morals and the modern world where lets think about it, we have absolutely everything we need and want at our finger tips will be more valuable than any filter. But the fact that we have so much available makes it difficult to say what is and isn t appropriate for a child to see. It is up to us to inform the children of what s out there is the world. It may or may not stop them from seeing the adult related content, but it will help them respond to it in a mature and adult manner. We all know, kids aren t stupid. So, if the filters worked, why am I called in once a year, every year to give my talk to parents?

23 January 2010

Christine Spang: Why ask for an unskilled, not-yet-involved comaintainer?

I received a surprising 13 responses to my previous post, which was certainly more than I expected and is one reason it's taken me a few days to follow up on it. (How do you pick someone from a group of 13 people based on just a paragraph or two? Clearly I'd like for someone to help all of these people get involved in Debian, but to do so solely by myself would be making a commitment that I just don't have time to come through on. So, it ends up being quite arbitrary. I pick who I think I'd most like working with and could make the most out of the opportunity, and even that is an arbitrary judgement based on very little.) One question asked by one of the people who emailed me was, "Why did you ask for someone who isn't involved in Debian already and who doesn't necessarily have the technical skills needed?" The answer to this question has several facets. For one, people already involved in a free software project tend to be busy people. The workload in projects tends to be concentrated in few hands, and many of those people who are already involved in a project don't need or want any more work. So, asking for someone not already involved in Debian increases the pool of people who might respond to such a request and actually be able to follow up on it. While this a valid reason, it still doesn't explain why I didn't just say, "it's okay if you're not already involved in Debian or don't know python" and not state a preference as to the skill level of the person who would respond to such a request. I did, however, have a specific reason for stating my preference. I asked specifically for someone who wasn't already involved in Debian and who didn't necessarily know python or consider themselves a competent programmer because I wanted to encourage people who don't consider themselves to already know enough to be a useful comaintainer to contact me. I've picked up a lot from following Geek Feminism on what sort of language turns minority groups like women away, and I wanted to ask in such a way that it didn't turn away people who aren't good at self-promotion or who are less sure of their skills, or who don't yet have the skills, men and women alike. Even I still sometimes internally question my own competence as a programmer, and my self-confidence has increased over the past few years. (For the curious, the responses I received were, at my guess, 85% male, 15% female. Whether that's a success or not depends on the demographics of those who read the post, but it is better than the ~98% male involvement in the FLOSS world altogether.) And I do think it's more of a contribution to the project to help someone new get involved than to try to convince someone who's already overcome the barrier to entry to take on some more work. We'll see how it turns out in the end. I have high hopes. (No pressure, soon-to-be-selected mentee.)

Next.

Previous.