News aggregator

Aq: Follow-the-pointer mini screencast Python app for Ubuntu

Planet WolvesLUG - Fri, 07/02/2014 - 19:10

I had this idea for a “screencast” which follows the mouse pointer around, rather than making you nominate a fixed screen area; ideal for little demo animated GIFs of how to do a thing on websites. No existing screencast app seems to do this, so I threw a quick thing together to do it for me. Python (because that’s what I use for native apps that can’t be done in pure QML) and Gtk (because there’s no point in using Qt for this since the Python bindings are weird, I use Qt/QML for Ubuntu SDK apps but this can’t be done there anyway because the phone is Mir rather than X and app confinement will prevent screenshots anyway).

Lots of hardcoded things, so it’s not a proper useful app, but it works for what I needed it for. Note that it contains a hardcoded mouse pointer image, because getting the mouse pointer image is insane and requires you to talk directly to X, which is possible with Python but needs loads of extra libraries, and look life’s just too short what are you thinking. Also uses modern Gdk and GI, not pygtk which is ancient and yet what all the existing posted code samples are. Probably should use Cairo from GI too but cairo.CONTENT_COLOR doesn’t seem to exist there. Anyway, if you need to take screenshots from Python using modern Gtk, or you want to do a little animated gif screencast which follows the mouse around, here you go.

import time from gi.repository import Gdk import cairo from PIL import Image from PIL.GifImagePlugin import getheader, getdata import StringIO CURSOR = """iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIHETMhphEADwAAAfJJREFUOMuVkztvE1EQhb+b9cq+ 3s2CIU7hH+GOxpWxoOIhOR1UaTBUQEmFIA1C1BTUceWCyp1Lp7HcpCFVIgpLK0XRyo4Uy3cfuUOz tlDMIxlpym/OvXPmAHwCfGCDG5S4rvsNuHsTUKrVauw4zlfgznVBOT4+lkqlkiilvgC3rwOKtVaO jo4kCIJEKfURuPU/UNI0FUAODw/F9/0EeAcE/wJlsViItVYAGY1GUi6XE+AtsAmoP0IXFxcrNUCG w+ESfJXbsQbKbDYTY8wKAmQwGIjWOgZ2Ae8qKFEUrakB0u/3RWttgGdXQTk9PZXz8/M1NUB6vZ5o rRdAG9BLUMIw/KsaIPv7+1ZrPQceASUFyGQyoVgsrtp1Xer1uj05OZHlc+I4dpRSU2vt4w2ALMvI sowwDOl2u4gInU5HOY4zMca8Mcbsishza+0LYLE6o/F4LLVaLfE8Lz07O5P5fC5BECTAS6CWX0kA aAf4sLOzQ7vdTqMoGiilFq7rbrdaLZWmqRqPx9tpmvaACDBABiBbW1tJoVD4DjwEnvq+H0dRJNPp dGnyk3xzq7KO43SB+3mmNj3PO9jb27vMskwajYYBPuexWfn0Hrj3W5YcoFUqlUyz2TTlcnkOvAYq S0jln7vMt2LzQSXgQd4/gCHwE4gBfgH0ew11MKHjYAAAAABJRU5ErkJggg==""" def shot(width, height): # Take a screenshot t = time.time() w=Gdk.get_default_root_window() _, mousex, mousey, _ = w.get_pointer() s=Gdk.Window.create_similar_surface(w, cairo.CONTENT_COLOR, width, height) ctx=cairo.Context(s) Gdk.cairo_set_source_window(ctx,w,-mousex + (width/2),-mousey + (height/2)) ctx.paint() return (t, s) SECONDS_DURATION = 3 WIDTH = 300 HEIGHT = 150 FPS = 25 surfaces = [] start = time.time() last = time.time() while (time.time() - start) SECONDS_DURATION: while (time.time() - last) (1.0/FPS): time.sleep(0.01) last = time.time() surfaces.append(shot(WIDTH,HEIGHT)) # now, convert each surface to a PIL PNG then write as a gif buffer = StringIO.StringIO() buffer.write(CURSOR.decode("base64")) buffer.seek(0) cursor_image = Image.open(buffer) fp = open("anim.gif", "wb") previous = None for t, surface in surfaces: sio = StringIO.StringIO() surface.write_to_png(sio) sio.seek(0) im = Image.open(sio) im.paste(cursor_image, (WIDTH/2, HEIGHT/2), mask=cursor_image) im = im.convert('RGB').convert('P', palette=Image.WEB) del surface # Fixme: add specific delay (from t) for each frame, and add looping if not previous: for s in getheader(im) + getdata(im): fp.write(s) else: for s in getdata(im): fp.write(s) previous = im.copy() fp.close() print "Now optimise with gifsicle -b -O3 anim.gif"
Categories: LUG Community Blogs

Aq: Follow-the-pointer mini screencast Python app for Ubuntu

Planet WolvesLUG - Fri, 07/02/2014 - 19:10

I had this idea for a “screencast” which follows the mouse pointer around, rather than making you nominate a fixed screen area; ideal for little demo animated GIFs of how to do a thing on websites. No existing screencast app seems to do this, so I threw a quick thing together to do it for me. Python (because that’s what I use for native apps that can’t be done in pure QML) and Gtk (because there’s no point in using Qt for this since the Python bindings are weird, I use Qt/QML for Ubuntu SDK apps but this can’t be done there anyway because the phone is Mir rather than X and app confinement will prevent screenshots anyway).

Lots of hardcoded things, so it’s not a proper useful app, but it works for what I needed it for. Note that it contains a hardcoded mouse pointer image, because getting the mouse pointer image is insane and requires you to talk directly to X, which is possible with Python but needs loads of extra libraries, and look life’s just too short what are you thinking. Also uses modern Gdk and GI, not pygtk which is ancient and yet what all the existing posted code samples are. Probably should use Cairo from GI too but cairo.CONTENT_COLOR doesn’t seem to exist there. Anyway, if you need to take screenshots from Python using modern Gtk, or you want to do a little animated gif screencast which follows the mouse around, here you go.

import time from gi.repository import Gdk import cairo from PIL import Image from PIL.GifImagePlugin import getheader, getdata import StringIO CURSOR = """iVBORw0KGgoAAAANSUhEUgAAAA0AAAAUCAYAAABWMrcvAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIHETMhphEADwAAAfJJREFUOMuVkztvE1EQhb+b9cq+ 3s2CIU7hH+GOxpWxoOIhOR1UaTBUQEmFIA1C1BTUceWCyp1Lp7HcpCFVIgpLK0XRyo4Uy3cfuUOz tlDMIxlpym/OvXPmAHwCfGCDG5S4rvsNuHsTUKrVauw4zlfgznVBOT4+lkqlkiilvgC3rwOKtVaO jo4kCIJEKfURuPU/UNI0FUAODw/F9/0EeAcE/wJlsViItVYAGY1GUi6XE+AtsAmoP0IXFxcrNUCG w+ESfJXbsQbKbDYTY8wKAmQwGIjWOgZ2Ae8qKFEUrakB0u/3RWttgGdXQTk9PZXz8/M1NUB6vZ5o rRdAG9BLUMIw/KsaIPv7+1ZrPQceASUFyGQyoVgsrtp1Xer1uj05OZHlc+I4dpRSU2vt4w2ALMvI sowwDOl2u4gInU5HOY4zMca8Mcbsishza+0LYLE6o/F4LLVaLfE8Lz07O5P5fC5BECTAS6CWX0kA aAf4sLOzQ7vdTqMoGiilFq7rbrdaLZWmqRqPx9tpmvaACDBABiBbW1tJoVD4DjwEnvq+H0dRJNPp dGnyk3xzq7KO43SB+3mmNj3PO9jb27vMskwajYYBPuexWfn0Hrj3W5YcoFUqlUyz2TTlcnkOvAYq S0jln7vMt2LzQSXgQd4/gCHwE4gBfgH0ew11MKHjYAAAAABJRU5ErkJggg==""" def shot(width, height): # Take a screenshot t = time.time() w=Gdk.get_default_root_window() _, mousex, mousey, _ = w.get_pointer() s=Gdk.Window.create_similar_surface(w, cairo.CONTENT_COLOR, width, height) ctx=cairo.Context(s) Gdk.cairo_set_source_window(ctx,w,-mousex + (width/2),-mousey + (height/2)) ctx.paint() return (t, s) SECONDS_DURATION = 3 WIDTH = 300 HEIGHT = 150 FPS = 25 surfaces = [] start = time.time() last = time.time() while (time.time() - start) < SECONDS_DURATION: while (time.time() - last) < (1.0/FPS): time.sleep(0.01) last = time.time() surfaces.append(shot(WIDTH,HEIGHT)) # now, convert each surface to a PIL PNG then write as a gif buffer = StringIO.StringIO() buffer.write(CURSOR.decode("base64")) buffer.seek(0) cursor_image = Image.open(buffer) fp = open("anim.gif", "wb") previous = None for t, surface in surfaces: sio = StringIO.StringIO() surface.write_to_png(sio) sio.seek(0) im = Image.open(sio) im.paste(cursor_image, (WIDTH/2, HEIGHT/2), mask=cursor_image) im = im.convert('RGB').convert('P', palette=Image.WEB) del surface # Fixme: add specific delay (from t) for each frame, and add looping if not previous: for s in getheader(im) + getdata(im): fp.write(s) else: for s in getdata(im): fp.write(s) previous = im.copy() fp.close() print "Now optimise with gifsicle -b -O3 anim.gif"
Categories: LUG Community Blogs

Adam Bower (quinophex): I finally managed to beat my nemesis!

Planet ALUG - Thu, 06/02/2014 - 23:40
I purchased this book http://www.amazon.co.uk/dp/0738206679 (Linked, by Barabasi) on the 24th of December 2002, I had managed to make 6 or 7 aborted attempts at reading it to completion where life had suddenly got busy and just took over. This meant that I put the book down and didn't pick it up again until things were less hectic some time later and I started again.

Anyhow, I finally beat the book a few nights ago, my comprehension of it was pretty low anyhow but at least it is done. Just shows I need to read lots more given how little went in.

comments
Categories: LUG Community Blogs

Dick Turpin: They don't come out?

Planet WolvesLUG - Thu, 06/02/2014 - 17:22
Customer: "Is it possible to swap the battery on this HP 8440p?"
Me: "For what?"
Customer: "No, can you take the battery out? I was in Currys looking at laptops the other day but they was no good as you couldn't remove the batteries."
Me: "You don't think that was deliberate to stop people pinching them do you?"
Customer: "Oh!"

Sheesh give me strength!
Categories: LUG Community Blogs

Dick Turpin: Give me your supplier.

Planet WolvesLUG - Thu, 06/02/2014 - 14:05
Customer: "I see you have some Windows 7 pro laptops for sale, can you do them any cheaper?"
Me: "I'm afraid not, we put very little markup on them and as they are refurbished they are very reasonably priced anyway."
Customer: "Seeing as it's pro I take it they come with Word and Excel?"
Me: "I'm sorry, why would Pro mean that? No that is just the operating system, Office will be extra"
Customer: "What? They're not much use without Word."
Me: "As I said, you can have Word/Office for an additional cost."
Customer: "Can you tell me where you buy them from please?"
Me: "I'm afraid not."
Customer: "Why not?"
Me: "Two reasons, one they only sell to Trade and two, why would I tell you that so that you go to them direct?"
Customer: "You're very rude?"
Me: "I'm sorry you feel that way, I think we will leave it there. Goodbye."

And they say sales people try to rip you off?


Categories: LUG Community Blogs

Andrew Savory: Login problems on Mac OS X Snow Leopard

Planet ALUG - Thu, 06/02/2014 - 13:05

These are notes from a tech support call with my parents last night, saved here for the next time stuff breaks.

If you’re running Mac OS X Snow Leopard (and possibly other versions), you may find you can’t log in. Symptoms are:

  • You click on your username and enter your password
  • The login screen is replaced by a blue screen for a short time
  • You are returned to the login screen.

After searching the interwebs I found Fixing a Mac OSX Leopard Login Loop Caused by Launch Services. It seems the problem is caused by corrupted cache files (which could be caused by the computer shutting down abruptly, or may just be “one of those things” that happens from time to time). This gave me enough information to come up with these “easy” steps to resolve it:

  1. Log in to the Mac as a different user*
  2. Press cmd-space to open Spotlight, type “Terminal”, and click on the Terminal application.
  3. Work out the broken user’s username by typing: ls /Users and look for the appropriate broken account name e.g. franksmith or janedoe.
  4. Find out the user ID of the user from the previous step by typing: id -u janedoe which will print a number something like 501
  5. Delete the user’s broken cache files. In the following command, be sure to substitute the correct username (in place of janedoe) and the correct user ID after the 023 (in place of the 501): su -l janedoe -c ‘rm /Library/Caches/com.apple.LaunchServices-023501.*’ (be very careful with this, you don’t want to delete the wrong things).
    • If you’re super-confident in figuring out backticks you could of course skip step 4 and instead of step 5 do: su -l janedoe -c ‘rm /Library/Caches/com.apple.LaunchServices-023`id -u janedoe`.*’
  6. Test by logging in to the troublesome user account.
Note that if you had any apps configured to launch at login, you may need to re-add these.

* This makes me think it’s good practice when setting up a Mac to always set up an extra user account, just in case stuff breaks.

Categories: LUG Community Blogs

Peter Cannon: Please work!

Planet WolvesLUG - Thu, 06/02/2014 - 12:40

Unless you’ve been living under a rock you’ll know I’ve just taken ownership of a Behringer Q502 mixing desk. Last night , full of excitement,  I looked forward to recording episode 69 of The Dick Turpin Road Show.  I should point out that everything was fine with my Fedora 19 machine as I had spent the whole of the previous day doing test recordings.

Knowing from bitter experience that kit and systems can let you down when you most need them around 6:30pm I set about setting up my systems for recording. “Oh no?” the network is not working on the Fedora box? Now I know I could have restarted the network but hey, let’s do a reboot anyway. Still no network? OK, lets not faff about, I don’t really need Internet access on this machine as in this instance it’s just a large, if expensive, recording device. “Oh no?” I can’t mount /dev/sdb1? keeps moaning about FUSE? Did modprobe fuse, nothing? And this is where I save the recordings! Lets look in Settings. Hang on, it can’t see my network card, sound card or recording device? This is serious!

So there I was boys and girls thinking “Looks like no recording tonight?” but hey, we tdtrs’ers are made of sterner stuff! I whipped out a Parted Magic Live CD to see if the hardware on my motherboard had failed. Nope, boots fine, I’m on the Internet and can play music. Parted Magic is pretty much a self-contained distro anyway with a browser, tools and most of the features you find on any basic Linux release. “Right lets download Ubuntu.” now that may surprise some people as I have been tagged as an Ubuntu hater, which is pretty unfair tbh. I don’t hate the distribution as such I just hate the cobblers that comes out of Canonical and the Ubuntu community about it. Anyway, I downloaded Ubuntu 12.04 to /dev/sdb1 (Which can be mounted I hasten to add) then used xfburn within Pmagic to burn the iso. Rebooted with the 12.04 Live CD so now we are running Ubuntu in memory.

Networking is OK as is sound and I can access /dev/sdb1 right lets install Audacity (To memory remember) Cool, Audacity sees the Q502 and is recording device. Changed the temp location for Audacity’s recording within preferences to /dev/sdb1 as it was using memory then Matt and I prayed that my 8GB of memory didn’t run out as we set about recording EP69

All in all this proves the saying “There’s more than one way to skin a cat.” Hats off to Ubuntu for a reliable distro, for Live CD’s and Matt’s encouragement of “The show must go on!” Sadly as of this moment I have no idea how to fix my broken Fedora I may well have to do a fresh install of something?

Categories: LUG Community Blogs

Steve Kemp: External Comments, updated

Planet HantsLUG - Thu, 06/02/2014 - 11:40

The simple external-comments code is now complete enough for me to stop poking it on a daily basis:

  • Although the comments are styled minimally you can override that with CSS.
  • Although the default "Add your reply" form is ugly you can replace it with your own.
    • The reply-form may go above or below the comments.
  • If you add an email field then your comments will include a gravitar link.
  • Comments are assumed to be in markdown now.
  • The commments may be retrieved in newest-first, or oldest-first order.
  • There's now a simple anti-spam plugin system present.

All in all I'm pretty happy with the way it works, and the server-code. The client-side Javascript is less good, but I'm probably done poking that too.

In an ideal world the client-side code should be a jQuery plugin, but I've not worked out how to make a static method (the JSONP callback) be a member of a jQuery plugin-object. So without that I have to re-pass the options around too many places, rather than making them a member of "this".

Meh, pull requests welcome for adding new storage back-ends (redis and sqlite are supported by default), and similarly for cleanups.

Links:

Categories: LUG Community Blogs

Jono Bacon: The Community Leadership Summit and Think Tank

Planet WolvesLUG - Tue, 04/02/2014 - 15:46

As some of you will know, I founded the Community Leadership Summit that takes place in Portland, Oregon every year. The event brings together community leaders, organizers and managers and the projects and organizations that are interested in growing and empowering a strong community. Each year we discuss, debate and continue to refine the art of building an effective and capable community, structured in a set of presentation and attendee-driven unconference sessions.

This year’s event is happening on 18th – 19th July 2014 (the two days before OSCON), and is shaping up to be a great event. We have over 140 people registered already, with a diverse and wide-ranging set of attendees. The event is free to attend, you just need to register first. We hope to see you there!

The Think Tank Community Leadership Summit

This year I am also excited to announce an additional sister-event to the main Community Leadership Summit at the Open Source Think Tank.

The Community Leadership Summit and Open Source Think Tank have partnered to create a unique event designed for executives and managers involved in community management planning and strategic development. While the normal annual Community Leadership Summit serves practicing community managers and leaders well, this unique event is designed to be very focused on executives in a strategic leadership position to understand the value and process of building a community.

I have been wanting to coordinate a strategic leadership event such as this for some time, and the Think Tank is the perfect venue; it brings together executives across a wide range of Open Source organizations, and I will be delivering the Community Leadership Summit track as a key part of the event on the first day.

The event will be in the form of a day of presentations and sessions that cover many of the considerations when building a community management strategy, and these approaches will be exercised in a practical and interactive case study. The conclusions from the event will then feed into the rest of the Think Tank. I am excited to get started and I am confident the event will be tremendously valuable for attendees, particularly in an age when a community management strategy is more and more of a core requirement.

The event takes place on 24th March 2014 in Napa, California. See the event homepage for more details – I hope to see you there!

Categories: LUG Community Blogs

Tony Whitmore: New year, new logo

Planet HantsLUG - Mon, 03/02/2014 - 19:30

I’m very pleased to reveal a brand new logo for my photography. I think it reflects my geekiness, my excellent sense of humour (you may disagree) and generally straightforward approach to photography.

It was a fun but challenging process to collect together ideas that might influence the design. “Describe yourself” is always a difficult question to answer, but gradually I collected a pinterest board full of things I feel describe my aspirations and that I admire: Classic design, comedy heroes, retro computing.

My photographic style has developed so much since I started photographing weddings back in the dim and distant past of 2011. This new branding reflects the clearer understanding I have of my style, but also who I am as a person and a photographer. I’m not going to be in your face and demanding, but I will be smiley and chatty. I won’t filter, airbrush and process your photos until they look completely artificial: I will produce natural looking images that show your personalities. I won’t try and pose every tiny aspect of your photos: I will create a space where you feel comfortable and can act naturally.

My new branding was designed by the brilliant Tom Holmes and I will be using it for my wedding photography as well as other photography and video work (about which more soon!).

I think the little fella should have a name though. Any suggestions?

Pin It
Categories: LUG Community Blogs

Meeting at "The Moon Under Water"

Wolverhampton LUG News - Mon, 03/02/2014 - 14:54


53-55 Lichfield St
Wolverhampton
West Midlands
WV1 1EQ

Eat, Drink and talk Linux

Event Date and Time:  Wed, 05/02/2014 - 19:30 - 23:00
Categories: LUG Community Blogs

Wayne Stallwood (DrJeep): IPv6

Planet ALUG - Mon, 03/02/2014 - 00:22
This site is now IPv6 enabled, it turns out that my co-lo provider already offers IPv6 addresses. So all I had to do was enable the ipv6 kernel module on the RPi, fiddle some iptables rules and the Apache config so it listened on the IPv6 address. Then head over to my DNS provider and drop the appropriate AAAA records onto my zone.

If you are running a dual stack from where you are browsing you may already already be using it but to force the issue try visiting ipv6.digimatic.co.uk

Categories: LUG Community Blogs

Steve Kemp: disqus on the cheap?

Planet HantsLUG - Sun, 02/02/2014 - 13:44

Last night I was up again, really hard to sleep when you have a bad cold.

I decided to do something fun, and allow my tweaking guide to accept comments.

Like many of my sites this is 100% static, and generated by templer, so comments are "hard".

I've seen a few people try to rewrite disqus as a general-purpose solution, and I like that idea, because I don't trust that particular service.

I wasn't so ambitious though, I just hacked up a quick sinatra server:

  • "GET /comments/ID"
    • Retrieves the comments on the specified identifier as a JSON array of comment-hashes.
  • "POST /comments/ID"
    • Append the submitted comment to a redis set.

My jquery/javascript is nasty, but the thing seems to work pretty well. The page loads and comments are populated, and new ones are persisted as expected.

I can see the appeal of putting all this magic in one javascript file. You include that and get both the existing comments and the form to add new ones - my approach is to hardwire the submission/display in my generated site.

Perhaps something for the future.

In conclusion if people wish they can now leave feedback on most of the pages :)

Categories: LUG Community Blogs

Chris Lamb: Defaulting to comparing against yourself on Strava

Planet ALUG - Sun, 02/02/2014 - 13:30

Strava's brand positioning is based around challenging and comparing yourself to others through virtual competitions and leaderboards.

I am not against the competitive spirit in principle, but my personal experience is that most psychologically and physiologically rewarding training comes from comparing your own past performances to today or from setting long term goals. I accordingly use the service as a glorified training diary, with the public leaderboards serving only as curiosa or as an occasional check on hubris.

(Zen-like introspection aside, using public data as a guide in a metropolis such as London is problematic as rankings are distorted by professional racers, KOM hunters, drafting, fraud and—obviously—traffic conditions.)

To make this easier, I wrote a Chrome extension that changes the default leaderboard to "My Results" instead of "Overall" when viewing a segment effort:

The other leaderboards can still be viewed via the usual selector:

I've found it curious—but not altogether surprising—how this mere change of default dramatically affects one's mindset.

Source code is available. If you found this extension useful, you might like my extension to quickly switch between metric and imperial units.

Categories: LUG Community Blogs

Adam Bower (quinophex): Why buying a Mio Cyclo 305 HC cycling computer was actually a great idea.

Planet ALUG - Sat, 01/02/2014 - 15:11
I finally made it back out onto the bike today for the first time since September last year. I'd spent some time ill in October and November which meant I had to stop exercising and as a result I've gained loads of weight over the winter and it turns out also become very unfit which can be verified by looking at the Strava ride from today: http://www.strava.com/activities/110354158

Anyhow, a nice thing about this ride is that I can record it on Strava and get this data about how unfit I have become, this is because last year I bought a Mio Cyclo 305 HC cycle computer http://eu.mio.com/en_gb/mio-cyclo-305-hc.htm from Halfords reduced to £144.50 (using a British Cycling discount). I was originally going to get a Garmin 500 but Amazon put the price up from £149.99 the day I was going to buy it to £199.99.

I knew when I got the Mio that it had a few issues surrounding usability and features but it was cheap enough at under £150 that I figured that even if I didn't get on with it I'd at least have a cadence sensor and heart rate monitor so I could just buy a Garmin 510 when they sorted out the firmware bugs with that and the price came down a bit which is still my longer term intention.

So it turns out a couple of weeks ago I plugged my Mio into a Windows VM when I was testing USB support and carried out a check for new firmware. I was rather surprised to see a new firmware update and new set of map data was available for download. So I installed it think I wasn't going to get any new features from it as Mio had released some new models but it turns out that the new firmware actually enables a single feature (amongst other things, they also tidied up the UI and sorted a few other bugs along with some other features) that makes the device massively more useful as it now also creates files in .fit format which can be uploaded directly to Strava.

This is massively useful for me as although the Mio always worked in Linux as the device is essentially just a USB mass storage device but you would have to do an intermediate step of having to use https://github.com/rhyas/GPXConverter to convert the files from the Mio-centric GPX format to something Strava would recognise. Now I can just browse to the folder and upload the file directly which is very handy.

All in it turns out that buying a Mio which reading reviews and forums were full of doom and gloom means I can wait even longer before considering replacement with a garmin.

comments
Categories: LUG Community Blogs

David Goodwin: Automated twitter compilation up to 01 February 2014

Planet WolvesLUG - Sat, 01/02/2014 - 07:00

Arbitrary tweets made by TheGingerDog (i.e. David Goodwin) up to 01 February 2014

  • Trying to tell $possible_customer that ~120 days is not acceptable payment terms. Unfortunately they’re a FTSE 100 company. We’re not. (2014/01/31 src)
  • RT @dick_turpin: So +Pale Purple Ltd has been going for 8 years? Well done +David Goodwin (2014/01/30 src)
  • Even duct tape can’t fix stupid. But it can muffle the sound. t.co/5WYQRswuOX
(2014/01/30 src)
  • RT @guardiantech: Sky’s internet service mistakenly blocks web-critical plugin t.co/NzoGvDgzOo (2014/01/28 src)
  • RT @mikko: It looks like you’re trying to redact a document…
    t.co/moERWwSPPd t.co/GSJuz0CaEU (2014/01/28 src)
  • RT @Sniperovitch: EXCELLENT !!! RT @_youhadonejob: You had one job. t.co/52oUTHzUFf
  • (2014/01/28 src)
  • RT @AskNationwide: Pocket Money research: North East kids get an avg of £51.68 per month; in Wales, kids get an avg of £21.66. ^DB t
  • (2014/01/28 src)
  • RT @rdlowrey: #php just got more secure I merged the implementation for the TLS Peer Verification RFC: https://t.co/exAKWMgv1M More TLS+… (2014/01/28 src)
  • RT @chris_coltrane: 3 men to stand trial… for taking unwanted food from a bin. The stupidest of all stupid arrests: t.co/ChZB8syuk0 (2014/01/28 src)
  • RT @pibphilly: A stunning piece of photojournalism from the AP in Kiev, also probable future crust/doom record cover: t.co/a2VaVbanfw
  • (2014/01/26 src)
  • RT @jonmasters: “@engadget: Google and Samsung agree to license each other’s patents for 10 years t.co/jZYjKYmt8z” – I see an epic b… (2014/01/26 src)
  • RT @TheBakeryLDN: …and here’s what a brand knows when you login via facebook t.co/mxYYfsaoSn (2014/01/26 src)
  • RT @stuartdredge: A helpful infographic for anyone of my generation who’s also having problems following The Three Musketeers on TV http://…
  • (2014/01/26 src)
  • Currently waiting outside the deputy headteachers office like a naughty child. (2014/01/22, Bromsgrove, Worcestershire src)
  • RT @rdohms: Check out @petewsmart ‘s redesign of the airline boarding pass: t.co/Dxx7DqSSGx #UX — Why didn’t someone do this yet? (2014/01/20 src)
  • Cough cough cough. Grr. #stupidVirus (2014/01/20, Bromsgrove, Worcestershire src)
  • RT @ESA_Rosetta: “Hello, world!” (2014/01/20 src)
  • RT @tdobson: The UKIP Shipping Forecast (by Nicholas Pegg) t.co/2ci5ysyg2f (2014/01/19 src)
  • RT @serverdensity: #SysAdmin links: Are passwords stored in memory safe and should you take PHP seriously? t.co/nSgP9crl7b #devops (2014/01/19 src)
  • RT @ArghJoshi: Look, I just don’t like eating things that contain chemicals. t.co/hF0RE7qHCk
  • (2014/01/18 src)
  • RT @kernelpool: Format string proof t.co/z9sdUZ4zjz
  • (2014/01/18 src)
  • RT @HAL9000_: Windows taught me this trick… t.co/nMZxvX4GER
  • (2014/01/18 src)
  • RT @CypherTheDane: You guys ready for the awful future of the internet? #netneutrality t.co/sDY1MujPZ7
  • (2014/01/14 src)
  • .@BromsgroveHC men 3xi vs Hampton in Arden. Lost 4-1 (2014/01/18 src)
  • RT @ioCassie: US Army to begin testing Smart Rifles t.co/84urDigguc
    ✓ Linux
    ✓ Wifi
    ✓ USB & moreWhat could go wrong? t.…
  • (2014/01/16 src)
  • RT @guardian: #GCHQ searched metadata of “untargeted, unwarranted” communications of UK residents t.co/yXOTBBHx3L #NSAfiles (2014/01/16 src)
  • RT @Channel4News: Revealed: UK and US spied on text messages of Brits t.co/pq7gr4aUGi On #c4news now (2014/01/16 src)
  • RT @adrianhardy: This PHP RFC needs to pass. Non-BC breaking, opt-in behaviour: https://t.co/ysXxLcRiuH #fingerscrossed (2014/01/16 src)
  • RT @NickFitz: The flame war in the comments on this piece about $600 USB cables that allegedly improve audio reproduction is great: http://… (2014/01/15 src)
  • Unicode try catch …. https://t.co/HtMrmtHufS (2014/01/15 src)
  • RT @DeathStarPR: R2-DespicableMe2 t.co/fAMhRmbEyH
  • (2014/01/14 src)
  • RT @Turve: The importance of the comma…. t.co/AgPVnl3DN2
  • (2014/01/14 src)
  • RT @isamlambert: This is some magical shit right here t.co/QIlfhTBOPh (2014/01/12 src)
  • RT @tdobson: This is the nastiest, cleverest, most elegant, malicious-insider, sysadmin hack, I’ve ever heard about: t.co/sKHQiHJDXn (2014/01/12 src)
  • RT @avantgame: 11,000 kids tracked for A DECADE to see if videogames lead to negative attention, behavioral, mood impact. Result: NO http:/… (2013/11/17 src)
  • RT @Si: If, like me, you don’t want your private NHS records shared with commercial companies, you must opt out quickly t.co/N7gf7wS… (2014/01/09 src)
  • Finally watched the What The Fox Says video. #tryingToKeepUpWithTheKids. (2014/01/09 src)
  • RT @karolikl: What’s the logic behind prefixing your database name with ‘db’? “Gosh, good thing I prefixed it or I would have mistaken it f… (2014/01/08 src)
  • RT @bhamsouthpolice: Back to school, uni or work this week? Have you registered new phones and gadgets on Immobilise yet? t.co/YtVL… (2014/01/08 src)
  • RT @lwnnet: CentOS Project joins forces with Red Hat t.co/FCtyeNWHEk (2014/01/07 src)
  • RT @sunny_hundal: DWP has 3000+ staff after benefit fraud of £1.2bn; HMRC has 300 staff after tax evasion of £70bn+ #benefitsstreet !! http… (2014/01/06 src)
  • RT @herdyshepherd1: Asked a lady 4 times to put her dog on a lead 2 years ago over two months… was met with verbal abuse.It later kille…
  • (2014/01/04 src)
  • RT @philsturgeon: The first t-shirt has now launched on Made in Production: Respect the Double Claw! https://t.co/Mp0VOOIwTP #php (2014/01/04 src)
  • RT @daijones19: Aberystwyth – 1927 and today. t.co/lduqVEg41O
  • (2014/01/04 src)
  • RT @handee: aberystywth storm damage blog – incorporating my video cut together from a walk along the seafront this morning t.co/wFV… (2014/01/04 src)
  • RT @mikko: Got a new app? Hex edit it’s binaries to modify the License Agreement text to suit your needs before you run it for the first ti… (2014/01/04 src)
  • RT @RidgewayGroup: Made us smile … Roadworks signage gets hacked with a rather honest message! #ridgeway t.co/NyOWso9i3Y
  • (2014/01/04, West Oxfordshire, Oxfordshire src)
  • RT @NSA_PR: Through our Cybersecurity Community Outreach program, we’re ensuring all HP Proliant servers have the latest BIOS updates. (2014/01/03 src)
  • RT @mart_brooks: Hey mail people. It’s 2014 and you have told _no-one_ about the @Excommunicado project. The junk won’t block itself. https… (2014/01/03 src)
  • Hearing the rain outdoors reminds me of being young & working on the farm. #thosewerethedays #rain (2014/01/02 src)
  • Trying to decide if there is a chicken outside or if one of the children has an amusing snore. #parentingproblems (2014/01/02 src)
  • RT @lwnnet: Raymond: bzr is dying; Emacs needs to move t.co/ObQwx19VLs (2014/01/02 src)
  • RT @JamesBlunt: As does your missus. RT @teamtommo58: James blunt your music sucks #fact (2013/12/31 src)
  • Categories: LUG Community Blogs

    Steve Kemp: Optimization Recipes

    Planet HantsLUG - Fri, 31/01/2014 - 16:08

    Today I am mostly in my bed suffering from "the plague".

    Between naps I've worked on a new site a little:

    Hopefully this will become updated, contributions welcome, and be useful to the world.

    (Source available on github.)

    Categories: LUG Community Blogs

    Dick Turpin: Is it in yet?

    Planet WolvesLUG - Fri, 31/01/2014 - 13:53
    Colleague: "I'm trying to boot off the ROM drive can you see any activity back there?"
    Me: "Nope"
    Colleague: "I'm rebooting, anything now?"
    Me: "Nope"
    Colleague: "Hang on I had the USB plugged in the front before, lets try that. Any joy?"
    Me: "Nope"
    Colleague: "Oh, hang on, maybe I need to put the CD in?"
    Me: #facepalm
    Categories: LUG Community Blogs

    Steve Engledow (stilvoid): btw

    Planet ALUG - Fri, 31/01/2014 - 10:30

    I discovered my new favourite fact about my new favourite language recently. I suppose it should be obvious but I hadn't though about it in explicitly these terms.

    Given:

    char* myStringArray[] = {"Hello", "Goodbye", "Tomatoes"}; int index = 2;

    then the following will print Tomatoes:

    printf("%s ", myStringArray[index]);

    and so (this is the bit I hadn't fully realised) will this:

    printf("%s ", index[myStringArray]);

    Good times :)

    Categories: LUG Community Blogs

    Steve Engledow (stilvoid): btw

    Planet ALUG - Fri, 31/01/2014 - 10:30

    I discovered my new favourite fact about my new favourite language recently. I suppose it should be obvious but I hadn't though about it in explicitly these terms.

    Given:

    char* myStringArray[] = {"Hello", "Goodbye", "Tomatoes"}; int index = 2;

    then the following will print Tomatoes:

    printf("%s\n", myStringArray[index]);

    and so (this is the bit I hadn't fully realised) will this:

    printf("%s\n", index[myStringArray]);

    Good times :)

    Categories: LUG Community Blogs
    Syndicate content