Speeding up QML development on an N950

Others have pointed out that when pushing the “Run” button within QtCreator when the target is set to your N9 or N950, aka Harmattan device it’s very slow. The reason is that it fully builds and packages everything before sending it over. That’s great when you actually want a full package installed, especially when you have modified the C++ internals. However, its a bit over-kill just to install new copies of any QML code. It’s a *slow* process (as is the emulator).

One person has posted a great blog entry for how to speed up the deployment step by not doing the packaging, and just copying the files and running the executable.

But there is even a faster way when it comes to dealing with the QML itself. It involves using sshfs. You simply move your local qml directory aside (assuming that’s where you store your QML code), and mount the n950′s installed filesystem in its place.

devel# cd my-cool-app
devel# mv qml qml.local
devel# sshfs root@myn950:/opt/my-cool-app/qml qml

Now, when you’re inside qtcreator and save the files you’re actually saving them directly to the device. You’ve just upgraded the device with a single Ctrl-S. Done! Now simply launch the app on the N950 and you’re done!

killing/restarting

Of course, the other helpful trick is to launch the application from a terminal window instead.

devel# ssh myn950
n950% killall my-cool-app ; /opt/my-cool-app/bin/my-cool-app &

Just keep hitting the up arrow key to restart the app after you make changes you want to test.

Integrating with git and other foo

git, and most other VCSes, really won’t care if one of the directories has been remotely mounted. It’ll notice the file changes and will let you check in your modifications even though they’re mounted from the phone itself. Just remember when you unmount the phone later (using fusermount -u qmlgit checkout qml), which are likely different than the qml.local directory we saved earlier.

Leave a Comment

Celebrating World IPv6 Day by Testing the Candidates

So today (June 8th, 2011), is the first “World IPv6 Day”. This is (was) a day where the techies all over the world were encouraged to try and see what worked with IPv6 and what didn’t. The good news is that the publicity has definitely helped demonstrate that this is an important topic for the future of the Internet. As more and more non-techies are aware, we ran out of IPv4 addresses a while ago (yes yes, I know that is not entirely an accurate statement), and the only long-distance solution is something called IPv6. Which I won’t explain here.

So what did I do to celebrate this monumental event? First, I checked the “who’s supporting it” list and was happily surprised to see a Fairly Long List of participating organizations. Granted, compared to the much longer list of organizations connected to the internet, this is nothing, but it’s a start… Then, I launched my web browser and hit a few random sites to see how they worked over my IPv6 connection. I was happy to see they worked fantastically.

But, I thought, what a boring test. How do I know that my dual-stack IPv4/IPv6 machine is really doing everything it can to reach these sites using only IPv6? I had two choices: pull the IPv4 plug out (no, non-techies, it’s not actually a different plug; sorry for the confusion) or do the right thing and actually test the real data. So I did the right thing. Or at least part of the right thing.

I quickly hacked up a script (now available from my GitHub ipv6day repository) to test a few important elements of how well an organization would truly fair in an IPv6 only world. Connectivity can fail to anyone at any time, and I wasn’t trying to test connectivity. I wanted to test whether they were truly advertising all the needed services of their organization as IPv6 capable. So I tested 3 things (arguably the 3 most important things):

  • Did they have a “www” record with a AAAA address (which is an IPv6 address)?
  • Did they have at least 1 NS (DNS) entry for their domain with a AAAA record?
  • Did they have at least 1 MX (email) entry for their domain that was reachable by IPv6?

Turns out, most sites concentrated on only the first question and skipped the other two. Not entirely a true commitment to testing IPv6. Still, I suppose, better than nothing. But I still won’t list them as “success cases”. If you had only IPv6 on your machine, you certainly couldn’t read their website without at least the first two, and you couldn’t send them mail complaining about it unless you had the last two.

As long as I was at it: DNSSEC

I figured as long as I was testing things, I wanted to test out my ability to use my other new favorite technology: DNSSEC. How many of these domains would at least have:

  • At least one published DNSKEY?
  • A parent that had a DS record pointing to them?

Note that I wasn’t testing the actual data. Just “if they were thinking about it”, as I wasn’t even checking to see if DNSSEC signatures were being published. And it’s not entirely fair if their parent won’t accept a DS record to publish (but that’s too bad; fix your parent).

Results

The full result table is long. So what do you do with long results? Summarize them of course! So here’s the summary table (the numbers in green are the number of sites that succeeded in all the tests).

  Good Results Counts
0 1 2 3
IPv6 38 212 176 41
DNSSEC 424 7 36  

It’d be nice if every one of those entries had maximized the IPv6 tests (3) and DNSSEC tests (2). But as you can see, we fell far short of that.

So who gets the gold stars? Of all the 436 domains that had listed themselves as testable, who actually truly tried their best? It’s only fair that I specifically call out “good job” to those that I consider having passed the “World IPv6 Day Test”. These weren’t hard tests. They weren’t even under undergrad course-level worthy. They’re far below questions that might be given during a 101 class test, and were more like a Elementary School course-level test questions. But those that passed are still worth naming.

41 passed the IPv6 test and 36 passed the DNSSEC test. That’s right, of all the companies that said they’d participate in “World IPv6 Day”, only 41/436 (9.4%) passed my simple tests. i don’t think the techie world scored an a+ today.

But, as in every class, there were a few over-achievers. i’ll call out their names as they cross the stage first, because not only did they pass the 3 simple ipv6 tests, they also passed my dnssec tests, which was really a pop-quiz they didn’t know they’d be taking. Kudos to the folks on this list! I passed out the most gold stars to this fine list of students:

Domain IPv6 DNSSEC Both
gotanet.se
imperial.ac.uk
lansstyrelsen.se
leissner.se
lst.se

And now the list of companies that at least passed either the full set
of IPv6 tests or the full set of DNSSEC tests:

Domain IPv6 DNSSEC Both
afilias.info
antixlabs.com
beamartyr.net
bluecatnetworks.com
broeltal.de
caib.nasa.gov
census.gov
cesca.cat
commerce.gov
cysols.com
dhs.gov
doi.gov
dol.gov
dpf.gov.br
ed.gov
energy.gov
faa.gov
fab-corp.com
feb.gov
gigatux.com
gsa.gov
gustavus.edu
hostingxs.nl
hostmaster.ua
httrack.com
hurricanelabs.com
ig.com.br
iltalehti.fi
indiana.edu
info.info
infoblox.com
inl.gov
internet2.edu
ipv6world.nl
isoc.se
jobs.qualcomm.com
jp.apan.net
kernel.org
km.nasa.gov
lemonentry.eu
lmu.de
lsu.edu
midlandcomputers.com
neustar.biz
nist.gov
nlm.nih.gov
opm.gov
orion.on.ca
pir.org
plurk.com
proofpoint.com
reading.ac.uk
rohitab.com
sanger.ac.uk
skymarket.co.uk
state.gov
supranet.net
t-online.de
tamagawa.jp
thehavennet.org.uk
tunix.nl
ucf.org
ulak.net.tr
ultradns.com
verisigninc.com
w3.org
webmetrics.com

Detailed Results

And for those that want to look at all the individual records, I present the full test result table:

  IPv6 DNSSEC
Domain DNS WWW MX DNSKEY DS
youtube.com 0 1 0 0 0
facebook.com 0 1 0 0 0
yahoo.com 0 2 0 0 0
akamai.com 0 2 0 0 0
limelightnetworks.com 0 2 0 0 0
youtube.com 0 1 0 0 0
cisco.com 0 1 0 0 0
meebo.com 0 1 0 0 0
genius.com 0 1 0 0 0
w3.org 1 1 1 0 0
unam.mx 0 1 0 0 0
rpi.edu 2 2 0 0 0
nyi.net 0 1 0 0 0
hosteurope.de 0 1 0 0 0
xiphiastec.com 0 0 0 0 0
tomshardware.com 0 1 0 0 0
seecs.edu.pk 0 1 0 0 0
twenga.com 2 2 0 0 0
plurk.com 2 1 2 0 0
terra.com.br 0 1 0 0 0
jolokianetworks.com 2 1 0 0 0
juniper.net 0 1 0 0 0
bing.com 0 2 0 0 0
gigatux.com 3 1 3 0 0
voxel.net 0 1 0 0 0
lemonentry.eu 2 1 1 0 0
2g2u.net 2 1 0 2 0
2020media.com 2 1 0 0 0
vonage.com 0 1 0 0 0
sapo.pt 2 1 0 0 0
tagadab.com 0 1 0 0 0
mercuryz.com 2 1 0 0 0
outpost10f.com 1 1 0 0 0
pir.org 4 0 0 2 2
sesamestreet.org 0 1 0 0 0
sesamestreet.com 0 1 0 0 0
arces.net 0 1 0 0 0
nic.mx 1 2 0 0 0
bluecatnetworks.com 0 1 0 2 1
nolet5.nl 0 1 1 0 0
mozilla.com 0 1 0 3 0
unapec.edu.do 1 1 0 0 0
lexmedia.ro 0 1 0 0 0
astaro.com 0 1 0 0 0
astaro.de 0 1 0 0 0
astaro.org 0 1 0 0 0
hurricanelabs.com 3 1 0 2 1
va.gov 0 1 0 0 0
rosslynanalytics.com 2 2 0 2 0
appalachianwireless.com 3 1 0 0 0
officescape.com 2 1 0 2 0
sliqua.com 0 1 0 0 0
exactabacus.com 0 0 0 0 0
weathercity.com 2 1 0 0 0
lcn.com 0 1 0 0 0
serverchoice.com 0 1 0 0 0
isomedia.com 0 1 0 0 0
fortinet.com 0 1 0 0 0
harvard.edu 2 1 0 0 0
commandchannel.com 0 0 0 0 0
biglobe.ne.jp 0 1 0 0 0
yellowbot.com 1 1 0 0 0
urbandictionary.com 0 1 0 0 0
dailykos.com 0 1 0 0 0
comcast.net 5 0 0 0 0
netcetera.co.uk 0 1 0 0 0
miniclip.com 0 1 0 0 0
midlandcomputers.com 2 1 3 0 0
internet2.edu 3 1 0 4 4
canarie.ca 2 1 0 0 0
gustavus.edu 3 1 2 0 0
laurentian.ca 0 1 0 0 0
huawei.com 0 2 0 0 0
interop.jp 0 1 0 0 0
mapy.cz 1 1 0 0 0
shazzlemail.com 0 0 0 0 0
bangzoom.com 0 0 0 0 0
telkom.co.id 1 1 0 0 0
plasa.com 1 1 0 0 0
telkomspeedy.com 1 1 0 0 0
httrack.com 3 1 2 0 0
luns.net.uk 2 1 0 0 0
a10networks.com 2 1 0 0 0
radiusgateway.com 0 1 0 0 0
dyni.net 2 1 0 0 0
mihostcgi.com 0 0 0 0 0
verisigninc.com 1 1 0 2 1
unclesamnames.com 0 0 0 0 0
devoteam.ch 0 1 0 0 0
campus-party.org 0 1 0 0 0
campus-party.com.co 0 1 0 0 0
campus-party.com.br 0 1 0 0 0
campus-party.es 0 1 0 0 0
opendns.com 0 1 0 0 0
us.ntt.net 5 1 0 0 0
isacc.ca 2 1 0 0 0
cccnt.ca 2 1 0 0 0
wikisail.fr 2 1 0 0 0
tellabs.com 0 1 0 0 0
mutali.rw 0 0 0 0 0
thehavennet.org.uk 3 1 3 0 0
townnews.com 0 0 0 0 0
ip-only.net 0 1 0 0 0
netpr.pl 1 1 0 0 0
hostingxs.nl 2 1 4 0 0
ig.com.br 2 1 0 1 1
infoblox.com 1 1 0 3 2
ericsson.com 1 2 0 0 0
nyu.edu 0 1 0 0 0
beirutix.net 1 1 0 0 0
frequence3.fr 3 1 0 0 0
ulak.net.tr 2 1 1 0 0
ripplecom.net 0 0 0 0 0
xs-software.com 0 1 0 0 0
agame.com 2 0 0 0 0
gry.pl 2 6 0 0 0
girlsgogames.nl 1 6 0 0 0
jeu.fr 2 6 0 0 0
spielen.com 2 6 0 0 0
games.co.uk 2 6 0 0 0
flashgames.ru 2 6 0 0 0
girlsgogames.it 2 6 0 0 0
cesca.cat 2 1 2 0 0
tatacommunications.com 0 1 0 0 0
sprint.com 0 1 0 0 0
orange.md 1 1 0 0 0
ccaba.upc.edu 1 1 0 0 0
hostmaster.ua 2 1 1 2 0
detik.com 2 1 0 0 0
alexville.com 0 0 0 0 0
hkirc.hk 1 0 0 0 0
hkdnr.hk 1 0 0 0 0
landshut.org 0 1 0 0 0
itgi.org 2 1 0 0 0
takinggovernanceforward.org 2 1 0 0 0
recro-net.hr 0 1 0 0 0
commerce.gov 6 1 0 3 2
census.gov 1 1 0 6 6
ntis.gov 0 1 0 0 0
itmastaren.se 2 1 0 0 0
twtelecom.com 2 1 0 0 0
ipv6world.nl 2 1 1 0 0
hostpoint.ch 2 1 0 0 0
opm.gov 0 0 0 5 2
feb.gov 0 0 0 5 1
turkcell.com.tr 0 1 0 0 0
www2.ntia.doc.gov 0 0 0 0 0
nic.cl 3 1 0 0 0
dualtec.com.br 1 1 0 0 0
nomer.com.br 1 1 0 0 0
faa.gov 0 2 0 3 2
cpanel.net 1 1 0 0 0
level3.com 0 1 0 0 0
adm-host.com 0 1 0 0 0
netnam.vn 0 1 0 0 0
fab-corp.com 2 1 1 0 0
superonline.com 0 1 0 0 0
cyberport.hk 0 0 0 0 0
marshall.edu 2 1 0 0 0
cyber.net.pk 0 1 0 0 0
f5.com 3 1 0 0 0
telcordia.com 0 1 0 0 0
neustar.biz 2 1 1 0 0
ultradns.com 2 1 1 0 0
webmetrics.com 2 1 1 0 0
quova.com 0 1 0 0 0
ultratools.com 2 1 0 0 0
melbourneit.info 0 1 0 0 0
bbn.com 2 1 0 0 0
campaya.co.uk 5 1 0 0 0
spain-holiday.com 5 1 0 0 0
xbox.com 0 2 0 0 0
subtel.cl 0 1 0 0 0
nlm.nih.gov 0 1 0 2 2
zerodayclothing.com 0 1 0 0 0
ncsu.edu 2 1 0 0 0
catnix.com 0 0 0 0 0
georgianc.on.ca 1 1 0 0 0
dlink.com 0 1 0 0 0
lsu.edu 4 1 0 2 1
chameleon.eu 2 1 0 0 0
indiana.edu 2 2 0 3 2
bandaancha.eu 2 1 0 0 0
teliasoneraic.com 0 1 0 0 0
farmfrites.com 0 1 0 0 0
tunix.nl 3 1 2 0 0
blox.eu 2 1 0 0 0
datapipe.net 0 1 0 0 0
localweb.com 2 1 0 0 0
xo.com 0 1 0 0 0
roaringpenguin.com 0 1 1 0 0
nttplala.com 2 1 0 0 0
kendo.jp 0 1 1 0 0
kernel.org 4 2 2 0 0
top-ix.org 0 1 0 0 0
t-online.de 1 1 2 0 0
unipi.it 3 1 0 0 0
sucomo.com 0 0 0 0 0
linuxzogno.org 4 1 0 0 0
salientfed.com 0 1 0 0 0
yp.com 0 1 0 0 0
answers.com 0 1 0 0 0
conexim.com.au 4 1 0 0 0
tele-pc.nl 0 1 1 0 0
atlasnetworks.us 0 1 0 0 0
tdc.dk 3 1 0 0 0
dominios.es 1 1 0 0 0
mybrighthouse.com 0 0 0 0 0
iweb.com 0 1 0 0 0
pachube.com 2 1 0 0 0
americanis.net 0 1 0 0 0
zeus.com 1 3 0 0 0
it-blog.net 2 1 0 0 0
it-in.ru 4 0 0 0 0
login.com 1 1 0 0 0
clara.co.jp 1 1 0 0 0
usnews.com 4 2 0 0 0
fibertech.com 0 1 0 0 0
anonymizer.com 0 1 0 0 0
widexs.nl 2 1 0 0 0
sanger.ac.uk 4 2 1 0 0
computerbase.de 0 1 1 0 0
haproxy.1wt.eu 0 0 0 0 0
telstraclear.co.nz 0 1 0 0 0
insuremytrip.com 1 1 0 0 0
sony.co.jp 3 1 0 0 0
alaxala.com 0 1 0 0 0
luthersem.edu 2 1 0 0 0
alliedtelesis.com 2 1 0 0 0
blacklotus.net 2 1 0 0 0
gsa.gov 0 1 0 3 2
yahoo.co.jp 0 1 0 0 0
bullpi.com 2 1 0 0 0
gotanet.se 2 1 2 2 2
leissner.se 2 1 2 2 2
tx-learn.net 0 1 0 0 0
onlinetech.com 1 1 0 2 0
treasury.gov 0 2 0 0 0
globalcrossing.com 4 2 0 0 0
peer1.com 0 1 0 0 0
unc.edu 0 1 0 0 0
netbenefit.com 0 1 0 0 0
qualcomm.com 0 2 0 0 0
jobs.qualcomm.com 0 0 0 1 1
ashmolean.org 0 1 0 0 0
ashmolean.eu 0 1 0 0 0
ashmolean.info 0 1 0 0 0
ashmolean.museum 0 1 0 0 0
ses.com 0 1 0 0 0
alindale.ca 0 1 0 0 0
hostopia.com 0 1 0 0 0
ed.gov 0 1 0 2 2
chpc.utah.edu 2 1 0 0 0
aol.com 0 1 0 0 0
red.es 3 1 0 0 0
ontsi.es 3 1 0 0 0
ivancorp.net 0 0 0 0 0
internet24.de 0 1 0 0 0
helinet.de 0 1 0 0 0
orion.on.ca 2 1 1 0 0
inl.gov 0 1 0 2 2
mastercard.us 1 0 0 0 0
egatedomains.ca 0 1 0 0 0
usda.gov 0 2 0 0 0
forestdaleinc.org 0 0 0 0 0
opus1.com 1 1 0 0 0
dci.co.uk 4 1 0 0 0
state.gov 0 2 0 3 2
mudynamics.com 0 1 2 0 0
kaweb.co.uk 0 1 0 0 0
charter.com 0 1 0 0 0
thesis-plc.com 0 1 0 0 0
lmu.de 3 1 2 0 0
towerstream.com 0 0 0 0 0
doi.gov 6 1 0 3 2
ctc.biz 1 1 0 0 0
zynga.com 2 1 0 0 0
forums.zynga.com 0 0 0 0 0
m.mafiawars.com 0 0 0 0 0
q9.com 0 1 0 0 0
phpbb.de 0 1 0 0 0
filetransferconsulting.com 2 1 0 0 0
noticias.juridicas.com 0 1 0 0 0
online.no 0 1 0 0 0
knowledgeit.co.uk 0 1 0 0 0
fasthosts.co.uk 0 1 0 0 0
nominum.com 2 1 0 0 0
quonix.net 3 1 0 0 0
bluecoat.com 2 1 0 0 0
globalconnect.dk 0 1 0 0 0
cira.ca 1 1 0 0 0
dedic.com.br 0 1 0 0 0
ateliersnowflake.com 2 1 0 0 0
comodo.com 0 1 0 0 0
lanwan.fi 0 1 0 0 0
intuix.com 1 0 0 0 0
domaindiscount24.com 0 1 0 0 0
stonesoft.com 0 2 0 0 0
daum.net 0 1 0 0 0
domicilium.com 0 1 0 0 0
nic.im 0 1 0 0 0
beamartyr.net 1 1 1 0 0
inuits.eu 0 1 0 0 0
colt.net 0 1 0 0 0
qwest.com 0 1 1 0 0
she.net 0 1 0 0 0
nuevasync.com 0 1 0 0 0
wtrade.com 4 1 0 0 0
minoritydealers.com 0 1 0 0 0
ipv6.es 3 1 0 0 0
suse.org 0 0 0 0 0
broeltal.de 1 1 1 0 0
memset.com 0 2 0 0 0
kfz.net 0 1 0 0 0
mcgill.ca 0 1 0 0 0
lanets.ca 2 1 0 0 0
unlu.edu.ar 2 1 0 0 0
sandvine.com 4 1 0 0 0
tsnet.it 1 1 0 0 0
pdms.com 0 1 0 0 0
grin.com 1 1 0 0 0
mtv3.fi 3 1 0 0 0
iltalehti.fi 3 1 1 0 0
grz.at 2 1 0 0 0
proofpoint.com 2 1 2 0 0
krystal.co.uk 0 1 0 0 0
umd.edu 0 1 0 0 0
isoc.se 2 1 1 0 0
cbn.net.id 5 1 0 0 0
epfl.ch 2 1 0 0 0
naver.com 0 1 0 0 0
orange-business.com 0 1 0 0 0
view.atdmt.com 0 0 0 0 0
colliertech.org 3 1 0 0 0
IronNails.com 0 0 0 0 0
IronNails.se 1 1 0 0 0
level365.com 2 1 0 0 0
ultracopier.first-world.info 0 1 0 0 0
orbitdiensten.com 0 0 0 0 0
onr.com 2 1 0 0 0
brookdalecc.edu 0 1 0 0 0
qut.edu.au 0 1 0 0 0
so-net.ne.jp 0 1 0 0 0
sctv.vnnic.net 0 0 0 0 0
jp.apan.net 4 1 2 0 0
supranet.net 3 1 3 0 0
niedersachsen.de 1 1 0 0 0
accelerateddesign.com 7 1 0 0 0
di.unito.it 0 1 0 0 0
pokeritieto.com 0 1 0 0 0
initialdraft.com 2 1 0 0 0
madonnaradio.com 0 0 0 0 0
najdi.si 1 2 0 0 0
freelancersunion.org 0 1 0 0 0
xadmi.pl 1 1 0 0 0
antixlabs.com 2 1 2 0 0
uni-koeln.de 1 1 0 0 0
checkpoint.com 0 1 0 0 0
anevia.com 0 1 0 0 0
reading.ac.uk 3 1 2 0 0
genua.de 0 1 0 0 0
mri.co.jp 0 1 0 0 0
coyotepoint.com 2 1 0 0 0
telecomputing.no 0 1 0 0 0
edbergogroup.com 0 1 0 0 0
afilias.info 5 1 0 2 2
info.info 5 1 0 2 2
inregistry.in 0 1 0 0 0
chinaseite.de 0 1 0 0 0
dot.gov 2 2 0 0 0
uscable.com 0 1 0 0 0
satec.es 2 1 0 0 0
tarad.com 0 1 0 0 0
neterra.net 0 1 0 0 0
azadnet.net 0 1 0 0 0
qxip.net 2 1 0 0 0
cysols.com 1 1 1 0 0
menandmice.com 0 1 1 0 0
dimetel.uc.edu.ve 0 1 0 0 0
fibernetservers.com 2 1 0 0 0
telefonica.com 0 1 0 0 0
zon.pt 0 1 0 0 0
fresno.gov 0 1 0 0 0
exceliance.fr 3 1 0 0 0
portunity.de 2 1 0 0 0
dpf.gov.br 2 1 0 2 1
espritxb.nl 0 1 0 0 0
motive.com 0 1 0 0 0
kvh.co.jp 0 1 0 0 0
map.nc4u.jp 0 0 0 0 0
kanazawa-u.ac.jp 1 1 0 0 0
dhs.gov 0 2 0 2 2
nic.ua 2 1 0 0 0
redstone.com 0 1 0 0 0
gov.bc.ca 0 2 0 0 0
nzpost.co.nz 0 1 0 0 0
webair.com 0 1 0 0 0
microsoft.com 0 3 0 0 0
imperial.ac.uk 3 2 4 2 2
home.pl 3 0 0 0 0
af.mil 0 2 0 0 0
navy.mil 0 2 0 0 0
defense.gov 0 2 0 0 0
zte.com.cn 0 0 0 0 0
wwwen.zte.com.cn 0 0 0 0 0
nephos6.com 0 1 0 0 0
dol.gov 0 2 0 4 6
nas.nasa.gov 2 1 0 0 0
km.nasa.gov 0 2 0 3 3
apod.eos.nasa.gov 0 1 0 0 0
earthobservatory.eos.nasa.gov 0 0 0 0 0
caib.nasa.gov 0 2 0 1 1
energy.gov 0 1 0 3 2
lst.se 3 1 4 2 2
lansstyrelsen.se 2 1 4 2 2
textalk.se 0 1 0 0 0
ncta.com 4 1 0 0 0
udg.mx 0 1 0 0 0
uni-erlangen.de 0 1 3 0 0
uni-erlangen.org 0 1 3 0 0
offerbox.com 2 2 0 0 0
ote.gr 0 1 0 0 0
bitcanal.pt 3 1 0 0 0
radware.com 1 1 0 0 0
wiscnet.net 0 0 0 0 0
newhost.ro 0 1 0 0 0
nps.gov 0 1 0 4 0
intelishift.com 2 1 0 0 0
fiu.edu 0 1 0 0 0
vcigp.com 2 1 0 0 0
rohitab.com 5 1 1 0 0
internet4you.com 0 1 1 0 0
ucf.org 2 1 1 0 0
vancouver-webpages.com 1 0 1 0 0
calyptix.com 1 1 0 0 0
webfusion.co.uk 0 1 0 0 0
cnn.com 0 2 0 0 0
alkmaar.nl 0 1 0 0 0
metu.edu.tr 2 1 0 0 0
blackberry.com 0 2 0 0 0
almavivaitalia.it 0 1 0 0 0
vc3.com 0 1 0 0 0
promptlink.com 4 1 0 0 0
skymarket.co.uk 2 1 1 0 0
netregistry.com.au 3 1 0 0 0
ru 0 1 0 0 0
bit.ly 2 4 0 0 0
nist.gov 1 1 0 2 2
mobily.com.sa 0 1 0 0 0
parc.com 0 1 0 0 0
soitron.com 3 1 0 0 0
soitron.sk 3 1 0 0 0
europa.eu 2 2 0 0 0
gip.com 0 1 0 0 0
telus.com 0 1 0 0 0
nec.com 0 1 0 0 0
mozilla.jp 0 3 0 0 0
media.hiroshima-u.ac.jp 0 1 0 0 0
fxmfg.co.jp 2 1 0 0 0
tamagawa.jp 0 0 0 2 2
tamagawa.ac.jp 0 0 0 0 0
mfeed.ad.jp 3 1 0 0 0
mfeed.co.jp 3 1 0 0 0
jpnap.net 3 1 0 0 0
jst.mfeed.ad.jp 3 1 0 0 0
aoyama.ac.jp 2 1 0 0 0
aoyamagakuin.jp 2 1 0 0 0

Leave a Comment

A day of random distractions tops itself

I had just posted this note to twitter: “I wish I knew ahead of time the days I need to just write off“. The world did not let me down after that. This is the story of the next hour.

It started with me thinking: “What, world, do you have in-store for my next distraction?”

Wes rolls the dice and crosses his fingers for something easy. Like French Fries.

Wes rolls a 72 and consults the random-event chart: A snake

Oh, wait… That’s not so bad! We get snakes around here all the time (we do live next to a field after all). Wait a minute… Where is the snake?

Wes rolls the dice again and hopes for “still in the field”

Wes rolls a 54: On the roof

On the roof? On the roof? What, am I in a game of madlibs or something? Wes goes to grab the ladder and a curved stick to try and pull it out from under the eaves. He returns with the ladder, climbs up to roof-level and looks for the snake. No snake. Uh-oh, where has it gone?

Wes rolls the dice, but gives up hoping for something good.

Wes rolls a 28: Under the tiles

Um… Snakey? That doesn’t seem safe. It’s 75 today and the tiles are hot for me to touch, let alone an animal as sensitive to heat as you. What? Oh, you’re still crawling further? Ok… I’ll give up for a bit then. I’ll check back on you in a few to see if you’ve come to a place I can help you. Wes does a bit of random yard work and tries to wait the distraction out.

Wes rolls the dice again. He deliberately avoids making direct eye contact with the dice. He knows its going to be snake eyes, after all.

Roll #51: Clamber in the gutter

Oh, finally. At last the snake has dropped out from under the tiles into the gutter. Now I can get it off the roof where it’s safe. Wes climbs the ladder and peers into the gutter.

Just as his eyes reach gutter-level again, the dice down below roll by themselves. Twice.

Roll #93: The snake is indeed in the gutter.
Roll #94: Wrapped tightly around a rat.

A bit of warning would have been nice, snakey. I mean… I nearly fell. You seem to have done a nice job on the rat though. Very impressive how tightly you can squeeze it. Thanks, by the way, in case I forget to mention it later when this adventure is all said and done.

Listen, I still want to get you off the hot roof. Now, I know how good snakes are at eating things bigger than themselves, but you’re not a full grown snake and that is, um, a bit bigger than I think you can handle. So, how about we get you down and you can slither away, mmm-kay? You trust me, right?

In the end, I hooked the snake with my make-shift snake hook and lowered it to the ground. It was still clutching the rat. Once on the ground, the snake proceeded to be mildly irritated with me but significantly more hungry than irritated. 30 minutes later the snake had indeed succeeded in consuming the whole rodent and now sits, as I type, in the corner of the courtyard. Digesting.


Yes, I took lots of pictures. No I won’t show you the ones you don’t want to see. But here’s the snake after finishing his meal (note the bulge):

Is it 5:00 yet?
No?
Ah, who cares at this point…

Comments (5)

Death of a Server

Murphy’s law is typically (mis)phrased as “if anything can go wrong, it will”. My new extension to this law (Wes’ law?) will now read: “If anything can go wrong, it will, at the most inconvenient time” because he didn’t take into account the 4th dimension: time.

Roughly two weeks ago I was wandering around the streets of Prague, CZ when I noticed that I could no longer log into my server back in the U.S. After checking everything leading up to the system, my wife reported “the power button is still doing nothing and no lights are coming on”. I suspected, at this point, it was the power supply. But unfortunately I still had another week of work travel to complete before I could get back to fix it. (And of course, during part of my away trip, I was planning on using it remotely for a work-related demonstration involving DNSSEC).

Hence my new extension: “… at the most inconvenient time”.

Returning to the U.S.

Upon returning to the physical system I did confirm my guess that it was the power supply that died. (Note: in front of the system is multiple surge protectors and a decent UPS, so it was definitely the supply itself breaking, not a surge coming through the power-lines.) I quickly removed the old supply and replaced it with a nice, shiny, dust-free new one. Click Switch, and still no go. Power went to the mother board but it refused to do anything.

Back to the store for a new mother board. And a CPU. And memory. My original estimate of a $75 replacement power supply was beginning to look very very off. After replacing the motherboard, taking out all the original cards and leaving only the original hard drives in place (ok, the physical case was still the same) I tried booting up again. At least the BIOS bootstrapping began, but the system still failed to boot and the screen showing “no hard drives detected” had to be a bad sign.

That left the 3 hard drives as being still in some state of “bad”. So, booting from a Fedora rescue disk, I attempted to examine how each drive was functioning. One at a time. None of them would even spin up. All 3 exhibited complete failure conditions. Two of three were identically configured drives (from different manufactures) in a RAID1 array to ensure that if either drive died, the data would still remain intact. Redundancy is great until everything fails at once. Murphy doesn’t believe redundancy will help. The third drive contained (daily) backups of the system from the other two, but it had catastrophically failed too. That meant that there was no chance of a complete recovery unless I could get at least one of the drives working.

Salvage Operations


That can’t be good

In a last-ditch effort, I ordered brand-new, exact copies of the dead drives (which themselves were only 5 months old so finding duplicates was easy). If I was lucky, only the controllers on the drives would be dead and the physical drives themselves would still function. When the new duplicate drives arrived, I swapped the good controller on a new drive onto a bad drive and hoped. Unfortunately, the first old drive with the new controller still failed (though at least it sounded like it was trying to spin up this time). I crossed my fingers and moved on to the second bad drive. Unfortunately, even that was a no-go. I even tried various other tricks, being at the true “last resort” stage. It’s amazing the things that people suggest that might fix a dead hard drive, from knocking it on a table (I didn’t try that) to pretending to throw it like a frisbee to putting it in the freezer for 30 minutes.

Eventually, I had to admit defeat and start from my oldest, external backups. Sigh. They were from 4 months ago. Double sigh.

It’s better than nothing at least, but… I lost mail. I lost some pictures. And I lost some reputation points from having run a very solid, rarely down, server for various mailing lists and other services for the last 15+ years.

Looking Forward

So what did I learn from this? The first thing: one set of backups is never enough. And most importantly, at least one set should be electrically isolated from the machine. This means that the very common technique of storing backups on an external USB drive probably isn’t wise either since it’s just as likely that the USB system would spike a few volts to the external drive too.

So what are my future plans? I’ve replaced the system and got it back up and running on the old data, restarted the backup system using the exact same nightly routine. But now I’m going to add an external USB drive to a completely different machine and (r)sync the backups to it on a daily-ish basis. That combined with a backup MX server that keeps mail copies of critical domains for 30 days and off-site backups of truly critical data should suffice right?

Shush Murphy. Yes, I can hear you whispering behind me, but I’m not on speaking terms with you right now.

Comments (2)

Measurable effects of a balun and a ground strap

Ideally, every antenna should have every critical component in place and be tuned perfectly to the frequency you’re operating on. Obviously, however, that’s far removed from “real life”. Most people end up starting with simple antennas and slowly improving them as time marches on.

I’ve certainly taken this track and have been slowing improving my favorite antenna: the Copper “Cactus” J-Pole. This antenna, which is mounted on my roof, performs quite well and was fun to build. But… I never added some critical components: a ground strap for lightening protection and a choke balun. Recently, I finally got around to adding those two missing components.

Rather than do them both at once, I decided to “do the right thing” and add them one at a time so I could measure the differences before and after the addition of each feature to see the effect it had on the antenna’s performance.

The Ground Strap

Everything I’ve read about J-Poles (and super-J-poles, which is really what mine is) says you can ground the base of the antenna directly to a ground rod. So I did just that: using a long length of very-heavy braided wire, I ran a wire from the base of the mounting pipe on the bottom of the antenna down to a ground rod.

The Choke Balun

My choke balun is simply a loop of coax placed right at the feed point of the antenna. A recent QST article showed that it’s actually pretty important to keep the coils parallel to each other when you’re creating them for the VHF and above frequencies. I attempted to do this, but I didn’t do it by wrapping the coax around a hard object. Instead I just taped the coils together, taping them inline one at a time to prevent them from crossing over each other. Which, um, mostly worked. One of these days I may reconstruct it by properly wrapping it around a segment of PVC pipe, which is typically recommended by most people.

The Results

While doing this work, I hooked up an antenna analyzer to the antenna. i did this in the shack, not directly at the base, because that’s where the radio will be connected. I’m worried about things as the radio sees it, not from the birds vantage point that rest on the antenna.

The following “quad-graph” shows the unmodified antenna in the upper left, and the completed antenna in the lower right (with the balun and ground strap connected). The other two corners show the effect of just a single feature in place.

Four graphs showing the antenna analysis

The results of the 4x analysis

Conclusions

The addition of both features resulted in some interesting changes in the graphs.

Adding the ground strap

Adding the ground strap did very odd things to the antenna performance. I actually used it connected for a few months before I got ahold of an analyzer to figure out what was going on. When I finally looked at the graph (bottom left) I was truly shocked. There was a very very odd sinusoidal pattern to the SWR measurement that was super-imposed over the bigger SWR pattern. If your radio signal looked like that, you’d immediately be reaching for a box of electronic parts to build a filter with. But remember, this is an SWR graph! It was this graph that finally spurred me into adding a balun in hopes it would help.

Adding the Balun

Before the addition of the balun, the antenna worked quite well for the upper part of the 2m band with a SWR near 1.5 or so, and the |Z| impedance hovering above and below 50 ohms where it should be. But things looked a little bit worse near the bottom of the 2m band (IE, below 146MHz, where the SWR went up above 2:1 and the |Z| impedance swung more wildly.)

After adding the balun, the SWR flattened out a bit and the |Z| measurement became a bit more stable as well. It’s now below 2:1 throughout the entire 2m band, which is certainly an improvement.

Adding them both together

The good news is that with both the ground strap and the balun in place, things looked better. The SWR remained flat as it had with just the balun, and the ground strap still provided its lighting protection. But the weird extra noise added to the graphs by the ground line still remained. Although, it appears the balun did significantly reduce them.

Unfortunately, the graph with the balun but without the strap looks the best, unfortunately. But I think I’ll leave the ground line connected for obvious reasons (even though I *don’t* live in a high lightning-area).

If anyone can explain to me the oddness of the spiky graph added by the ground line, I’d love to hear a good explanation. I will take the analyzer up to the roof at some point to see if it’s related to the feed line (made of about 100ft of LMR-400). One of these days.

Comments (1)

Internet Rule Number One: Hack on Code, Not on Protocols

Recently I ran into two different cases of other people running other networks that affected me directly in a negative way. Now, we all know that people make mistakes and hardware failures can and will happen. However, in these two cases it wasn’t from “broken code” but rather “broken as designed”. The IETF, a standards organization that I’ve spent some time working with, goes through lots of thought and trouble to design internet protocols so they’re interoperable if you follow the rules. The problem is that sometimes network administrators decide they can “hack around” the way a protocol is supposed to work in order to achieve some goal. Frequently, however, they miss critical aspects of how the protocol is supposed to work or (worse) consciously ignore how protocols are supposed to work because they don’t care about the other networks they break. As long as they’re not breaking their own, of course.

But, to begin my story, I think I need to first highlight the important protocols I’ll be talking about.

The Players

  • IPv4 and IPv6: These are the big players these days when it comes to “things that are going to break on their own soon”. IP addresses are those silly string of numbers that tell the internet who you’re actually sending packets to. Normally, the average Joe doesn’t think about these because the average Joe is lucky enough to type “Domain Names” into their web browser instead of silly strings of numbers. The thing you need to know about IP addresses is that in the near future (possibly by the time I’m done typing if I don’t hurry up) we’ll run out of IPv4 addresses to hand out to things like your cell phones, washing machines and toasters. Unfortunately much of the world isn’t ready for the transition from IPv4 to IPv6, even though it’s been coming for a very very very long time. We all procrastinate, after all.
  • Domain Name System (DNS): The DNS is how we translate those useful names (like pontifications.hardakers.net into silly numbers. Like 67.205.57.145. Or 2001:470:1f00:187::1 (yes, those really are all numbers if you expand your mind a bit).
  • Simple Mail Transfer Protocol (SMTP): This is the guy that is making post offices around the world quiver wondering when their funding from selling postage stamps will dry up. Although this E-Mail thing has been catching on, we’re also finding that more and more people are relying on other services now, like FaceBook, for communicating instead. Interestingly enough, both of my issues below relate to communication. One with E-Mail and one with FaceBook.

    Enter the Era of E-Mail

    Now, E-Mail, it turns out, gets sent around quite a bit. I know that I still get quite a bit of it these days. Unfortunately, some entrepreneurial folks have figured out that the powers from the dark side enable them to use E-Mail for negative reasons as well. I’m speaking of SPAM of course, which currently accounts for about 75% of my E-Mail. [On a side note: I suspect that spam via paper-mail (otherwise known as bulk-advertising) is the one thing keeping most of the world's post offices still in business.]

    Now, unless you’re a protocol geek like I am, you may not know that E-Mail that needs to get sent from one server to the next also uses DNS records that translate human-readable domain names (like hardakers.net) into IP addresses (like 168.140.236.43 and 2001:470:1f00:187::1). So, lets say you need to email youraunt@hardakers.net the first thing that your ISP does when you ask it to deliver a letter is to look up the IP address.

    What’s supposed to happen

    Normally when you look up where to send something you’ll get a few answers, nicely prioritized by where you should try them first:

     # dig +short hardakers.net mx
     5  mail6.hardakers.net.
     10 dns66.hardakers.net.
     20 dnsm3.hardakers.net.
    

    This shows us (or more appropriately, your ISP) to try and send the mail first to mail6.hardakers.net (priority level 5) and if that fails to trydns66.hardakers.net and then finally to dnsm3.hardakers.net. The server then starts by looking up the numeric address for the first one and then trying to talk to it. If one doesn’t work, it should skip to the next one an keep trying till it has no more to try and then will give up. (And by “give up” I mean, “keep trying for another 7 days or so at regular intervals”.)

    So, lets look up the address of the first one. We’ll look up both the IPv4 and the IPv6 address for it:

     # dig +short mail6.hardakers.net A
     # dig +short mail6.hardakers.net AAAA
     2001:470:1f00:187::1
    

    Note how, in this case, there is no IPv4 address (the line ending with an A didn’t get an answer). There is only an IPv6 address (the answer to the line ending with AAAA). This is perfectly legal, and was actually set up this way intentionally. I wanted to be ready for the cometh of IPv6 and was encouraging mail agents around the world to try me first over IPv6. I thought that was rather good of me: exercise early, exercise often (which reminds me: I’m late for my bike ride).

    So, this has been working quite well for many years (I’ve been quite anxious for IPv6 to take off). Not only that, it likely even reduced some of my spam since many spammers don’t try the remaining listed addresses and rarely have IPv6 support. Spammers don’t even pretend to be compliant with anything. Especially morals.

    Enter btconnect, a UK ISP

    BTConnect is (supposedly) the biggest ISP on the other side of the pond from the United States. They decided to add in another rule to the SMTP protocol: every MX record MUST point to a valid address. IE, you couldn’t create a record for bogus.hardakers.net and use it as an MX record without adding an IP address for it. They did this to try and ensure that the remote address was legitimate and then refuse to send it for their customers (folks like you and me sitting at home on couches; they’re just British couches) if it couldn’t do a proper address lookup. But it turns out a lot of people (who now hate BTConnect) were intentionally putting in fake MX records with no matching A record to try and subvert spammers. The end result is that BTConnect clients are unable to send mail to any domains that were fighting spam in this way. I’m not going to argue which side is being legal here. They’re both doing things that are “unintended”.

    But what’s worse is that BTConnect assumes that the whole world is IPv4-based and treated my perfectly legal AAAA-only record mail6.hardakers.net entry as bogus. This prevented an associate from being able to email me (about designing protocols, ironically). Bad Bad BTConnect! (no bone!) You need to get with the game, because the IPv4 game is about over at this point. And stop hacking protocols because you’re affecting your client’s ability to conduct daily business by sending legitimate E-Mail.

    Enter the (new) Era of Facebook

    Facebook (unfortunately, IMHO) is trying to get everyone to communicate with each other solely through their website. The good news is that they’re actually trying to be up on the IPv6 front and even have an IPv6-only version of their website available. (If you can visit successfully it means you and your ISP is IPv6 enabled. But you’re probably not since 99% of the ISPs out there are not yet compliant).

    Now, many people are actually paranoid about deploying IPv6 enabled infrastructure too quickly and often attempt trickery to try and ensure that if some user out there is trying to get to them that they can. Rather than trust a user’s ISP to have correctly set up IPv6, they assume that all other ISPs out there are IPv6 broken even if they might not be. To reword that in simple terms: many places try and intentionally prevent you from reaching them over IPv6. Because they trust IPv4 and “just aren’t sure” about IPv6 yet. Hence the reason you have to go to a different domain name if you want to use IPv6 with Facebook, and they’re default web page (www.facebook.com) isn’t IPv6 compliant.

    Facebook does this IPv4-only hack in a bit more tricky, and DNS-illegal, sort of way. Here’s the nitty gritty details that will make DNS-experts cringe (but most other people won’t catch the problems). First, this all has to do with apps.facebook.com, which is where Facebook sends you to get your virtual hands dirty by tending to your screen through planting green pixels into fields of brown pixels. So, lets see what it takes to look up address records for apps.facebook.com.

     # dig @glb1.facebook.com. apps.facebook.com AAAA
     apps.facebook.com.      30      IN      CNAME   star.facebook.com.
    
     # dig @glb1.facebook.com. apps.facebook.com A
     apps.facebook.com.      30      IN      A       66.220.153.28
    

    Now, the DNS specialists here will immediately point out that what you see above is illegal in the DNS protocol world. My co-worker, who has memorized the RFCs better than I have, nicely extracted the right quote about this:

     "If a CNAME RR is present at a node, no other data should be 
     present; this ensures that the data for a canonical name and its aliases
     cannot be different.  This rule also insures that a cached CNAME can be
     used without checking with an authoritative server for other RR types."
    

    To reword that in simple terms: you can’t have a CNAME and an A name existing for the same record (even for different query types, like A and AAAA).

    Now… Did this break something? Yes.

    First, I found one web-browser/DNS-stack combination that refused to go further. The instant it got a serious error with a record while searching for an IPv6 address, it gave up and didn’t try to find an IPv4 address. Not exactly wise either, but not illegal. Ironically, this was the exact sort of thing that the Facebook DNS hackery is trying to prevent: the customer not getting to the site. And some green electronic crops probably turned brown and withered. Electronically.

    This DNS hackery also causes the most popular recursive name server in use today to be equally as annoyed with AAAA queries:

     # dig apps.facebook.com aaaa
     ...
     ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31717
    

    Update: 2011-01-26

    They seem to have now realized that the above breaks thing. So they’ve started doing different illegal things in hopes that it would magically start working.

    # dig @ns4.facebook.com. apps.facebook.com ns
    ;; AUTHORITY SECTION:
    apps.facebook.com.      30      IN      NS      glb2.facebook.com.
    apps.facebook.com.      30      IN      NS      glb1.facebook.com.
    
    # dig @glb2.facebook.com. apps.facebook.com ns
    ;; ANSWER SECTION:
    apps.facebook.com.      30      IN      A       69.63.189.62
    

    Yes, you read that right: query for a NS record to ensure it’s accurate and you get back an A record instead. That’s what you really wanted, right?

    Conclusions

    The biggest conclusion here: if you’re going to hack, do so to speed things up. Do so to make things better. Do so to make things more interoperable. But do not assume that you’ve considered all of the corner cases with a protocol when you decide to modify the rules. The results will likely be less customers reaching your service, not more.

    Oh. And IPv6 is coming. Please get ready. But without the hackery.

Comments (2)

On the Nature of Interacting Antennas

As some of my friends know, I enjoy building antennas in my free time (whenever that occurs) for my Amateur Radio hobby (which keeps me from being bored during my free time).

A while back I built a 2m Copper “Super-J-Pole” antenna which I attached to my chimney and use on a daily basis. Then a friend of mine (AD6IL) was kind enough to supply me with a 2m square loop for horizontal work which I attached at the bottom of the J-pole (for lack of a better place at the time). AD6IL and I were debating how much of a problem it would be to have them so close together and I figured I’d give it a try and see how much they interacted. If nothing else I’d learn from it. After putting them both up they both performed adequately though I was pretty sure I could detect a performance difference in the J-pole after adding the square loop to its base.

Recently another friend (K9RTY) loaned me his antenna analyser and I measured the performance of both antennas as they were mounted together and then moved the square loop to the opposite corner of the chimney and remeasured them both again. The following 4 graphs show the results of these tests.

For those without much background in antenna theory the goal here is to achieve a SWR of 1 (impossible), which is shown in red and is reflected in the left-hand Y-axis. The reactance should ideally be 0 and the impedance and resistance should be 50 ohms (in this case at least) and are all reflected numerically in the right-hand Y-axis. No antenna is perfect, however, but the goal is to shoot for getting as close as possible to ideal near the frequency where you want to use the antenna. In my case, the desired center frequency of the J-pole is at 147.000MHz and the desired center frequency of the square loop is at 144.200MHz.

2m Super-J Pole Graphs

These two graphs show the measurements taken on the Super J-Pole before and after the separation.

2m Square Loop Graphs

These two graphs show the measurements taken on the 2m Square Loop before and after the separation.

Conclusions

It is, of course, a no-duh that antennas affect each other when placed in proximity to each other. But these graphs show this interaction clearly in a real-world scenario.

For the J-Pole, the SWR (the poor-mans antenna measurement figure) has definitely dropped to a better range in general. The reactance has also improved, which means the antenna is closer to resonance which is the ultimate goal of any antenna (especially for transmitting). The square loop shows similar (even slighter bigger) improvements.

On the Air

Hooking them up to a radio and talking with friends (WB6ISO at ~20mi away and K6ERF at ~40mi away) I was told that my signals were definitely improved by an S-unit or two since the previous conversations. Of course, on-air measurements rely on constantly changing propegation conditions and thus require many more data points for a valid comparison but in this case they’re backed up by graphs that likely indicate the small sampling of on-the-air measurements were likely accurate.

Comments (1)

The Davis Enterprise: The Anti-Green Newspaper?

A while ago we cancelled our Davis Enterprise subscription. Not because it’s not a good paper (it is) or becuase it’s biased (it is) but because we didn’t read it ehough to justify the energy costs of producing and recycling it.

But I would like to continue to read their content electronically where I could (hopefully) search for what I wanted to read more easily and with a greener conscious. Logging into their website I found it’s against the rules for online-only accounts to live in the city of Davis’ zip codes (95616, 95617, 95618, 95695, 95776). That’s right: if you live in Davis or Woodland you have to kill trees to read the enterprise even if you don’t want to. And here I thought we were a progressive city.

And one more silly: the three month subscription for the electronic edition costs more than the paper+electronic edition. Riddle me the logic on that one, toad town.

Comments (2)

In which Wes rewrites the tax code


I should preface this article by stating that just like I’m not a lawyer or a doctor, I’m also not an economist. In fact I’ve never had even a single class on the subject. But sometimes I think the best ideas frequently come from those without knowledge of a subject that willing to ignore the rules they know nothing about. For that reason this article should be worth its weight in gold.

I’ve thought for a long time, like most have, that the U.S. tax system is way too complex and frequently unfair. It’s done nothing but grow in complexity as special interests have pushed in their supplemental taxes or cuts.

I have a proposal. One the would change the system from a complex burden to a simple process leaving you sleeping peaceful on April 14th.

Goals

First off, when embarking on the goal to change the world, you must clearly define what it is you want to accomplish. In a philosophy class in college I learned that we give up rights (like vengeance and keeping all the monetary rewards we reap) to the government in exchange for protection, services, etc. Thus, I understand that we must pay the government something or else we wouldn’t have one. And I do depend on them for at least some things. No, no… aside from lines to wait in at the DMV.

So, what are the goals of a good tax system then?

  1. The government needs money. Unfortunately, from us.
  2. Collection should be fair.
  3. Collection shouldn’t be complex.

That’s it. That’s all that is needed. An important part about my proposed change must be understood though: I’m only setting out to change the complexity. Yes, I’d love to balance the budget and change how things are spent and how much we pay as well but that’s out of scope. This time at least. You have to make one change at a time to ensure yourself that the success or failure was the result of just that change. So, for now, the net income of the government must remain the same before and after I rewrite the tax code.

The Proposal

My solution to the complexity mess is simple and straight forward: completely get rid of income tax. Goodbye. No more 1040 forms. No more April 14th all-nighters. No more file folders of fading or thermically-blackened receipts. Think of all the time you’ve just saved!

But obviously we need to replace the government’s garnishment of our wages with some other income source. That, in my opinion, should entirely be based on sales taxes. All forms of government would get a chunk of the sales tax percentage (just like states and counties already do). Now, I won’t lie to you: it’s gonna be high! But your income will be higher too.

The sales tax should be flat. Adding odd burdens from taxing things at different rates isn’t a good way to reduce complexity. So we won’t.

What gets taxed?

To be a fair system, everything should be taxed except the essentials of living: food, shelter and clothing.

Food from a store should still remain untaxed. It’s a basic necessity of life and people that are struggling and can afford little else are the least taxed, which is the point of the tax brackets we have today. To keep complexity low, though, lets not reinstitute that whole snack-tax thing. Food is food; from caviare to potatoes.

Services need to be taxed too (all of them since anything else is unfair). E.G. car washes, repairs, lawyers, dentists, … A good percentage of business is not product related.

But to obtain a shelter which is not taxed in our fair system we should exclude housing rental services from taxation. Home purchases would remain affected by sales tax though.

I’ve battled with the notion of taxing clothing. The winning side of my breain decided that it’s best to leave clothing purchases being taxed. The cost of clothing deviates wildly and cheap clothing (thus with low taxes) is not hard to find so I don’t believe it would be unfair to the immensely poor.

The Gains

The goal of this was to reduce complexity in the system and in your life. I think you’ll agree this would succeed. The biggest gain is simply time. As my wise co-worker often advises me: “Time is our most valuable asset”. She’s right. Most services are built on this model: paying for someone else to do your task will save you the time required to do that job (be it fixing a leak, walking the dog, cooking, or mowing the lawn).

The Losses

People often worry about job losses associated with major changes. What will all the IRS employees do when the complexity loss eliminates their jobs?

They’re already trained accountants specializing in taxes, so the solution is to leave them in an area they understand. Some staff will still need to review and, yes, perform audits of sales tax revenue. But the rest of them should be involved in helping businesses convert to a sales tax based system and after it is running smoothly they can still offer free advice and accounting services. Imagine the IRS being helpful before you run into problems rather than afterwards.

Yes, we could also shrink the government taxation overhead, but remember my proposal is only here to change the collection process and not quantities or budgets.

Everyone Wins

Think about it. It saves frustration, paperwork, and most importantly: your time. How much productivity could you add to your life with the amount of time you spend doing taxes every year?

Who’s with me?

Comments (3)

The Dinner

So tonight (mostly joking) I asked my kids: “So… are you going to make dinner tonight or should I?”

The answer I got was somewhat unexpected: “Seriously? Can we?”

“Err…. Um…. Sure. But it has to be a meal of healthy choices.”

Your Kids Will Be Tested In Life

So you might as well make it on your terms. In this case, the test was not dangerous (well, I had to eat it too and I have to say I was a bit nervous). So the questions were: can they make the right choices? Do they know the requirements of a healthy meal in the first place? Sure, we’ve tried to instil an understanding of protein, carbohydrates, fruits, vegetables, etc. But the real bottom-of-the-line-question: did they hear it?

It was better to find out tonight than years from now. Then when they ignore the advice sometime later in college you can hope they’ll pick it back up again a few years later.

The Happy Meal

I wasn’t allowed into the kitchen while the meal was being prepared. About a half-an-hour in (which was right about our normal dinner time) I was asked if I would authorize the use of cookie cutters. My first sign that maybe our little whispers of health had not been heard. It took another half an hour before I was allowed to come to the table.

The results would take a lot of words to describe, so I’ll use pictures instead:

Cheese, Apples and Ghrams

Cheese, Apples and Ghrams


Peanut Butter Animal Shapes

Peanut Butter Animal Shapes


Buttered Animal Shaped Bread

Buttered Animal Shaped Bread


Apples, Celery, and Carrots

Apples, Celery, and Carrots

I think they passed! They had representations of pretty much everything important. Now, mind you I don’t know how old the celery was that they found (but I ate it anyway). And they had actually gotten the single, very-small, carrot from the garden. I am hoping it was washed well. All said and done, my kids get an A+ for effort, an A+ for presentation and an A+ for content.

Dinner Conversation

“What did you cut up the fruit and vegetables with?”

“A knife”

“errr…. a sharp knife?”

“No, a normal one” (pointing to a butter knife).

“You cut up a raw carrot and celery with a butter knife???” (they were thin slices!)

“Yep”

Grade Change: A++ for effort!

I can’t believe I didn’t take a picture of the bowl of “left over bread pieces” though. Picture it in your mind: take a piece of bread, cut an animal-shape out of it using a cookie cutter… What do you do with the rest? Put it in a bowl of course!

Comments (5)