News aggregator

davblog - Dave Cross: The Political Web

Planet GLLUG - Thu, 23/05/2013 - 13:32

I made a thing.

On Sunday I mentioned how OpenTech always makes me feel a bit embarrassed that I’m not doing more useful stuff – particularly in the kinds of areas that OpenTech speakers care about.

Usually, real life takes over before I get a chance to do anything about it and I forget about my embarrassment until the next OpenTech. This year, I managed to harness my embarrassment and actually do something productive.

It’s not like I built anything from scratch. This is is really just me finally shipping something that I’ve been working on (off and on – more off than on) for almost five years. I built the first prototype at a hack day in 2008. I even wrote about it at the time.

The Political Web is a site that is intended to be a one-stop-shop for finding out information about British MPs. Currently each MP has a page which lists a number of standard web pages that contain information about the MP (Wikipedia, The Guardian, TheyWorkForYou – things like that). Of course each MP also has a number of non-standard pages on the internet (an official web site, a blog, perhaps a Twitter account) and adding those is going to be a harder job.

Previously two things have stopped me launching this. One was the fact that I wanted to support those all of those other sources of information. But I’ve decided to go for a “minimum viable product” approach and show you what I’ve already got. The other thing that prevented me talking about it much was that I thought I’d need someone to make it look nice (my web design skills are horrible). But the arrival of Bootstrap means that even a design ignoramus like me can build a site that looks more than half-decent.

So there you go. It’s there for you to play with. And there will (hopefully) be more coming soon. Please let me know if you find it useful.

And thanks to all the giants whose shoulders I’m standing on. The site wouldn’t exist without the TheyWorkForYou API, the Perl Dancer framework and Twitter Bootstrap.

Related Posts:
Categories: LUG Community Blogs

Rev. Simon Rumble: Awesome weekend camping

Planet GLLUG - Tue, 21/05/2013 - 02:30

We had a fantastic 4-day  weekend camping with our kids down in Bundeena. Bit of a risk this late in the season but we got extremely lucky. 26 degrees every day! Our kids were a bit unwell at times, with bad colds and Louis seemed to have a short bout of gastro. But we still had loads of fun.

Categories: LUG Community Blogs

Rev. Simon Rumble: Early start

Planet GLLUG - Tue, 21/05/2013 - 02:07

Ruby has me out of bed at 0530 this morning so everything moved along earlier than usual. Got to daycare and realised we had 35 minutes to kill so we stopped for smiley babycinos.

Categories: LUG Community Blogs

Rev. Simon Rumble: Vodafone Foundation cooks for OzHarvest #charityleave

Planet GLLUG - Tue, 21/05/2013 - 02:07

We spent the day cooking for charity. Lots of fun. I helped on chicken cacciatore and another team did amazing apple calzones. Good stuff and quite fun.

My wimpy office hands scored some nice blisters cutting up ten chickens.

Categories: LUG Community Blogs

Rev. Simon Rumble: Home alone Dad, forced to fend for himself

Planet GLLUG - Tue, 21/05/2013 - 02:07

Holly's out to see The Hobbit so I'm home along with the kids. Improvised Ploughmans of:

  • Home made bread I baked earlier
  • Leftover Xmas ham (almost finished)
  • Selection of cheeses we didn't eat over Xmas
  • Atomic Pale Ale
  • Tomato, walnut and pomegranate molasses salad (home grown tomatoes, recipe from Casa Moro)
No need to send rescuers. Though a link to the stream for tonight's game would help.
Categories: LUG Community Blogs

Rev. Simon Rumble: Contract or permie? Quick app to compare contract rates to permanent salaries

Planet GLLUG - Tue, 21/05/2013 - 02:07

I've always had a spreadsheet to help me compare a daily contract rate to a "standard" salary, to ensure I'm always comparing like for like when considering jobs. A newer wrinkle has been recruiters quoting "package" salaries, which just means you need to multiply by 0.91 to get the "standard" salary (ex super). But it's always been confusing.

I've recently been sharing my spreadsheet with friends who've been considering contract jobs. The spreadsheet was fine, but a bit clunky and I'd only ever bothered to make it convert daily rate to "standard" salary.

To make this work a bit better, I created ContractOrPermie.com, a little one-page application I wrote to allow you to quickly and easily compare contract rates with standard salaries. It's only really suitable for Australia.

As well as nicely solving this particular problem, I also got to try out Twitter Bootstrap, which means it looks great in all browsers without me having to futz around with CSS. I'm hosting it using the new functionality Amazon Web Services have launched to allow static file hosting at the root of a domain using Amazon S3 (in the new Australian data centre).

Anyway, check out ContractOrPermie.com and let me know what you think.
Categories: LUG Community Blogs

Rev. Simon Rumble: Camping on a soggy weekend

Planet GLLUG - Tue, 21/05/2013 - 02:07

I took Louis camping this weekend in Bundeena. Train, ferry then a short hike to the campsite on the edge of the Royal National Park. The weather outlook before we left was pretty shaky, and it lived up to the forecast: heavy showers and strong winds pretty much the entire time. Louis was so excited about the idea of camping that I had to take him, and we had an excellent time.

Satellite view of the campsite

It's an astonishingly beautiful spot, on the edge of a lagoon that adjoins Port Hacking, so you're camped amongst mangroves and birds with a view across the water of Cronulla. So close to civilisation, but you feel like you're a million miles away.

Saturday after arriving at the camp site, we pitched the tent just in time to shelter in it from a shower. Next we pottered around the low-tide lagoon and big spit of sand that divides the lagoon from Port Hacking. We found some pretty interesting things along the sand including a cobalt blue piece where a chunk of seaweed was attached to the sea floor. Any seaweed experts know what that's about?

Dinner was interesting. The BBQs were fortunately sheltered from the frequent showers. We got the sausages on and Louis announced he needed to use the loo, so we headed off. As we came back we saw a murder of crows on the BBQs eating our dinner! We ended up with just a single sausage between us for dinner. Fortunately I'd over catered on snacks so we didn't go to bed hungry. (PS, yes I've always wanted to use the term "murder of crows".)

Next morning we pottered around the sand dunes then hiked back into town for coffee/babycino just in time to meet up with Holly and Ruby who'd driven to meet us. Lunch was with RichDebs and their kids for an amazing cooked lunch at their place. Sadly we didn't get to stay as long as I wanted, Holly and the kids were knackered so we popped home.

Lovely weekend, despite the weather! Thanks again to Debs and Rich for an amazing lunch.
Categories: LUG Community Blogs

Rev. Simon Rumble: Simon Rumble taxidermy

Planet GLLUG - Tue, 21/05/2013 - 02:07
SRSLY?


Moral of the story: don't Google yourself!
Categories: LUG Community Blogs

Rev. Simon Rumble: Alternatives to Posterous?

Planet GLLUG - Tue, 21/05/2013 - 02:07
My blog has been on Posterous for some years now and it's been awesome. The best thing about it is that you just email a bunch of stuff, with whatever attachments in whatever format are relevant, and they just work.

Sadly they're shutting down following their talent acquisition by Twitter. That's a real shame. Now I have to find an alternative.

Requirements:
  • Hosted. I'm not going to maintain a server just for blogging thanks.
  • Allows custom JS. I'm always testing out new analytics tools on my own sites.
  • Post through email
Squarespace is lovely but pretty expensive for what I need, unless I can consolidate all three sites into one platform while keeping the domains (waiting on their ticket response).

I had high hopes for Markdown-based blog tools like Jekyll, but I find them a bit clunky. Posterous has got me used to a really easy blogging workflow that works well for me.

Any suggestions? I'm happy to pay.
Categories: LUG Community Blogs

Rev. Simon Rumble: Current status

Planet GLLUG - Tue, 21/05/2013 - 02:07

Chilling in Jervis Bay. Weather has turned out much better than the forecasts. Lovely.

Categories: LUG Community Blogs

Rev. Simon Rumble: Snorkelling photos

Planet GLLUG - Tue, 21/05/2013 - 02:07
I've been getting into snorkelling a bit recently. I've always enjoyed it but recently I bought some good quality gear, replacing the toy shop crap I've been using. It's another world with good equipment! It's not easy to get time, but so far I've snorkelled Jervis Bay, Bushrangers Bay, Clovelly and The Haven in Terrigal.

My son has been asking what it's like, so I bought the Kogan waterproof camera case for $19. Took it out last weekend for a spin at The Haven but the visibility was terrible. The camera case works a treat though, and I'm looking forward to using it some more. Need to work out a strap to attach it to my arm or something though.

Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Mon, 20/05/2013 - 19:51

qemu 1.5.0 has been released, featuring ssh support so you can access remote disks over ssh, including from libguestfs.

Here’s how to use this from guestfish:

$ export LIBGUESTFS_BACKEND=direct $ guestfish --ro -a ssh://onuma/mnt/scratch/winxp.img -i Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell Operating system: Microsoft Windows XP /dev/sda1 mounted on / ><fs> ll / total 1573209 drwxrwxrwx 1 root root 4096 Apr 16 2012 . drwxr-xr-x 23 1000 1000 4096 May 20 19:47 .. -rwxrwxrwx 1 root root 0 Oct 11 2011 AUTOEXEC.BAT -rwxrwxrwx 1 root root 0 Oct 11 2011 CONFIG.SYS drwxrwxrwx 1 root root 4096 Oct 11 2011 Documents and Settings -rwxrwxrwx 1 root root 0 Oct 11 2011 IO.SYS -rwxrwxrwx 1 root root 0 Oct 11 2011 MSDOS.SYS -rwxrwxrwx 1 root root 47564 Apr 14 2008 NTDETECT.COM drwxrwxrwx 1 root root 4096 Oct 11 2011 Program Files drwxrwxrwx 1 root root 4096 Oct 11 2011 System Volume Information drwxrwxrwx 1 root root 28672 Oct 11 2011 WINDOWS -rwxrwxrwx 1 root root 211 Oct 11 2011 boot.ini -rwxrwxrwx 1 root root 250048 Apr 14 2008 ntldr -rwxrwxrwx 1 root root 1610612736 Oct 11 2011 pagefile.sys
Categories: LUG Community Blogs

davblog - Dave Cross: OpenTech 2013

Planet GLLUG - Sun, 19/05/2013 - 15:32

Yesterday was the (almost) annual OpenTech conference. For various reasons, the conference didn’t happen last year, so it was good to see it back this year.

OpenTech is the conference where I most wish I could clone myself. There are three streams of talks and in pretty much every slot there are talks I’d like like to see in more than one stream. These are the talks that I saw.

Electromagnetic Field: Tales From the UK’s First Large-Scale Hacker Camp (Russ Garrett)
Last August, Russ was involved in getting 500 hackers together in a field near Milton Keynes for a weekend of hacking. The field apparently had better connectivity than some data centres. Russ talked about some of the challenges of organising an event like this and asked for help organising the next one which will hopefully take place in 2014.

Prescribing Analytics (Bruce Durling)
Bruce is the CTO of Mastodon C, a company that helps people extract value from large amounts of data. He talked about a project that crunched NHS prescription data and identified areas where GPs seem to have a tendency to prescribe proprietary drugs rather than cheaper generic alternatives.

GOV.UK (Tom Loosemore)
Tom is Deputy Director at the Government Digital Service. In less than a year, the GDS has made a huge difference to the way that the government uses the internet. It’s inspirational to see an OpenTech stalwart like Tom having such an effect at the heart of government.

How We Didn’t Break the Web (Jordan Hatch)
Jordan works in Tom Loosemore’s team. He talked in a little more detail about one aspect of the GDS’s work. When they turned off the old DirectGov and Business Link web sites in October 2012, they worked hard to ensure that tens of thousands of old URLs didn’t break. Jordan explained some of the tools they used to do that.

The ‘State of the Intersection’ address (Bill Thompson)
Bill’s talk was couched as a warning. For years, talks at OpenTech have been about the importance of Open Data and it’s obvious that this is starting to have an effect. Bill is worried that this data can be used in ways that are antithetical to the OpenTech movement and warned us that we need to be vigilant against this.

Beyond Open Data (Gavin Starks)
Gavin has been speaking at OpenTech since the first one in 2004 (even before it was called OpenTech) and, as with Tom Loosemore, it’s great to see his ideas bearing fruit. He is now the CEO of the Open Data Institute, an organisation founded by Tim Berners-Lee to the production and use of Open Data. Gavin talked about how the new organisation has been doing in its first six months of existence.

Silence and Thunderclaps (Emma Mulqueeny)
Emma has two contradictory-sounding ideas. The Silent Club is about taking time out in our busy lives to sit and be still and silent for an hour or so; and then sending her a postcard about what you thought or did during that time. The Thunderclap is a way to get a good effect out of that stack of business cards that we all seem to acquire.

Thinking Pictures Paul Clarke)
Paul takes very good photographs and used some of them to illustrate his talk which covered some of the ethical, moral and legal questions that go through his mind when deciding which pictures to take, share and sell.

1080s – the 300seconds project (300seconds)
The 300 seconds project wants to get more women talking at conferences. And they think that one good way to achieve that is for new speakers to only have to talk for five minutes instead of the full 20- or 40-minutes (or more) that many conferences expect. The Perl community has been using Lightning Talks to do this with great success for over ten years, so I can’t see why they shouldn’t succeed.

Politics, Programming, Data and the Drogulus (Nicholas Tollervey)
Nicholas is building a global federated, decentralized and openly writable data storage mechanism. It’s a huge task and it’s just him working on the project on his commutes. Sounds like he needs a community. Which is handy as the very next talk was…

Scaling the ZeroMQ Community (Pieter Hintjens)
Peter talked about how the ZeroMQ community runs itself. Speaking as someone who has run a couple of open source project communities, some of his rules seemed a little harsh to me (“you can only expect to be listened to if you bring a patch or money”) but his underlying principles are sound. All projects should aim to reach a stage where the project founders are completely replaceable.

The Cleanweb Movement (James Smith)
I admit that I knew nothing about the Cleanweb Movement. Turns out it’s a group of people who are building web tools which make it easier for people to use less energy. Which sounds like a fine idea to me.

Repair, don’t despair! Towards a better relationship with electronics (Janet Gunter and David Mery)
Janet and David started the Restart Project, which is all about encouraging people to fix electrical and electronic devices rather than throwing them out and buying replacements. They are looking for more volunteers to help people to fix stuff (and to teach people how to teach stuff).

CheapSynth (Dave Green)
Dave Green has been missing from OpenTech for a few years, but this was a triumphant return. He told us how you can build a cheap synth from a repurposed Rock Band game controller. He ended his talk (and the day) by leading the room in a rendition of Blue Money.

As always, OpenTech was a great way to spend a Saturday. Thank you to all of the organisers and the speakers for creating such and interesting day. As I tweeted during the day:

Being at @opentechuk always makes me embarrassed that I’m not getting more done. Which is, I suppose, the point of it :/

— Dave Cross (@davorg) May 18, 2013

 

But I spent yesterday hacking on something. More on that later.

Related Posts:
Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Fri, 17/05/2013 - 19:51

Put it in your calendars .. May 28th is Fedora 19 virtualization test day.

New features include nested virtualization on Intel, new Boxes, new libosinfo, new qemu, KMS-based spice driver, live storage migration and virtio RNG.

Every day is libguestfs test day. Just follow the instructions here.


Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Thu, 16/05/2013 - 22:41

OpenSCAP is a project that lets you scan physical machines looking for known vulnerabilities or configuration problems (like public-writable directories).

Obviously it would be good to use this to scan guests, especially in a cloud scenario where you want to help naive users not to deploy guests that are just going to get pwned the minute they go online.

New upstream in OpenSCAP is the ability to scan chroots. You can use this to scan containers, or using guestmount, scan offline guests.

Usage with guestmount is described here or here.

(Thanks Daniel Kopecek and Peter Vrabec)


Categories: LUG Community Blogs

Dean Wilson: Facter 1.7+ and External facts

Planet GLLUG - Wed, 15/05/2013 - 21:46
While Puppet may get all the glory, Facter, the hard working information gathering library that can, seldom gets much exciting new functionality. However with the release of Facter 1.7 Puppetlabs have standardised and included a couple of useful facter enhancements that make it easier than ever to add custom facts to your puppet runs.

These two improvements come under the banner of 'External Facts'. The first allows you to surface your own facts from a static file, either plain text key value pairs or a specific YAML / JSON format. These static files should be placed under /etc/facter/facts.d

$ sudo mkdir -p /etc/facter/facts.d # note - the .txt file extension $ echo 'external_fact=yes' | sudo tee /etc/facter/facts.d/external_test.txt external_fact=worked $ facter external_fact worked

At its simplest this is a way to surface basic, static, details from system provisioning and other similar large events but it's also an easy way to include details from other daemon and cronjobs. One of my first use cases for this was to create 'last_backup_time' and 'last_backup_status' facts that are written at the conclusion of my backup cronjob. Having the values inserted from out of band is a much nicer prospect that writing a custom fact that parses the cron logs.

If that's a little too static for you then the second usage might be what you're looking for. Any executable scripts dropped in the same directory that produce the same output formats as allowed above will be executed by facter when it's invoked.

# scripts must be executable! $ sudo chmod a+rx /etc/facter/facts.d/process_count $ cat /etc/facter/facts.d/process_count #!/bin/bash count=$(ps -efwww | wc -l | tr -s ' ') echo "process_count=$count" $ facter process_count 209

The ability to run scripts that provide facts and values makes customisation easier in situations where ruby isn't the best language for the job. It's also a nice way to reuse existing tools or for including information from further afield - such as the current binary log in use by MySQL or Postgres or the hosts current state in the load balancer.

While there have been third party extensions that provided this functionality for a while it's great to see these enhancements get included in core facter.

Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Mon, 13/05/2013 - 11:53

You can use qcow2 backing files as a convenient way to test what happens when you try to create exabyte-sized filesystems. Just to remind you, 1 exabyte is a million terabytes, or a pile of ordinary hard disks stacked 8 miles high.

There is a bug in qemu that prevents you from creating very large disks unless you adjust the cluster_size option (thanks Kevin Wolf):

$ qemu-img create -f qcow2 huge.qcow2 \ $((1024*1024))T -o cluster_size=2M Formatting 'huge.qcow2', fmt=qcow2 size=1152921504606846976 encryption=off cluster_size=2097152 lazy_refcounts=off

After that you can just attach the disk to guestfish and start playing with huge filesystems.

[I should note that virt-rescue is probably a better choice of tool here, especially for people who need to experiment with unusual filesystem or LVM options]

$ guestfish -a huge.qcow2 Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell ><fs> run ><fs> blockdev-getsize64 /dev/sda 1152921504606846976 ><fs> part-disk /dev/sda gpt

Ext4 (according to Wikipedia) is supposed to support 1 exabyte disks, but I couldn’t get that to work, possibly because there was not enough RAM:

><fs> mkfs ext4 /dev/sda1 libguestfs: error: mkfs: ext4: /dev/sda1: mke2fs 1.42.5 (29-Jul-2012) /dev/sda1: Not enough space to build proposed filesystem while setting up superblock

XFS could create a filesystem, but I didn’t let it run to completion because it would need about 5 petabytes to store the filesystem metadata:

><fs> mkfs xfs /dev/sda1 [ disks churn for many minutes while qcow2 file grows and grows and grows ... ]

LVM2 PVs are possible, but creating a VG requires us to adjust the extent size:

><fs> pvcreate /dev/sda1 ><fs> vgcreate VG /dev/sda1 libguestfs: error: vgcreate: PV /dev/sda1 too large for extent size 4.00 MiB. Format-specific setup of physical volume '/dev/sda1' failed. Unable to add physical volume '/dev/sda1' to volume group 'VG'. ><fs> debug sh "vgcreate -s 1G VG /dev/sda1" Volume group "VG" successfully created ><fs> lvcreate LV VG 1000000000 ><fs> lvs-full [0] = { lv_name: LV [...] lv_size: 1048576536870912 }

Previously …


Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Sat, 11/05/2013 - 18:49

New in libguestfs upstream and 1.21.39 is the ability to access disks over FTP, FTPS, HTTP, HTTPS and TFTP (read-only).

You can use it like this:

$ export LIBGUESTFS_BACKEND=direct $ guestfish --ro -a http://x.x.x.x/scratch/winxp.img -i Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell Operating system: Microsoft Windows XP /dev/sda1 mounted on / ><fs> ll / total 1573209 drwxrwxrwx 1 root root 4096 Apr 16 2012 . drwxr-xr-x 23 1000 1000 4096 May 11 18:45 .. -rwxrwxrwx 1 root root 0 Oct 11 2011 AUTOEXEC.BAT -rwxrwxrwx 1 root root 0 Oct 11 2011 CONFIG.SYS drwxrwxrwx 1 root root 4096 Oct 11 2011 Documents and Settings -rwxrwxrwx 1 root root 0 Oct 11 2011 IO.SYS -rwxrwxrwx 1 root root 0 Oct 11 2011 MSDOS.SYS -rwxrwxrwx 1 root root 47564 Apr 14 2008 NTDETECT.COM drwxrwxrwx 1 root root 4096 Oct 11 2011 Program Files drwxrwxrwx 1 root root 4096 Oct 11 2011 System Volume Information drwxrwxrwx 1 root root 28672 Oct 11 2011 WINDOWS -rwxrwxrwx 1 root root 211 Oct 11 2011 boot.ini -rwxrwxrwx 1 root root 250048 Apr 14 2008 ntldr -rwxrwxrwx 1 root root 1610612736 Oct 11 2011 pagefile.sys

Apart from being a tiny bit slower, it just works as if the disk was local.


Categories: LUG Community Blogs

Richard WM Jones: rich

Planet GLLUG - Sat, 11/05/2013 - 17:19

In libguestfs ≥ 1.21.38 you can access at least some iSCSI disks.

On my server (RHEL 6 in this case) I create an iSCSI target backed by a Windows XP disk image:

# service tgtd start Starting SCSI target daemon: [ OK ] # tgtadm --lld iscsi --op new --mode target --tid 1 \ -T iqn.1994-05.com.redhat # chcon system_u:object_r:tgtd_var_lib_t:s0 /tmp/winxp.img # tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \ --lun 1 -b /tmp/winxp.img # tgt-admin -s ...

Previously I opened port 3250 on the server. Because libguestfs doesn’t yet support authentication against the iSCSI server, I had to bypass that:

# tgtadm --lld iscsi --mode target --op bind --tid 1 -I ALL

Now on the client, I can connect to the iSCSI target using libguestfs like this:

$ export LIBGUESTFS_BACKEND=direct $ guestfish --format=raw -a iscsi://x.x.x.x/iqn.1994-05.com.redhat/1 -i Welcome to guestfish, the guest filesystem shell for editing virtual machine filesystems and disk images. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell Operating system: Microsoft Windows XP /dev/sda1 mounted on / ><fs> ll / total 1573209 drwxrwxrwx 1 root root 4096 Apr 16 2012 . drwxr-xr-x 23 1000 1000 4096 May 11 17:16 .. -rwxrwxrwx 1 root root 0 Oct 11 2011 AUTOEXEC.BAT -rwxrwxrwx 1 root root 0 Oct 11 2011 CONFIG.SYS drwxrwxrwx 1 root root 4096 Oct 11 2011 Documents and Settings -rwxrwxrwx 1 root root 0 Oct 11 2011 IO.SYS -rwxrwxrwx 1 root root 0 Oct 11 2011 MSDOS.SYS -rwxrwxrwx 1 root root 47564 Apr 14 2008 NTDETECT.COM drwxrwxrwx 1 root root 4096 Oct 11 2011 Program Files drwxrwxrwx 1 root root 4096 Oct 11 2011 System Volume Information drwxrwxrwx 1 root root 28672 Oct 11 2011 WINDOWS -rwxrwxrwx 1 root root 211 Oct 11 2011 boot.ini -rwxrwxrwx 1 root root 250048 Apr 14 2008 ntldr -rwxrwxrwx 1 root root 1610612736 Oct 11 2011 pagefile.sys
Categories: LUG Community Blogs
Syndicate content