I recently replaced my elderly MacBookPro (late 2008: 5,1) with a slightly more up to date version (Late 2010: 6,2). While using it, I noticed a very odd problem: Audio over bluetooth headphones started out clear, but would degrade over time to a very low bandwidth quality. (Speech would sound robotic and unpleasant).

Audio over wired headphones or the MacBook speakers was fine, so it wasn't a problem with the inbuilt DAC or the audio sources. My Bluetooth Headphones (Jabra Move) can also be used wired, so the problem was not with them either. (And also, playing audio over Bluetooth from a phone didn't exhibit this problem, so the headphones were not the issue.)

I tried the following procedures before find the correct solution:

  • Unpairing and Re-Pairing the headphones. Problem persisted;
  • Restarting the Mac. Problem Persisted
  • Restarting the Mac and Clearing the PRAM/NVRAM (CMD-OPT-P-R on Boot). Problem Persisted;
  • Reset the SMC: (Power off, CTRL-OPT-Shift-Power button, Power on) Problem solved!

I don't know why the SMC reset worked, but my theory is that the Bluetooth Module was replaced at some point, and the SMC reset forced some re-reading of the low level devices in the system.

I didn't find any useful info when searching for a solution, so I've written it up here to help anyone with the same problem.

Changing Dynamic DNS Hosts

|

I host a number of websites from home, and I don't have a fixed IP address, so I need to have a service which updates a DNS entry with my current IP address whenever it changes.

Fadó, fadó, in the early stage of the internet, there were free services that did this, but a whole bunch of them went away about 2009 or so, and DynDNS.net eliminated their free tier. Back then, that service went from free to USD 25 per year, which I dutifully paid up at the time.

Now, it looks as though they're going to start charging USD 60 per year per domain for the service of having a DNS record that gets updated once a month or so. This is just unconscionable gouging as far as I am concerned, so I'm going to have to investigate the alternatives and see if there are any free options available (or free with some work on my part), or if I can settle for some service which is more affordable for me, while providing the same service.

Methodology

  1. Identify alternative services
  2. Review the service that they actually provide
  3. Identify the cost of the service they provide
  4. Determine if 2. and 3. make financial sense
  5. Determine the scope of work required to switch to another service
  6. Switch (if good alternative found)
  7. Monitor the performance of the new service
  8. After a period of time, review the performance of the chosen service and decide what, if any, action needs to be taken.

So What do I need to be provided?

My core requirements are as follows:

  • Provide DNS services for at least two (2) domains that I own and host from home;
  • Allow me to update the DNS for those domains using (preferrably) ddclient (No particular reason for that, that's just how I'm setup at the moment and it would require the fewest changes.);
  • Cost less than Dyn.com;
  • be reliable.

What else?

  • Allow for additional domains to be added if I need to, (i.e., not have a per domain cost);
  • Cope with possibly shifting the hosting side of things to a Linode instance at some point.

Alternative Services

So, what alternatives are there? I did some basic searches and came up with the following:

Yes, I included DynDNS in there. They still provide the service, and there is a chance that there would be no competitive services available, or that any decent alternative would require vast amounts of input on my part.

DynDNS is what I'm using now. It has the lowest transition cost (free: Yay!), but will cost USD 60 per domain to renew (Boo!). This is almost twice what it was last year (USD 35 each), and is a thoroughly ridiculous amount of money for hosting a few Zone files.

It has been very reliable, though: I've been using DYNDNS since 2009, and I think I've had to make a change once in all that time. This is good, as I travel a lot and I'm not always available to solve DNS problems.

So there's the baseline: the replacement service has cost less than USD 120 per year, and not cause headaches, or need constant attention. That seems like a pretty low bar...

EntryDNS.net requires a USD10 registration fee before letting me see what services are available. While I recognise that free internet services still cost money to run, this is a little off putting.

Searching around for reviews of their service finds very little, and a few indications that they nearly went out of business last year, and relaunched this year. Sounds like a little bit too much drama for what I want!

I think I'll give this company a skip, unless I have no alternative.

FreeDNS enforces sharing of domain names, unless you go premium, and this is USD 60 / year. Not really what I want.

Zonomi charges USD10 per year for two domains. This looks promising, so I set up a free account, and I'll go down my list looking through the others.

Hurricane Electric: Good old reliable HE (I've been using them for IPv6 for years)! They have a free service that appears to be a bit cryptic to setup and requires a bit of DNS knowledge. But if you don't understand A records, CNAMES, MX records, etc you have no business doing any of this setup in the first place, and should go look at a hosted service.

Time to test: register a domain (diaspoir.tech, only $4.99 at HOVER) and setup the delegation and the updater client:

vim /etc/ddclient.conf

protocol=dyndns2, server=dyn.dns.he.net,
        login=diaspoir.tech, password=[REDACTED]
        diaspoir.tech

Musical interlude with some noodling around at dne.he.net... (why can you only see the setup instructions when you're logged out?)

$ dig diaspoir.tech
;; QUESTION SECTION:
;diaspoir.tech.         IN  ANY

;; ANSWER SECTION:
diaspoir.tech.      86400   IN  SOA ns1.he.net. hostmaster.he.net. 2016050812 10800 1800 604800 86400
diaspoir.tech.      86400   IN  MX  10 diaspoir.tech.
diaspoir.tech.      296 IN  A   119.237.156.5
diaspoir.tech.      707 IN  NS  ns3.he.net.
diaspoir.tech.      707 IN  NS  ns1.he.net.
diaspoir.tech.      707 IN  NS  ns2.he.net.
diaspoir.tech.      707 IN  NS  ns5.he.net.
diaspoir.tech.      707 IN  NS  ns4.he.net

This seems to be working, so I think I'll turn off the auto-renew on the DYNDNS account, delete my credit card details from there, and start setting up the other domains.

I stopped going down the list at this point, so I didn't try out any of the other services.

Because nobody seems to understand it, and Most Hong Kong people insist on the wrong thing:

SymbolDescription
***The holder is aged 18 or over and is eligible for a HKSAR Re-entry Permit
AThe holder has the right of abode in the HKSAR

*** is not the same as right of abode or permanent residency, and it doesn't signify anything apart from your re-entry status.

Source: http://www.immd.gov.hk/eng/services/hkid/smartid.html

Repairing a non booting Linux box

|

The other day my primary mail server was rebooted after some routine package upgrades and it refused to boot! Technically, the BIOS failed to handover to Grub2, so I had to reinstall Grub2 on the MBR of the Boot disk.

I thought I'd document it here, for posterity, and because I didn't see it explicitly called out elsewhere.

First thing to do is get a live linux USB stick: I use UNETBOOTIN, a handy tool which will download and install a live linux distro (or FreeDOS, BSD, etc) to a USB stick. You'll probably need a 4GB stick or larger, which is no big deal these days.

Once you've got your USB stick, go ahead and boot the Linux box using it to your distro of choice. I normally use a recent version of Fedora, because I've been a Redhat user since 1999, but any recent version of Linux should have the tools below available.

Once you're running your live linux, you'll need to open a terminal, and become root, then re-install the grub boot code to the MBR. The following assumes that your boot partition is /dev/sda1, and the boot device is /dev/sda. (you mount the partition, but you install the MBR on the device.)

$ sudo su -
# mkdir /mnt/sda
# mount /dev/sda1 /mnt/sda
# grub2-install --boot-directory /mnt/sda/boot /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.

That should be it. Reboot, and remember to remove your USB stick!

Aside: I have had problems with recent Live Installs where the UUID of the boot volume is reported wrongly, so that the USB stick won't boot, but instead fails to the DRACUT emergency Root Console. You need to run blkid and write down the UUID of the boot media and then manually edit the ubninit code to get the right UUID.

When I replaced a set of UE 200vi which had failed many times, I went with a relatively high end pair of UE 600vi earbuds, in the hope that they'd exhibit a higher build quality than the previous UE 200vi's I'd had.

The Fault: Audio fails because of some cable problems, possibly associated with the junction of the plug end of the cable. This happened at varying intervals, but every single set I have received has failed, in some cases within a month or so! Here's my history with the UE 600vi:

  • Purchase Date: 2013 12 09
  • Replaced: 2014 04 07: 119 days
  • Replaced: 2014 06 19: 73 days
  • Replaced: 2014 07 30: 41 days
  • Replaced: 2014 09 20: 52 days
  • Finally Failed and Refunded: 2015 04 27: 209 days

Thats a total of 494 days, or an average of 98 days per unit!

After the September 2014 replace, my contact details were taken with (I think) the intention of Logitech contacting me. I presume they'd like to know some usage patterns to determine if I am using the product in a way which violates the warranty, as replace units on average every three months indicate a pretty severe problem for a device meant to last two years.

Every single time, it has been a no questions asked replacement. Whether this is due to Logitech policy, or inability to communicate, I don't know. If there was any pushback from the manufacturer, I would have expected more resistance to warranty replacements. Therefore, I think Logitech are aware that there are significant issues with their design, and the margins are such that high levels of warranty replacements are acceptable to them.

I stress that I got a new set each time: this is not a single bad device, this is a sample of 5 randomly chosen devices. There exists the small opportunity that the devices I get at warranty are refurbs, but I see them taken out of a new box, so I don't think that's the case.

2015 04 17 - left ear stopped working again, very quickly - going from intermittent, to no audio. Once again, the cause seems to be the cable at the plug end, as wiggling it can sometimes get audio back to the left ear.

Oh, and no one from Logitech contacted me at all.

2015 04 20: I've contacted the Warranty people (Changed to a different provider), and they are unable to provide a new model as the UE600vi are discontinued. They will instead provide a refund. (Full amount? Unclear.)

2015 04 26: Finally Resolved: the new warranty providers gave me a no questions asked refund of the full amount that I paid. I would have settled for less, honestly, as I got an amount of use value from the product, but I'm very happy with the solution. They kept the product, so I was unable to attempt repairs. Instead I bought a pair of RHA MA750i, for almost the same price, but vastly better build quality, thicker cabling, and most importantly, much better strain relief of the cables at the junctions.

FZF - Fuzzy Finder

|

fzf is a useful fuzzy finder that can replace/augment the history command. Works in vim too.

Apple Store Pricing in Hong Kong

|

I was noodling around in the Apple Store recently and I noticed something interesting. Traditionally, Apple has followed a fairly simple formula for pricing in the HK Apple Store, which is to do assume a HKD:USD rate of around 7.80, round to the nearest hundred and take away 12. Sounds complicated? Not really, as what they really want is to have prices ending in 88, which is very auspicious in Chinese culture.

The first table below shows the pricing for some common products. The Rate below refers to the HK price divided by the US price to determine the exchange rate. The second HKD price uses the formula:

ROUNDUP((US Price) * 7.80 to nearest 100) -12

The difference and markup are bases on the difference between this price and the price in the HK store. The Apple TV price fits the patterns closest, but all the products follow the pattern very closely:

ProductHKDUSDRateHKDDiff (HKD)Markup
MacBook Air 11$7,688$999$7.70$7,788-$100-1.3%
MacBook Air 13$8,488$1,099$7.72$8,588-$100-1.2%
MacBookPro 13$9,188$1,199$7.66$9,388-$200-2.1%
Ret. MacBookPro 13$9,988$1,299$7.69$10,188-$200-2.0%
Ret. MacBookPro 15$15,288$1,999$7.65$15,588-$300-1.9%
iMac 21.5"$9,888$1,299$7.61$10,188-$300-2.9%
iMac 27"$13,888$1,799$7.72$14,088-$200-1.4%
Apple TV$788$99$7.96$788$00.0%

(US Apple Store prices do not normally include sales taxes, and there are also no sales taxes in Hong Kong. All prices are for the base model in each range.)

As you can see, you generally save a small percentage buying the product in HK when compared to the US price. But when you look at some third party products, the price differential between the US prices and HK prices is all over the place. Here's the prices for fitbit products:

ProductHKDUSDRateHKDDiff (HKD)Markup
Fitbit Zip$498$60$8.31$488$102.0%
Fitbit Aria$1,098$130$8.45$1,088$100.9%
Fitbit Flex$898$100$8.98$788$11014.0%
Fitbit One$898$100$8.98$788$11014.0%

Why are the last two fitbit products so expensive? An additional 14%? Seems a bit excessive!

Here's an interesting thing: the latest iPhone models also have this price increase in a way which is out of step with the existing price iOS device price points:

ProductHKDUSDRateHKDDiff (HKD)Markup
iPad 2$3,088$399$7.74$3,188-$100-3.1%
iPad mini$2,288$299$7.65$2,388-$100-4.2%
iPad Mini Retina$3,088$399$7.74$3,188-$100-3.1%
iPad Air$3,888$499$7.79$3,888$00.0%
iPhone 4S$3,488$450$7.75$3,588-$100-2.8%
iPhone 5C$4,688$549$8.54$4,288$4009.3%
iPhone 5S$5,588$649$8.61$5,088$5009.8%

Finder crashing every minute

|

Today I was using my MacBook Pro for work as per normal, when I noticed the Finder windows crashing every minute or so. I tried many things, including:

  • Deleting misc plists from my ~/Library/Preferences directory;
  • Rebooting in Safe Mode (Hold Shift while rebooting);
  • Restoring the System Fonts while in Safe Mode;
  • Validating the Fonts within FontBook (Found one corrupt one);
  • Deleting every single .DS_Store file on the Mac;
  • Trying to diagnose the issue from the Crash Report in the Console.

All to no avail, although I did discover something interesting, of which more anon.

Finally, I waded into the Apple Support Forums, searching on some of the terms I found in the crash reports and I finally found a solution to Finder Crashing Every Minute: Basically, turn off "show file status icons and right click menu" in the Google Drive Preferences. This instantly stopped the problems.

The interesting thing I found? My ~/Library/Preferences directory was full of locked files, and once I deleted all the *.lockfile files, quite a few apps were much faster to open, and several websites dramatically changed their fonts. Perhaps I had overwritten the default font for some of them, as they went from being a nice Helvetica to Verdana.

domain registration scam

|

I get scam attempts:

(Letter to Head of Brand Business or CEO, thanks)

Dear Sir or Madam,

This is a formal email. We are the department of Asian Domain Registration Service in China. Here I have something to confirm with you. We formally received an application on October 15, 2013 that a company claimed Hora Tech, Ltd were applying to register "diaspoir" as their brand name and some diaspoir Asian countries top-level domain names through our firm.

Now we are handling this registration, and after our initial checking, we found the name were similar to your company's, so we need to check with you whether your company has authorized that company to register these names. If you authorized this, we would finish the registration at once. If you did not authorize, please let us know within 7 workdays, so that we could handle this issue better. After the deadline we will unconditionally finish the registration for Hora Tech, Ltd. Looking forward to your prompt reply.

Best Regards Derek Lau Senior Consultant

Tel:+86-551-6349 5334

Fax:+86-551-6349 5344

Address:HuiZhou Ave. 856, Hefei, Anhui, CN

A quick google of the first sentence of the second paragraph reveals a hoax-slayer page about this scam, along with plenty of examples of its use. Nothing to worry about.

Inquiry of Guest Posting

|

First SEO spam in a while:

Hello,

I came across your site (http://www.diaspoir.net/) and would like to discuss the possibility of having a guest post on your site.

I’m working on behalf of my client who is able to create articles including travel, shopping and entertainment amongst many other things.

I hope this would be something of interest and would very much like to hear back from someone regarding this guest post opportunity.

Hope to hear back from you soon.

Kind Regards,

[NAME REDACTED]

[COMPANY NAME REDACTED]

You know, right down on the page here, just about where the email address is, are three little paragraphs of text which say:

  • Unsolicited Bulk Email (spam), commercial solicitations, SEO related items, link exchange requests, and abuse are not welcome here and will result in complaints to your ISP.
  • email the webmaster
  • Any email to the above address may be made public at the sole discretion of the recipient.

I don't think I'd pay for services from a company which apparently can't read the paragraph above and below the contact email address...

I've redacted the responsible company for a few reasons. The main reason is that I don't wish to invite assholes into my life, and SEO spammers whinging about how I am "defaming their personal braaands" by reporting accurately on things they have actually done match that description pretty well.

Also, it's not that obvious from the email, but the company is an SEO consulting company that boasts of using meta-tags and keywords to attract Google attention, which makes them borderline scammers in my book. Real SEO is good content and appropriate semantic markup, not keyword and meta-tag spamming.

Top ten SSH login attempts

|

With all the fuss over NSA intrusion into encrypted datastreams, I thought I'd take a look at the security situation on my own website. To that end, I wrote some perl to fondle the log files and keep a record of who's logging in and who's getting kept out.

Top 10 users accepted:

Only one user is accepted at all and that user is me. As I normally ssh in with a public key, I think this is pretty secure. I'm not giving usernames, just because. Also, all IP addresses accepted are either local addresses, or the remote address I was at recently.

Top 10 usernames rejected:

Here's where it gets interesting: there are hundreds of attempted logins per day via ssh. I keep a years worth of logs, so over the last year the top 20 usernames someone tried to use to log in with are:

  • USER_REJ: testing rejected 438 times.
  • USER_REJ: tester rejected 447 times.
  • USER_REJ: temp rejected 505 times.
  • USER_REJ: www rejected 536 times.
  • USER_REJ: testuser rejected 541 times.
  • USER_REJ: web rejected 545 times.
  • USER_REJ: test1 rejected 545 times.
  • USER_REJ: alex rejected 592 times.
  • USER_REJ: backup rejected 671 times.
  • USER_REJ: ftpuser rejected 758 times.
  • USER_REJ: tomcat rejected 767 times.
  • USER_REJ: info rejected 777 times.
  • USER_REJ: git rejected 890 times.
  • USER_REJ: postgres rejected 1351 times.
  • USER_REJ: user rejected 1520 times.
  • USER_REJ: a rejected 1559 times.
  • USER_REJ: nagios rejected 2181 times.
  • USER_REJ: admin rejected 2295 times.
  • USER_REJ: test rejected 4052 times.
  • USER_REJ: oracle rejected 4088 times.

What's interesting here is the huge gap between the top 20: almost 10 times the frequency. Also, how many are trying to log in via ssh as the standard user for services. If you allow SSH as the standard service name for popular services, you are an idiot and asking for trouble.

Top 20 rejected IP addresses

So where am I being hacked from the most? Over the last year, the logs tell the following story.

  • IP_REJ: 67.205.111.20 probed 1825 times. iWeb Technologies Inc. IWEB-BLK-04 (NET-67-205-64-0-1) 67.205.64.0 - 67.205.127.255
  • IP_REJ: 218.57.137.66 probed 1869 times. CNC Group CHINA169 Shandong Province Network
  • IP_REJ: 202.77.120.67 probed 1931 times. Indonesia
  • IP_REJ: 85.214.234.251 probed 2245 times. h1762348.stratoserver.net, Berlin.
  • IP_REJ: 61.130.8.34 probed 2366 times. CHINANET-ZJ Hangzhou node network
  • IP_REJ: 218.108.249.44 probed 2542 times. HZDTV-IDC, China Zhejiang Province.
  • IP_REJ: 59.44.219.15 probed 2546 times. CHINANET liaoning province network
  • IP_REJ: 119.37.196.120 probed 2585 times. Hangzhou, Zhejiang, P.R.China
  • IP_REJ: 58.76.184.157 probed 2594 times. Hyundai HCN Dongjak Systems Co., Ltd, Korea
  • IP_REJ: 211.191.168.180 probed 2698 times. 2F Bundang Center, Onse IDC, 235-230, Korea
  • IP_REJ: 69.25.137.199 probed 2947 times. vps2.barnes-open.net
  • IP_REJ: 202.28.123.191 probed 3194 times. Chulalongkorn University, Thailand
  • IP_REJ: 222.87.204.11 probed 3321 times. CHINANET Guizhou province network
  • IP_REJ: 223.4.134.138 probed 4199 times. Hangzhou Alibaba Advertising Co.,Ltd, China
  • IP_REJ: 203.116.109.67 probed 4768 times. Starhub internet, Singapore
  • IP_REJ: 211.137.33.74 probed 5218 times. China Mobile Communications Corporation - liaoning
  • IP_REJ: 60.195.250.52 probed 5704 times. Beijing Bitone United Networks Technology Service Co.,Ltd, China
  • IP_REJ: 122.224.69.98 probed 8212 times. Hangzhou NEWGRAND Software Co., Ltd, China
  • IP_REJ: 203.91.121.76 probed 12834 times. FIT Center, Tsinghua University, Beijing China
  • IP_REJ: 125.210.188.12 probed 16360 times. WASU TV & Communication Holding Co.,Ltd. 6/F, Jian Gong Building, NO.20 Wen San Road, Hangzhou, Zhejiang province, P.R.China 310012

That's a heck of a lot of illegal accessing attempts from China... Remember, this is not website accesses, these are attempted logins over ssh. There is no way any of this is mistaken SSH, as only I have login access to this box. All of these login attempts are malicious. If you are operating a commercial SSH service and you have no customers in China, you should block the whole damn country.

But who is vps2.barnes-open.net? It's almost the only non-Asian attacker in the whole list. Whois returns:

Registrant Name: Steve Barnes
Registrant Organization: BarnesSteve
Registrant Street: Shop1, 676 Wynnum Road,
Registrant City: Morningside, Brisbane  Queensland

Why is this guy, or someone using his services, trying to login to my ssh server? (Or was, the entries are from April 2013.) And why is he trying to log in as user admin? He's also tried dictionary attacks using a variety of first names and service names. Nearly 3,000 attempts? That's no accident, this site was clearly either compromised or is black hat.

Cleaning Shure SE215s

|

Previously, I've blogged about the poor reliability of Shure canal phones, headphones, etc. I've had one set replaced at least twice because one ear would just decrease in volume enough that you couldn't hear anything. Both times, I did genuinely get a different set of SE215 with new serial numbers.

If they do this during the two year warranty period, Shure will replace them free of charge. After that time, you will be held responsible for a cleaning/replacement charge. At this point, you may well feel that you should just buy another pair, as the repair charges are probably a significant proportion of the cost of buying another pair.

I discovered a way to get a pair of Shure SE215 back from the one ear dead state, and it's very simple. This has now worked for me twice, and may be worth a try if you are experiencing this issue *and* your Shures are out of warranty.

If they're in warranty, just take them to Shure and get them replaced.

Seriously.

My method is an act of desperation and is only applicable where: "My earphones are dead and I can't afford a new pair of Shures, and the affordable Ultimate Ears 200vi are crap. (I really don't need to hear that much wire jiggling noise, thankyewverymuch!)"

You will need:

  • a pair of Shure earphones which have at least one ear blocked/silent;
  • Contact cleaner spray;
  • Weak Lemon Drink (or any beverage of your choice, really);
  • A sense of desperation that you are willing to risk your headphones for this experimental procedure.

Please note (DISCLAIMER) that I accept no responsibility for any damage to your Shures, computer, lungs, environs, property, chattels and demesnes. You undertake this venture at your own risk. Contents may settle in transit. No motorcycles after 3PM.

The steps to follow are as follows:

  • remove the silicon or foam tips from your headphones;
  • bring your headphones to a place where spraying contact cleaner is safe and non offensive, and where there is good drainage. Bathrooms are good;
  • spray a short burst of contact cleaner directly into the ear tubes of the headphones and immediately turn the headphones opening down to drain excess fluid out;
  • DRINK YOUR WEAK LEMON DRINK NOW! (You will need to allow some time for the alcohol in the contact cleaner to evaporate, meanwhile excess earwax or other precious bodily fluids have been melted/synthesized and sent to the NSA/FBI/KGB for analysis and long term storage.);
  • Excess alcohol in your weak lemon drink may need dissipating through fried food and carbohydrates.
  • Test your headphones for good audio in both ears.

It may take a while for all the various substances to evaporate so be patient. You may need to DRINK YOUR WEAK LEMON DRINK a second time. You should probably pour another, rather than regurgitating the first drink. however, if you have insectoid ancestry, feel free to disgregard this advice.

    • Macrae described the conduct of bartender-turned-feng shui master Chan as “shameless and wicked as well as borne of unparalleled greed.’’
       Chan had built a career advising clients including Wang on feng shui, an ancient Chinese belief system based on harnessing natural and spiritual energies.
       He lost a legal battle in 2010 to claim the estimated US$13 billion estate of the late property tycoon, once Asia's richest woman, in a high-profile case that has gripped the city for years.
       He was then convicted yesterday of forging the will in question.
       Wang was known for her thrifty nature and outlandish dress sense, and was nicknamed “Little Sweetie'' for her pigtail hairstyle. She died of cancer in 2007 aged 69, triggering a bitter public feud over her fortune. --AFP

Posted from Diigo. The rest of my favorite links are here.

Posted from Diigo. The rest of my favorite links are here.

I was sent this in email recently. Interesting infographic. How Climate Change is Destroying the Earth

Archives

About Me

Contact

  • Unsolicited Bulk Email (spam), commercial solicitations, SEO related items, link exchange requests, and abuse are not welcome here and will result in complaints to your ISP.
  • Any email to the above address may be made public at the sole discretion of the recipient.

Other Stuff

  • Powered by Linux
  • (RedHat Linux)

Categories

Monthly Archives