Yearly Archives: 2019

Updating Django 1.8 on Python 2.7 to Django 1.11 on Python 3.6

I recently updated a few Django apps from Python 2.7 to Python 3.6 and while going from Django 1.8 to Django 1.11. This is mainly for my own reference, but others may find it useful.

Move the existing virtualenv (this will break the app):

mv ~/.virtualenvs/wbstats ~/.virtualenvs/wbstats2

Create a new virtualenv:

mkvirtualenv -p /usr/bin/python3 wbstats

At this point it might be a good idea to update the version of Django in requirements.txt. For WbStats it moved from 1.8 to 1.11.

Pip install the requirements.txt:

pip install -f requirements.txt

Edit settings.py and make sure there is a TEMPLATES section, which replaces TEMPLATE_DIRS. In addition, TEMPLATE_CONTEXT_PROCESSORS no longer exists. Basically anything with TEMPLATE_ has been rolled into the TEMPLATES section.

You may need to change some imports, i.e.

from models import *

may become:

from stats.models import *

The URLs will probably choke because strings are no longer allowed. Do not import “patterns”. Urlpatterns now is an array: urlpatterns = [url(…), url(…)]

'stats.views.index'

may need to be changed to:

from stats import views
views.index

After imports are fixed, the next thing will probably be fixing print statements.

Urlparse has been moved.

import urlparse

becomes:

import urllib.parse as urlparse

If you updated Django you’ll probably need to run migrations.

python manage.py migrate

Admin commands will need to be ported:

     option_list = BaseCommand.option_list + (make_option('-d', '--domain', default=None, action='store', type='string', dest='domain', help='The name of a domain to create or update.'),)

Becomes:

     def add_arguments(self, parser):
          parser.add_argument('-d', '--domain', default=None, action='store', dest='domain', help='The name of a domain to create or update.')

The parser arguments are mostly the same, but  references to “type=’int'” should be changed “type=int” without quotes, otherwise you’ll get ValueError: ‘int’ is not callable.

There’s some code in some of the admin commands I’ve written that changes the codec for stdout:

UTF8Writer = codecs.getwriter(‘utf8’)
sys.stdout = UTF8Writer(sys.stdout)

This will NEED to be removed because it causes cryptic TypeError problems saying things must be str and not bytes.

render_to_response needs to change to render because context_instance doesn’t exist.

Blocking Spammy or Malicious IPs with Nginx

Over the years I’ve added a bunch of sites and networks to my IP block list. They’re sources of spam, hack scripts, and traffic that just wastes my time and resources.

Not all of these sites are spam or malicious at this very moment (some had viruses or were otherwise compromised as part of a botnet), it’s just what I’ve found useful to block. The names are optional. I just added comments with what the network looked up as (or why it was blocked).

Here’s what I’ve blocked. To implement this in Nginx, edit the nginx.conf and in the main block add “include blockips.conf” with this file saved as blockips.conf in the same directory.

 

# Every one of these networks has been blocked because they have
# behaved in a spammy, botlike, no-account hackscript way.
# Add this to your /etc/nginx/nginx.conf like so:
# include blockips.conf;
# (assuming it's in the same directory)
deny 27.16.0.0/12; # CHINANET Hubei province network
deny 27.148.0.0/14; # CHINANET FUJIAN PROVINCE NETWORK
deny 27.152.0.0/13; # CHINANET FUJIAN PROVINCE NETWORK
deny 27.184.0.0/13; # CHINANET hebei province network
deny 36.248.0.0/14; # China Unicom Fujian Province Network
deny 39.64.0.0/11; # China Unicom Shandong province network
deny 42.224.0.0/12; # China Unicom Henan province network
deny 46.105.127.195; # OVH SAS - For spamming searches on WbSrch.
deny 50.21.178.17; # >30k spam queries from securedservers.net
deny 50.21.178.18; # >15k spam queries from securedservers.net
deny 58.20.0.0/16; # China Unicom HuNan province network
deny 58.22.0.0/15; # China Unicom FuJian province network
deny 58.240.0.0/15; # China Unicom Jiangsu province network
deny 58.248.0.0/13; # China Unicom Guangdong province network
deny 59.56.0.0/14; # CHINANET fujian province network
deny 59.60.0.0/15; # CHINANET fujian province network
deny 60.0.0.0/13; # China Unicom Hebei Province Network
deny 60.10.0.0/16; # China Unicom Hebei Province Network
deny 60.11.0.0/16; # China Unicom Heilongjiang Province Network
deny 60.12.0.0/16; # China Unicom Zhejiang province network
deny 60.168.0.0/13; # CHINANET anhui province network
deny 60.176.0.0/12; # CHINANET Zhejiang province network
deny 60.195.248.0/21; # Beijing Bitone United Networks Technology Service Co., Ltd.
deny 60.220.0.0/14; # China Unicom Shanxi Province Network
deny 60.252.192.0/19; # Daqing Zhongji Petroleum Communication
deny 61.140.0.0/14; # CHINANET Guangdong province network
deny 61.144.0.0/15; # CHINANET Guangdong province network
deny 61.147.123.0/24; # CHINANET jiangsu province network
deny 61.235.0.0/16; # China TieTong Telecommunications Corporation
deny 101.16.0.0/12; # China Unicom Hebei province network
deny 101.64.0.0/13; # UNICOM ZheJiang Province Network
deny 101.224.0.0/13; # CHINANET SHANGHAI PROVINCE NETWORK
deny 104.238.93.98; # GoDaddy site excitesubmit.com/excitesubmit.net/excitesubmit.org spamming domain searches (perhaps acting like they're a site submit service)
deny 110.80.0.0/13; # CHINANET FUJIAN PROVINCE NETWORK
deny 110.88.0.0/14; # CHINANET FUJIAN PROVINCE NETWORK
deny 110.152.0.0/14; # CHINANET xinjiang province network
deny 110.176.0.0/13; # CHINANET SHANXI PROVINCE NETWORK
deny 110.228.0.0/14; # China Unicom Hebei province network
deny 110.240.0.0/12; # China Unicom Hebei province network
deny 111.0.0.0/10; # China Mobile Communications Corporation
deny 112.0.0.0/10; # China Mobile Communications Corporation
deny 112.111.0.0/16; # China Unicom Fujian Province Network
deny 111.128.0.0/11; # North Star Information Hi.tech Ltd. Co. (China)
deny 112.224.0.0/11; # China Unicom Shandong province networ
deny 113.64.0.0/11; # CHINANET Guangdong province network
deny 113.96.0.0/12; # CHINANET Guangdong province network
deny 113.240.0.0/13; # CHINANET HUNAN PROVINCE NETWORK
deny 115.48.0.0/12; # China Unicom Henan province network
deny 114.80.0.0/16; # CHINANET SHANGHAI PROVINCE NETWORK
deny 115.192.0.0/11; # CHINANET Zhejiang province network
deny 115.224.0.0/12; # CHINANET Zhejiang province network
deny 166.62.101.30; # >50k Spam queries from secureserver.net.
deny 117.24.0.0/13; # CHINANET Fujian province network
deny 117.32.0.0/13; # CHINANET Shanxi(SN) province network
deny 117.128.0.0/10; # China Mobile Communications Corporation
deny 118.186.0.0/15; # Building D, No.2 Shangdi Xinxi Road Pioneering Park,
deny 118.213.0.0/16; # CHINANET Qinghai Province Network
deny 119.4.0.0/14; # China Unicom SiChuan province network
deny 119.39.0.0/16; # China Unicom HuNan province network
deny 119.48.0.0/13; # China Unicom Jilin province network
deny 119.233.128.0/17; # Xiamen Broadcasting & TV Network Transmit Co.Ltd
deny 119.248.0.0/14; # China Unicom Heibei Province Network
deny 120.0.0.0/12; # China Unicom Heibei Province Network
deny 120.32.0.0/13; # CHINANET FUJIAN PROVINCE NETWORK
deny 120.40.0.0/14; # CHINANET FUJIAN PROVINCE NETWORK
deny 120.192.0.0/10; # China Mobile Communications Corporation
deny 121.204.0.0/14; # CHINANET Fujian province network
deny 121.224.0.0/12; # CHINANET jiangsu province network
deny 123.4.0.0/14; # China Unicom Henan province network
deny 123.128.0.0/13; # China Unicom Shandong Province Network
deny 123.168.0.0/14; # CHINANET SHANDONG PROVINCE NETWORK
deny 124.128.0.0/13; # China Unicom Shandong province network
deny 125.88.0.0/13; # CHINANET Guangdong province network
deny 153.3.0.0/16; # China Unicom Jiangsu province network
deny 175.0.0.0/12; # CHINANET HUNAN PROVINCE NETWORK
deny 175.42.0.0/15; # China Unicom Fujian Province Network
deny 175.44.0.0/16; # China Unicom Fujian Province Network
deny 180.76.0.0/16; # Beijing Baidu Netcom Science and Technology Co., Ltd.
deny 180.96.0.0/11; # Chinanet Jiangsu Province Network
deny 182.128.0.0/12; # CHINANET Sichuan province network
deny 183.64.0.0/13; # CHINANET Chongqing Province Network
deny 183.128.0.0/11; # CHINANET Zhejiang province network
deny 183.192.0.0/10; # China Mobile Communications Corporation
deny 202.228.204.204; # server.hiraishoten.net
deny 210.73.208.0/20; # Beijing Blue Ocean information technology co.LTD
deny 218.6.0.0/17; # CHINANET fujian province network
deny 218.56.0.0/15; # China Unicom Shandong province network
deny 218.80.0.0/16; # CHINANET Shanghai province network
deny 218.204.0.0/14; # China Mobile Communications Corporation
deny 219.128.0.0/13; # CHINANET Guangdong province network
deny 220.160.0.0/15; # CHINANET Fujian province network
deny 220.168.0.0/15; # CHINANET Hunan province network
deny 221.0.0.0/15; # China Unicom Shandong province network
deny 221.10.0.0/16; # China Unicom SiChuan province network
deny 221.224.0.0/13; # CHINANET jiangsu province network
deny 222.76.0.0/14; # CHINANET fujian province network
deny 222.136.0.0/13; # China Unicom Henan province network
deny 222.176.0.0/13; # CHINANET Chongqing province network
deny 222.240.0.0/13; # CHINANET Hunan province network
deny 223.8.0.0/13; # CHINANET SHANXI PROVINCE NETWORK
deny 223.64.0.0/11; # China Mobile Communications Corporation
deny 222.84.0.0/16; # CHINANET Guangxi province network

PageRank Lives: OpenPageRank by Domcop

In the early days of Google, PageRank was a very important piece of information about a website. It let you know the general authority level of a site and how well it would tend to rank against similar content on another site. The PageRank toolbar, released in 2000, became an important tool in the SEO world.

Over time, Google de-emphasized PageRank, partly because people were gaming the system and partly because they switched to emphasizing other factors when ranking a site. They eventually stopped updating PageRank data and in 2016, they finally shut off the toolbar.

There have been other metrics created, such as Domain Authority by Moz, but nothing has quite been a proper replacement.

Now that the PageRank patent has expired, companies are free to implement their own versions. Domcop has done just that, using the Common Crawl data to calculate PageRank for the top 10 million domains on the web.

You can use it here: https://www.domcop.com/openpagerank/

As of the time of this post, Xangis.com has an OpenPageRank of 3.40.

Top-Level Domain Popularity

In a crawl of just over 32 million pages, this is the number of domains that I discovered for each top-level domain (TLD). The “Known Domains” is the number of domains with that extension that were found in links, while the “Crawled Domains” is the number of domains where pages were retrieved from.

Extension Known Domains Crawled Domains
.aaa 5 2
.aarp 1 0
.abarth 1 1
.abb 9 1
.abbott 74 32
.abbvie 0 0
.abc 9 1
.able 0 0
.abogado 82 47
.abudhabi 12 2
.ac 1404 540
.academy 9638 6340
.accenture 1 0
.accountant 550 347
.accountants 611 417
.aco 6 6
.actor 682 444
.ad 726 143
.adac 1 1
.ads 29 0
.adult 4438 3832
.ae 15743 8579
.aeg 1 1
.aero 4000 2179
.aetna 0 0
.af 1279 435
.afamilycompany 0 0
.afl 13 8
.africa 305 152
.ag 2497 1325
.agakhan 0 0
.agency 14562 9300
.ai 4685 2083
.aig 1 0
.aigo 0 0
.airbus 0 0
.airforce 101 60
.airtel 0 0
.akdn 0 0
.al 3944 1224
.alfaromeo 0 0
.alibaba 0 0
.alipay 0 0
.allfinanz 1 0
.allstate 0 0
.ally 1 0
.alsace 85 43
.alstom 0 0
.am 8687 3314
.americanexpress 0 0
.americanfamily 0 0
.amex 4 0
.amfam 0 0
.amica 3 1
.amsterdam 15930 13438
.analytics 3 0
.android 2 0
.anquan 0 0
.anz 1 0
.ao 1051 541
.aol 1 0
.apartments 1395 963
.app 3397 1067
.apple 13 0
.aq 60 31
.aquarelle 13 12
.ar 290350 193365
.arab 0 0
.aramco 2 1
.archi 934 633
.army 384 241
.arpa 2 0
.art 1305 467
.arte 4 1
.as 2027 1219
.asda 1 0
.asia 87348 48153
.associates 959 693
.at 482762 283611
.athleta 0 0
.attorney 3192 2492
.au 676566 422310
.auction 1032 694
.audi 146 53
.audible 1 1
.audio 2662 1675
.auspost 6 3
.author 3 0
.auto 143 69
.autos 2 0
.avianca 0 0
.aw 209 141
.aws 30 2
.ax 627 343
.axa 9 4
.az 9198 2090
.azure 3 1
.ba 8972 5858
.baby 10 2
.baidu 3 0
.banamex 0 0
.bananarepublic 0 0
.band 2997 1914
.bank 493 277
.bar 2210 1382
.barcelona 144 56
.barclaycard 9 3
.barclays 21 4
.barefoot 0 0
.bargains 895 597
.baseball 0 0
.basketball 36 15
.bauhaus 1 1
.bayern 267 168
.bb 362 225
.bbc 4 0
.bbt 2 0
.bbva 1 1
.bcg 0 0
.bcn 3 0
.bd 3134 986
.be 394979 286735
.beats 1 0
.beauty 4 0
.beer 315 160
.bentley 1 0
.berlin 15650 9387
.best 249 135
.bestbuy 1 0
.bet 627 229
.bf 386 175
.bg 26043 3364
.bh 777 336
.bharti 0 0
.bi 379 157
.bible 113 50
.bid 2039 539
.bike 6624 4226
.bing 2 1
.bingo 428 240
.bio 6462 4167
.biz 966268 563218
.bj 176 75
.black 1335 904
.blackfriday 505 325
.blockbuster 0 0
.blog 5342 1900
.bloomberg 73 0
.blue 4297 2433
.bm 1284 747
.bms 1 1
.bmw 7 2
.bn 375 137
.bnl 0 0
.bnpparibas 41 20
.bo 3129 2072
.boats 3 2
.boehringer 0 0
.bofa 1 0
.bom 3 1
.bond 1 1
.boo 2 0
.book 2 0
.booking 3 0
.bosch 0 0
.bostik 1 0
.boston 16 6
.bot 55 22
.boutique 3123 1923
.box 26 0
.br 661574 387097
.bradesco 37 20
.bridgestone 3 1
.broadway 0 0
.broker 51 29
.brother 5 2
.brussels 568 182
.bs 209 80
.bt 488 220
.budapest 1 1
.bugatti 4 1
.build 217 137
.builders 1551 1086
.business 4597 3145
.buy 1 0
.buzz 1232 920
.bv 2 0
.bw 582 259
.by 20281 2547
.bz 6646 3668
.bzh 640 310
.ca 494823 303073
.cab 103 18
.cafe 3211 2111
.cal 5 0
.call 9 0
.calvinklein 0 0
.cam 143 34
.camera 1913 1259
.camp 2508 1595
.cancerresearch 1 1
.canon 27 9
.capetown 1731 1270
.capital 2808 1984
.capitalone 2 0
.car 100 36
.caravan 1 1
.cards 1905 1182
.care 5833 4047
.career 14 8
.careers 3172 2019
.cars 103 34
.cartier 1 1
.casa 103 47
.case 0 0
.caseih 0 0
.cash 2524 1701
.casino 1551 999
.cat 30073 8075
.catering 1397 982
.catholic 0 0
.cba 9 0
.cbn 2 1
.cbre 1 0
.cbs 1 0
.cc 109058 39325
.cd 638 243
.ceb 7 1
.center 14026 8734
.ceo 47 18
.cern 19 12
.cf 7736 3354
.cfa 5 1
.cfd 3 1
.cg 114 32
.ch 529953 328052
.chanel 1 1
.channel 1 0
.charity 3 2
.chase 1 0
.chat 2957 1875
.cheap 1275 880
.chintai 1 0
.christmas 684 462
.chrome 2 0
.chrysler 0 0
.church 8726 5577
.ci 1038 447
.cipriani 1 1
.circle 0 0
.cisco 4 0
.citadel 0 0
.citi 3 0
.citic 10 1
.city 8574 5998
.cityeats 0 0
.ck 113 65
.cl 191023 121801
.claims 625 450
.cleaning 891 596
.click 9651 5813
.clinic 2513 1558
.clinique 0 0
.clothing 4731 3183
.cloud 19563 11822
.club 97931 58118
.clubmed 6 3
.cm 1346 494
.cn 265238 56575
.co 384542 252055
.coach 3315 2318
.codes 3058 2344
.coffee 5140 3385
.college 1437 1034
.cologne 1071 499
.com 13873332 7043596
.comcast 1 0
.commbank 0 0
.community 4093 2578
.company 18672 12938
.compare 1 0
.computer 2134 1324
.comsec 0 0
.condos 922 722
.construction 2889 2029
.consulting 8542 5905
.contact 2 0
.contractors 1625 1141
.cooking 21 7
.cookingchannel 0 0
.cool 5408 3315
.coop 5437 2905
.corsica 65 29
.country 86 51
.coupon 1 0
.coupons 600 422
.courses 384 224
.cr 4117 2143
.credit 931 638
.creditcard 305 213
.creditunion 2 1
.cricket 537 329
.crown 3 2
.crs 29 22
.cruise 0 0
.cruises 1138 868
.csc 2 0
.cu 1310 582
.cuisinella 2 1
.cv 485 291
.cw 133 64
.cx 1859 710
.cy 2286 1211
.cymru 2962 1880
.cyou 1 0
.cz 511459 318754
.dabur 1 1
.dad 1 0
.dance 2245 1420
.data 6 0
.date 2654 1153
.dating 1204 813
.datsun 1 1
.day 1 0
.dclk 1 0
.dds 1 0
.de 1549945 947359
.deal 0 0
.dealer 0 0
.deals 3135 2193
.degree 176 97
.delivery 970 619
.dell 0 0
.deloitte 0 0
.delta 2 1
.democrat 260 191
.dental 3232 2110
.dentist 1156 861
.desi 575 403
.design 15331 10090
.dev 893 485
.dhl 9 4
.diamonds 1229 889
.diet 779 544
.digital 8922 5915
.direct 4063 2927
.directory 6229 4730
.discount 1844 1173
.discover 1 0
.dish 0 0
.diy 2 0
.dj 500 268
.dk 343151 280337
.dm 129 64
.dnp 6 2
.do 3578 1635
.docs 2 0
.doctor 522 120
.dodge 0 0
.dog 2630 1763
.domains 2811 1715
.dot 6 0
.download 1848 613
.drive 4 0
.dtv 0 0
.dubai 0 0
.duck 0 0
.dunlop 0 0
.duns 0 0
.dupont 0 0
.durban 832 566
.dvag 10 2
.dvr 0 0
.dz 1767 814
.earth 1840 1318
.eat 1 0
.ec 7957 5105
.eco 135 69
.edeka 8 2
.edu 187599 100044
.education 8609 5628
.ee 35647 22095
.eg 3556 1038
.email 3779 2700
.emerck 0 0
.energy 2445 1643
.engineer 786 516
.engineering 1945 1261
.enterprises 2086 1510
.epson 1 1
.equipment 2667 1857
.er 14 2
.ericsson 0 0
.erni 5 2
.es 503765 286165
.esq 0 0
.estate 3769 2660
.esurance 0 0
.et 576 196
.etisalat 0 0
.eu 419001 235690
.eurovision 1 1
.eus 4185 2282
.events 8968 5898
.everbank 2 1
.exchange 2294 1528
.expert 13573 9239
.exposed 905 701
.express 1490 967
.extraspace 0 0
.fage 8 6
.fail 1112 813
.fairwinds 0 0
.faith 677 339
.family 3265 2487
.fan 23 10
.fans 432 247
.farm 4594 3258
.farmers 1 0
.fashion 2460 1662
.fast 3 0
.fedex 0 0
.feedback 197 78
.ferrari 0 0
.ferrero 0 0
.fi 220758 127408
.fiat 0 0
.fidelity 0 0
.fido 0 0
.film 953 568
.final 2 1
.finance 2168 1493
.financial 1348 929
.fire 4 1
.firestone 0 0
.firmdale 41 1
.fish 578 356
.fishing 26 13
.fit 3189 2207
.fitness 3269 2244
.fj 482 265
.fk 42 13
.flickr 1 0
.flights 808 575
.flir 0 0
.florist 1132 771
.flowers 756 481
.fly 1 0
.fm 12330 8030
.fo 1467 886
.foo 9 0
.food 3 0
.foodnetwork 0 0
.football 1770 1351
.ford 3 0
.forex 21 9
.forsale 1980 1507
.forum 2 0
.foundation 3320 2312
.fox 11 2
.fr 643262 334399
.free 12 0
.fresenius 0 0
.frl 9305 7762
.frogans 1 0
.frontdoor 0 0
.frontier 0 0
.ftr 0 0
.fujitsu 0 0
.fujixerox 0 0
.fun 3122 686
.fund 2088 1378
.furniture 868 597
.futbol 896 653
.fyi 2502 1806
.ga 8892 3830
.gal 1844 1038
.gallery 7602 5129
.gallo 0 0
.gallup 0 0
.game 148 38
.games 782 248
.gap 1 0
.garden 618 413
.gb 6 0
.gbiz 0 0
.gd 1053 481
.gdn 505 45
.ge 8048 2317
.gea 0 0
.gent 857 467
.genting 1 1
.george 0 0
.gf 40 11
.gg 6276 3820
.ggee 1 1
.gh 1083 527
.gi 474 265
.gift 1911 1169
.gifts 1150 735
.gives 358 229
.giving 2 1
.gl 989 443
.glade 0 0
.glass 1516 1039
.gle 2 0
.global 2250 1360
.globo 57 3
.gm 227 120
.gmail 3 0
.gmbh 280 257
.gmo 1 1
.gmx 0 0
.gn 38 11
.godaddy 2 0
.gold 1738 739
.goldpoint 1 1
.golf 2307 1626
.goo 15 1
.goodyear 0 0
.goog 20 0
.google 41 7
.gop 137 67
.got 2 0
.gov 39295 19002
.gp 542 199
.gq 4137 1674
.gr 255119 146141
.grainger 0 0
.graphics 3280 2144
.gratis 1751 1186
.green 131 61
.gripe 363 280
.grocery 0 0
.group 1186 706
.gs 1077 420
.gt 4323 2647
.gu 24 11
.guardian 4 0
.gucci 1 0
.guge 1 0
.guide 6145 4430
.guitars 535 381
.guru 23285 17219
.gw 15 6
.gy 523 243
.hair 1 0
.hamburg 305 189
.hangout 1 0
.haus 1796 1215
.hbo 0 0
.hdfc 0 0
.hdfcbank 0 0
.health 229 151
.healthcare 2589 1853
.help 4430 2641
.helsinki 0 0
.here 18 0
.hermes 1 0
.hgtv 0 0
.hiphop 342 234
.hisamitsu 3 1
.hitachi 3 1
.hiv 150 86
.hk 42346 15826
.hkt 0 0
.hm 134 50
.hn 1191 663
.hockey 388 218
.holdings 1982 1358
.holiday 2578 1650
.homedepot 3 0
.homegoods 0 0
.homes 18 14
.homesense 0 0
.honda 4 2
.honeywell 0 0
.horse 205 97
.hospital 8 2
.host 2805 792
.hosting 1590 927
.hot 18 0
.hoteles 1 0
.hotels 1 0
.hotmail 2 1
.house 6318 4484
.how 785 489
.hr 36459 22489
.hsbc 7 1
.ht 491 231
.hu 359105 254012
.hughes 1 0
.hyatt 0 0
.hyundai 1 1
.ibm 3 0
.icbc 1 1
.ice 11 2
.icu 9620 2978
.id 54716 12406
.ie 154458 91810
.ieee 0 0
.ifm 2 0
.ikano 2 2
.il 150023 34255
.im 4018 1921
.imamat 1 0
.imdb 2 1
.immo 5846 3124
.immobilien 4698 2950
.in 399200 235689
.inc 22 6
.industries 1262 849
.infiniti 1 1
.info 519439 280079
.ing 0 0
.ink 3898 2211
.institute 3610 2533
.insurance 10 8
.insure 1497 1028
.int 1671 569
.intel 0 0
.international 8481 5800
.intuit 1 0
.investments 1168 858
.io 154605 60348
.ipiranga 6 1
.iq 717 88
.ir 250770 45464
.irish 641 487
.is 16493 9459
.iselect 0 0
.ismaili 2 1
.ist 147 57
.istanbul 163 62
.it 790513 470658
.itau 9 2
.itv 1 0
.iveco 0 0
.jaguar 0 0
.java 13 0
.jcb 8 3
.jcp 0 0
.je 730 396
.jeep 0 0
.jetzt 1411 810
.jewelry 884 583
.jio 0 0
.jll 6 2
.jm 493 285
.jmp 1 0
.jnj 0 0
.jo 1774 842
.jobs 12415 5771
.joburg 1153 798
.jot 0 0
.joy 0 0
.jp 839358 183282
.jpmorgan 0 0
.jprs 2 0
.juegos 272 174
.juniper 2 0
.kaufen 4823 2767
.kddi 1 1
.ke 6331 3380
.kerryhotels 0 0
.kerrylogistics 0 0
.kerryproperties 0 0
.kfh 0 0
.kg 2377 324
.kh 1114 503
.ki 194 54
.kia 1 1
.kim 3773 1969
.kinder 2 0
.kindle 1 1
.kitchen 2518 1727
.kiwi 1465 943
.km 58 26
.kn 58 24
.koeln 265 166
.komatsu 9 4
.kosher 0 0
.kp 38 3
.kpmg 4 1
.kpn 4 1
.kr 241382 120692
.krd 71 21
.kred 9 4
.kuokgroup 0 0
.kw 1078 418
.ky 919 553
.kyoto 57 1
.kz 15708 2921
.la 5521 3025
.lacaixa 0 0
.ladbrokes 1 0
.lamborghini 26 9
.lamer 0 0
.lancaster 1 1
.lancia 0 0
.lancome 0 0
.land 6613 4606
.landrover 0 0
.lanxess 2 0
.lasalle 1 0
.lat 582 335
.latino 0 0
.latrobe 3 0
.law 2297 1124
.lawyer 4925 3697
.lb 1373 737
.lc 396 177
.lds 1 0
.lease 639 403
.leclerc 79 18
.lefrak 0 0
.legal 4365 2916
.lego 0 0
.lexus 3 1
.lgbt 68 24
.li 5741 3303
.liaison 1 0
.lidl 12 6
.life 21427 13930
.lifeinsurance 0 0
.lifestyle 0 0
.lighting 2726 1814
.like 10 0
.lilly 0 0
.limited 631 420
.limo 1112 787
.lincoln 0 0
.linde 35 0
.link 17735 9810
.lipsy 0 0
.live 12743 5874
.living 3 0
.lixil 3 1
.lk 6636 3731
.llc 29 23
.loan 5371 2517
.loans 1112 822
.locker 0 0
.locus 3 1
.loft 1 0
.lol 2359 1489
.london 10589 7220
.lotte 1 0
.lotto 1 0
.love 4140 2340
.lpl 0 0
.lplfinancial 0 0
.lr 93 46
.ls 208 96
.lt 93950 56378
.ltd 905 403
.ltda 29 24
.lu 20752 11053
.lundbeck 1 0
.lupin 1 1
.luxe 8 2
.luxury 430 200
.lv 34500 19048
.ly 4222 1613
.ma 7218 4078
.macys 1 0
.madrid 6 2
.maif 2 2
.maison 377 209
.makeup 1 0
.man 17 1
.management 4474 3138
.mango 31 1
.map 7 0
.market 2984 1722
.marketing 7118 4993
.markets 102 50
.marriott 0 0
.marshalls 0 0
.maserati 0 0
.mattel 0 0
.mba 717 473
.mc 829 442
.mckinsey 0 0
.md 6610 3257
.me 275661 205481
.med 8 0
.media 14357 9543
.meet 3 0
.melbourne 141 92
.meme 2 0
.memorial 143 91
.men 2595 729
.menu 140 52
.merckmsd 0 0
.metlife 1 0
.mg 777 317
.mh 6 0
.miami 87 36
.microsoft 29 1
.mil 3680 861
.mini 4 1
.mint 1 0
.mit 6 0
.mitsubishi 1 0
.mk 5882 1498
.ml 8756 3212
.mlb 1 0
.mls 2 0
.mm 781 170
.mma 9 1
.mn 4306 1018
.mo 940 247
.mobi 148527 132421
.mobile 9 0
.mobily 0 0
.moda 1043 596
.moe 1255 468
.moi 1 0
.mom 44 6
.monash 8 3
.money 2936 2140
.monster 9 6
.mopar 0 0
.mormon 1 0
.mortgage 837 610
.moscow 476 51
.moto 0 0
.motorcycles 3 1
.mov 14 0
.movie 668 250
.movistar 1 0
.mp 122 47
.mq 48 17
.mr 210 70
.ms 1813 671
.msd 0 0
.mt 1973 1292
.mtn 1 0
.mtr 0 0
.mu 1785 973
.museum 302 126
.mutual 0 0
.mv 559 336
.mw 416 161
.mx 349969 230643
.my 94138 57728
.mz 878 450
.na 907 508
.nab 0 0
.nadex 1 1
.nagoya 2009 875
.name 35404 21633
.nationwide 0 0
.natura 2 0
.navy 183 126
.nba 1 0
.nc 1217 693
.ne 202 45
.nec 5 1
.net 2918680 1578650
.netbank 0 0
.netflix 3 0
.network 8839 5525
.neustar 20 8
.new 49 1
.newholland 0 0
.news 19025 12561
.next 2 0
.nextdirect 0 0
.nexus 1 0
.nf 605 355
.nfl 0 0
.ng 10990 4370
.ngo 225 130
.nhk 1 1
.ni 1062 604
.nico 8 1
.nike 1 0
.nikon 1 0
.ninja 14014 10600
.nissan 3 2
.nissay 0 0
.nl 597480 422347
.no 298985 186997
.nokia 1 0
.northwesternmutual 0 0
.norton 0 0
.now 25 0
.nowruz 0 0
.nowtv 0 0
.np 3242 1311
.nr 2663 7
.nra 5 1
.nrw 261 145
.ntt 2 0
.nu 40788 25415
.nyc 19830 14117
.nz 325827 199878
.obi 0 0
.observer 19 5
.off 2 0
.office 31 1
.okinawa 1328 462
.olayan 0 0
.olayangroup 0 0
.oldnavy 1 0
.ollo 0 0
.om 1076 271
.omega 2 1
.one 19913 13958
.ong 42 21
.onl 202 95
.online 85456 51482
.onyourside 1 0
.ooo 1033 328
.open 3 0
.oracle 4 0
.orange 11 0
.org 2241890 1252364
.organic 20 8
.origins 0 0
.osaka 196 65
.otsuka 1 1
.ott 1 0
.ovh 15483 8056
.pa 1745 949
.page 103 40
.panasonic 0 0
.paris 10824 6165
.pars 0 0
.partners 2336 1533
.parts 2367 1448
.party 7260 4510
.passagens 0 0
.pay 4 1
.pccw 0 0
.pe 19986 12887
.pet 1068 631
.pf 638 368
.pfizer 0 0
.pg 520 259
.ph 21224 9862
.pharmacy 32 17
.phd 1 0
.philips 4 1
.phone 2 0
.photo 7508 4640
.photography 15237 10326
.photos 8636 5659
.physio 38 25
.piaget 1 1
.pics 3290 2152
.pictet 5 2
.pictures 2948 2074
.pid 0 0
.pin 2 0
.ping 2 1
.pink 2601 1005
.pioneer 4 0
.pizza 1810 1170
.pk 18738 11160
.pl 687150 443340
.place 1450 1010
.play 5 0
.playstation 2 0
.plumbing 1575 1204
.plus 2967 1608
.pm 670 209
.pn 128 38
.pnc 1 0
.pohl 0 0
.poker 97 15
.politie 1 0
.porn 5510 4502
.post 31 12
.pr 560 256
.pramerica 0 0
.praxi 4 0
.press 3108 1819
.prime 2 0
.pro 101285 54877
.prod 30 0
.productions 2016 1383
.prof 0 0
.progressive 0 0
.promo 138 28
.properties 4246 3227
.property 1528 1179
.protection 15 9
.pru 1 0
.prudential 0 0
.ps 2238 698
.pt 158549 94786
.pub 7114 3432
.pw 16855 6772
.pwc 1 0
.py 3600 2219
.qa 2181 722
.qpon 1 2
.quebec 1260 679
.quest 0 0
.qvc 2 0
.racing 696 400
.radio 66 30
.raid 0 0
.re 2384 1181
.read 5 0
.realestate 20 15
.realtor 129 73
.realty 17 10
.recipes 1507 1122
.red 11339 6868
.redstone 4 2
.redumbrella 0 0
.rehab 555 393
.reise 701 348
.reisen 2975 1643
.reit 50 14
.reliance 0 0
.ren 113 10
.rent 862 528
.rentals 4604 3364
.repair 2723 1765
.report 1991 1278
.republican 176 119
.rest 669 386
.restaurant 2472 1576
.review 2487 957
.reviews 6033 4341
.rexroth 0 0
.rich 7 4
.richardli 0 0
.ricoh 5 3
.rightathome 0 0
.ril 0 0
.rio 395 189
.rip 743 485
.rmit 2 1
.ro 283648 175550
.rocher 0 0
.rocks 26262 17677
.rodeo 13 9
.rogers 1 0
.room 2 0
.rs 27729 15527
.rsvp 0 0
.ru 671884 146922
.rugby 3 4
.ruhr 96 58
.run 3092 1642
.rw 652 343
.rwe 2 1
.ryukyu 162 56
.sa 8638 3607
.saarland 2164 1060
.safe 2 0
.safety 0 0
.sakura 1 1
.sale 2783 1627
.salon 51 24
.samsclub 0 0
.samsung 3 0
.sandvik 15 6
.sandvikcoromant 1 0
.sanofi 1 1
.sap 15 1
.sarl 266 156
.sas 2 0
.save 3 0
.saxo 12 3
.sb 110 54
.sbi 9 2
.sbs 0 0
.sc 1699 943
.sca 2 1
.scb 3 1
.schaeffler 0 0
.schmidt 6 3
.scholarships 1 1
.school 3596 2281
.schule 1212 656
.schwarz 2 1
.science 5341 3925
.scjohnson 0 0
.scor 1 1
.scot 5932 3728
.sd 643 136
.se 272318 163066
.search 2 0
.seat 198 97
.secure 1 0
.security 50 23
.seek 2 1
.select 3 0
.sener 15 6
.services 11298 7773
.ses 9 6
.seven 3 1
.sew 1 1
.sex 3512 2875
.sexy 3447 2325
.sfr 0 0
.sg 89051 47869
.sh 3204 967
.shangrila 0 0
.sharp 11 2
.shaw 3 0
.shell 3 0
.shia 0 0
.shiksha 192 102
.shoes 2411 1474
.shop 5608 1919
.shopping 58 20
.shouji 0 0
.show 1925 1101
.showtime 1 0
.shriram 15 10
.si 41821 24037
.silk 1 1
.sina 1 0
.singles 1799 1388
.site 41256 20024
.sj 0 0
.sk 264464 156494
.ski 2572 1417
.skin 1 0
.sky 31 1
.skype 6 1
.sl 251 110
.sling 0 0
.sm 524 273
.smart 5 1
.smile 2 0
.sn 1097 552
.sncf 17 9
.so 996 304
.soccer 749 533
.social 5673 3515
.softbank 2 1
.software 4411 2717
.sohu 1 0
.solar 2775 1999
.solutions 21815 15918
.song 1 0
.sony 6 2
.soy 403 286
.space 27195 16447
.sport 24 15
.spot 7 0
.spreadbetting 7 1
.sr 379 234
.srl 1069 692
.srt 2 0
.ss 1 0
.st 3390 1454
.stada 16 2
.staples 0 0
.star 6 0
.starhub 1 0
.statebank 0 0
.statefarm 1 0
.stc 3 2
.stcgroup 1 1
.stockholm 8 6
.storage 13 3
.store 4186 1301
.stream 1747 363
.studio 5360 3333
.study 295 155
.style 2120 1331
.su 61322 10540
.sucks 2798 2273
.supplies 935 675
.supply 1530 1110
.support 7628 4755
.surf 85 36
.surgery 792 607
.suzuki 3 1
.sv 1854 1125
.swatch 2 1
.swiftcover 0 0
.swiss 5633 2555
.sx 239 105
.sy 581 64
.sydney 2876 2066
.symantec 0 0
.systems 9394 6353
.sz 207 119
.tab 0 0
.taipei 332 38
.talk 1 0
.taobao 1 0
.target 3 0
.tatamotors 2 1
.tatar 19 2
.tattoo 935 573
.tax 2621 1658
.taxi 1862 1111
.tc 2411 1671
.tci 0 0
.td 47 14
.tdk 0 0
.team 3942 2511
.tech 23308 14553
.technology 10700 7626
.tel 8257 6893
.telefonica 9 0
.temasek 1 0
.tennis 567 320
.teva 2 0
.tf 349 105
.tg 178 92
.th 30372 9954
.thd 1 0
.theater 484 262
.theatre 17 6
.tiaa 0 0
.tickets 313 165
.tienda 1008 572
.tiffany 1 0
.tips 14694 10409
.tires 285 177
.tirol 223 172
.tj 913 110
.tjmaxx 0 0
.tjx 0 0
.tk 57924 36329
.tkmaxx 0 0
.tl 7734 5990
.tm 480 112
.tmall 1 0
.tn 4361 1880
.to 11373 3850
.today 21633 15057
.tokyo 21160 9514
.tools 3902 2374
.top 13223 2897
.toray 7 3
.toshiba 3 1
.total 7 2
.tours 2411 1629
.town 1320 944
.toyota 4 1
.toys 1684 1095
.tr 223035 152072
.trade 1338 605
.trading 113 60
.training 7642 5225
.travel 4816 2303
.travelchannel 0 0
.travelers 0 0
.travelersinsurance 0 0
.trust 5 1
.trv 2 0
.tt 919 417
.tube 165 37
.tui 1 1
.tunes 0 0
.tushu 0 0
.tv 223712 144419
.tvs 0 0
.tw 195314 49879
.tz 2434 1393
.ua 248130 54581
.ubank 0 0
.ubs 1 0
.uconnect 0 0
.ug 1664 872
.uk 1041962 600819
.unicom 0 0
.university 2222 1412
.uno 1682 1264
.uol 37 1
.ups 0 0
.us 362974 271719
.uy 12788 8842
.uz 4789 621
.va 238 50
.vacations 1724 1227
.vana 0 0
.vanguard 4 0
.vc 2294 986
.ve 9158 5371
.vegas 4496 3115
.ventures 3493 2572
.verisign 0 0
.versicherung 14 14
.vet 2169 1420
.vg 1593 1068
.vi 158 85
.viajes 530 299
.video 5111 3016
.vig 0 0
.viking 0 0
.villas 871 586
.vin 2281 1284
.vip 2034 422
.virgin 3 1
.visa 0 0
.vision 2347 1572
.vistaprint 2 1
.viva 1 1
.vivo 2 0
.vlaanderen 69 34
.vn 114281 23775
.vodka 12 8
.volkswagen 0 0
.volvo 1 0
.vote 528 343
.voting 3 1
.voto 85 26
.voyage 1240 835
.vu 1567 581
.vuelos 0 0
.wales 5624 3902
.walmart 4 0
.walter 3 1
.wang 9183 4748
.wanggou 0 0
.warman 0 0
.watch 2555 1434
.watches 1 1
.weather 1 0
.weatherchannel 1 0
.webcam 643 262
.weber 47 21
.website 30371 19469
.wed 6 6
.wedding 1987 1265
.weibo 1 0
.weir 72 1
.wf 145 74
.whoswho 2 1
.wien 3600 1960
.wiki 5183 3098
.williamhill 6 3
.win 21935 10278
.windows 2 1
.wine 4599 2934
.winners 0 0
.wme 1 1
.wolterskluwer 0 0
.woodside 2 0
.work 2904 749
.works 5315 3590
.world 31880 13729
.wow 6 0
.ws 133980 122131
.wtc 1 1
.wtf 3382 2357
.xbox 13 1
.xerox 0 0
.xfinity 0 0
.xihuan 0 0
.xin 6926 4789
.xn--11b4c3d 0 0
.xn--1ck2e1b 0 0
.xn--1qqw23a 0 0
.xn--2scrj9c 0 0
.xn--30rr7y 0 0
.xn--3bst00m 0 0
.xn--3ds443g 3 0
.xn--3e0b707e 51 18
.xn--3hcrj9c 0 0
.xn--3oq18vl8pn36a 0 0
.xn--3pxu8k 0 0
.xn--42c2d9a 0 0
.xn--45br5cyl 0 0
.xn--45brj9c 1 0
.xn--45q11c 2 0
.xn--4gbrim 1 0
.xn--54b7fta0cc 3 0
.xn--55qw42g 0 0
.xn--55qx5d 0 1
.xn--5su34j936bgsg 0 0
.xn--5tzm5g 0 0
.xn--6frz82g 329 114
.xn--6qq986b3xl 7 0
.xn--80adxhks 160 7
.xn--80ao21a 2 0
.xn--80aqecdr1a 0 0
.xn--80asehdb 857 138
.xn--80aswg 324 58
.xn--8y0a063a 0 0
.xn--90a3ac 12 2
.xn--90ae 24 1
.xn--90ais 149 2
.xn--9dbq2a 1 0
.xn--9et52u 0 0
.xn--9krt00a 0 0
.xn--b4w605ferd 1 0
.xn--bck1b9a5dre4c 0 0
.xn--c1avg 20 2
.xn--c2br7g 0 0
.xn--cck2b3b 0 0
.xn--cg4bki 0 0
.xn--clchc0ea0b2g2a9gcd 0 0
.xn--czr694b 1 1
.xn--czrs0t 0 0
.xn--czru2d 3 0
.xn--d1acj3b 24 0
.xn--d1alf 0 0
.xn--e1a4c 6 0
.xn--eckvdtc9d 0 0
.xn--efvy88h 0 0
.xn--estv75g 1 1
.xn--fct429k 0 0
.xn--fhbei 0 0
.xn--fiq228c5hs 0 0
.xn--fiq64b 0 0
.xn--fiqs8s 1220 44
.xn--fiqz9s 0 0
.xn--fjq720a 0 0
.xn--flw351e 1 0
.xn--fpcrj9c3d 0 1
.xn--fzc2c9e2c 1 0
.xn--fzys8d69uvgm 0 0
.xn--g2xx48c 0 0
.xn--gckr3f0f 0 0
.xn--gecrj9c 0 0
.xn--gk3at1e 0 0
.xn--h2breg3eve 0 0
.xn--h2brj9c 7 1
.xn--h2brj9c8c 0 0
.xn--hxt814e 59 27
.xn--i1b6b1a6a2e 0 0
.xn--imr513n 0 0
.xn--io0a7i 1 0
.xn--j1aef 7 0
.xn--j1amh 239 5
.xn--j6w193g 3 1
.xn--jlq61u9w7b 0 0
.xn--jvr189m 0 0
.xn--kcrx77d1x4a 1 1
.xn--kprw13d 0 0
.xn--kpry57d 10 1
.xn--kpu716f 0 0
.xn--kput3i 1 1
.xn--l1acc 1 1
.xn--lgbbat1ad8j 2 0
.xn--mgb9awbf 0 0
.xn--mgba3a3ejt 2 1
.xn--mgba3a4f16a 1 0
.xn--mgba7c0bbn0a 0 0
.xn--mgbaakc7dvf 0 0
.xn--mgbaam7a8h 5 1
.xn--mgbab2bd 101 19
.xn--mgbah1a3hjkrd 0 0
.xn--mgbai9azgqp6j 0 0
.xn--mgbayh7gpa 0 0
.xn--mgbb9fbpob 0 0
.xn--mgbbh1a 0 0
.xn--mgbbh1a71e 0 0
.xn--mgbc0a9azcg 0 0
.xn--mgbca7dzdo 0 0
.xn--mgberp4a5d4ar 0 0
.xn--mgbgu82a 0 0
.xn--mgbi4ecexp 0 0
.xn--mgbpl2fh 0 0
.xn--mgbt3dhd 0 0
.xn--mgbtx2b 0 0
.xn--mgbx4cd0ab 0 0
.xn--mix891f 0 0
.xn--mk1bu44c 6 0
.xn--mxtq1m 0 0
.xn--ngbc5azd 7 0
.xn--ngbe9e0a 0 0
.xn--ngbrx 0 0
.xn--node 2 0
.xn--nqv7f 0 0
.xn--nqv7fs00ema 0 0
.xn--nyqy26a 4 4
.xn--o3cw4h 9 1
.xn--ogbpf8fl 0 0
.xn--otu796d 0 0
.xn--p1acf 299 43
.xn--p1ai 299734 44067
.xn--pbt977c 0 0
.xn--pgbs0dh 2 0
.xn--pssy2u 0 0
.xn--q9jyb4c 287 158
.xn--qcka1pmc 1 0
.xn--qxam 9 2
.xn--rhqv96g 1 0
.xn--rovu88b 0 0
.xn--rvc1e0am3e 0 0
.xn--s9brj9c 0 0
.xn--ses554g 0 0
.xn--t60b56a 2 0
.xn--tckwe 85 26
.xn--tiq49xqyj 0 0
.xn--unup4y 1 0
.xn--vermgensberater-ctb 1 1
.xn--vermgensberatung-pwb 1 1
.xn--vhquv 0 0
.xn--vuq861b 3 1
.xn--w4r85el8fhu5dnra 0 0
.xn--w4rs40l 0 0
.xn--wgbh1c 2 0
.xn--wgbl6a 2 1
.xn--xhq521b 5 0
.xn--xkc2al3hye2a 0 0
.xn--xkc2dl3a5ee0h 0 0
.xn--y9a3aq 0 0
.xn--yfro4i67o 0 0
.xn--ygbi2ammx 0 0
.xn--zfr164b 3 2
.xxx 89175 3330
.xyz 289147 80131
.yachts 1 1
.yahoo 11 0
.yamaxun 1 1
.yandex 14 1
.ye 197 55
.yodobashi 1 1
.yoga 2964 2084
.yokohama 1481 684
.you 31 0
.youtube 7 0
.yt 214 77
.yun 0 0
.za 295219 203059
.zappos 1 1
.zara 2 0
.zero 3 0
.zip 63 0
.zm 571 295
.zone 7292 4840
.zuerich 1 1
.zw 1434 730
Total 44202501 23848767

Signing Up for Uber Eats in Another Country

Just want to mention my UX ordeal here – I basically had to hack my way through an app to order food.

I’m soggy and rained on (torrential pour today) and don’t want to leave the Airbnb, so I decided to sign up for Uber Eats, which I’ve never used before, and have food delivered. I’m in Mexico City but I live in Portland, Oregon.

I signed up using the web app because I wanna look at food pics on a big screen. I used my Google Voice number because I could validate it via text-to-email (I don’t get reliable phone service here on my network – Ting). Filled the cart with a huge order, entered my credit card, and when I clicked “place order” I got an alert that my phone number is not valid for ordering and I have to edit my account and add a valid phone number. The web app doesn’t let you edit your phone number. So I installed the mobile app and signed in. THAT let me edit my phone number and luck of all luck the validation text went through. I went back to the web app on my PC. Logged out and back in and my phone number showed up. Order was still in my cart. THEN I was able to order some food.

And now I’m getting Uber’s marketing emails in Spanish.

So yeah, sign up for your apps BEFORE you leave the country.

First Impressions of Mexico City

This was my first visit to Mexico. It’s also my first time traveling with a passport. I’ve been to Canada dozens of times – it happens when you grow up in Michigan – but I didn’t have a passport until a few weeks ago.

At the airport, catching a taxi was easy. I prepaid at a counter in the airport and had an uneventful if somewhat traffic-filled journey to Jalapa street in Roma Norte where we were staying (I traveled with my girlfriend Cheri and her daughter). This impression is VERY influenced by the fact that we were staying and hanging out in a gentrified area.

It was a challenge getting international calling and roaming enabled for my phone. Not because it was hard to do – but I had to login to the Ting (my phone service) website and turn it on and wait for it to take effect, using the spotty airport WiFi. From what I had read that was something that should have been on automatically, but I guess it wasn’t. The FAQ wasn’t too clear.

The apartment we were staying in had entry through a courtyard barred by a heavy iron gate, which seems pretty standard based on what I’ve seen so far. It was decorated in Danish Modern style and looked really nice.

View of the AirBnB courtyard.

The most notable thing about the buildings so far is the total difference between inside and outside. The sidewalks are mostly rough and broken, with cracks and dips and unevenness. I think that might be a combination of how earthquake-prone the area is and the fact that the city has sunk 32 feet in the last 60 years due to groundwater pumping (and that’s been accelerating – one article I saw had it dropping 3.2 feet per year).

Mexico City AirBnB Dining Room.

The building facades are mostly stucco or crumbling concrete, usually barred and gated. Graffiti is pretty common, but not much more common than some U.S. cities. Chicago comes to mind.

The city is much more American than I would have expected. Domino’s, Starbucks, Circle K, Chili’s, 7-11, and Krispy Kreme are all familiar. Far more people than I would expect speak English, but people are generally really patient and kind in dealing with my terrible broken Spanish. Many signs are printed in both Spanish and English and it’s not too hard to get by. And the music – I’ve heard more American than Mexican so far, things like John Lennon and MGMT.

It’s also really quiet and peaceful, and not crowded at all, which is not what I expected. From what I hear that’s unique to the Roma and Condesa areas with the rest of the city being a lot louder and busier.

The air is surprisingly clean too. I heard that it was about as polluted and smog-filled as Los Angeles (the only place I’ve ever choked on the air), but it’s much better. Once in a while an old smoke-spewing diesel truck will roll by, but for the most part people drive modern American cars and the traffic doesn’t look notably different than what you’d see in California.

It’s also pretty clean. I’m comparing to Portland, Oregon, but only a couple times have I caught that distinctive sewer smell and not once have I smelled piss. Entire sections of Portland smell that way – old town, for example.

I expected it to be warmer, 80s and humid, but July is the rainy season. It’s cool during the day, starting in the low 60s and reaching the mid-70s, and then it rains starting around 5pm.

There also haven’t been many beggars and no visibly homeless people. By contrast, Portland is stuffed to the gills with hollowed-out derelict drug addicts living on the streets and begging for heroin money. You can’t walk more than half a dozen blocks in PDX without being accosted by someone with a clearly broken brain. And the Portland mayor, Ted Wheeler, is thoroughly incompetent and useless at doing anything to improve the city. He’s too busy making sure the police are protecting out-of-town white supremacists that show up to terrorize residents.

I shouldn’t be surprised that Roma has so many Italian restaurants, but I am. I’ve been here a day and a half and haven’t really eaten any authentic Mexican food. It’s been Italian twice, Venzuelan, and Swiss. That’s not really intentional and I’m sure plenty of local fare will be consumed (and the second half of the trip will be in Tulum).

None of us has had any trouble with sickness, but we’ve also been taking Travelan and being fairly cautious with our consumption (me less so than my wiser companions).

Chapultepec Park is amazing. They have a castle, multiple museums, a great botanical garden, sculptures – it’s huge and beautiful and they have tiny lizards on the trees and super-friendly squirrels that run up and take food right from your hand. Definitely recommend.

WbSrch Offline Again

I put the WbSrch search engine back online in March of 2018.

I spent a lot of time improving it over the 16 months, but it’s the sort of thing that always manages to demand more time and energy. It’s time to stop giving it either — though it’s grown and improved a lot, it’s not something I could ever imagine doing full-time. The money isn’t there and the fun isn’t there anymore.

So I’ve taken it down. This time probably for good.

I’ll be focusing on my music software, electronic music, and acoustic guitar music instead.

Thanks for reading, and if you’re reading this you quite possibly participated in the experiment that was the WbSrch search engine. Thank you.

AlgoRhythmia Now Available for OSX

AlgoRhythmia was my first “complex” desktop app. By complex I mean difficult to build and with a deep interface that could be explored and tinkered with extensively.

It’s a drum machine that can generate random beats. It can also “mutate” existing beats and cause them to change over time.

This is the windows version, but the macOS version looks identical.

It started as a Windows app. It used DirectX, a very Windows-centric audio engine. Because of this, I never tried to build a version for another operating system. Well, now I have. And it is available for OSX.

You can get it here.

DrumPads Released for OSX

DrumPads is an app with 12 virtual drum pads that lets you use the keyboard, mouse, touchscreen, or an external MIDI device to play any of 100 high-quality drum sounds.

DrumPads for Windows. Looks identical on OSX.

It started as a webOS app. It was later ported to Ubuntu and sold via the Ubuntu Store. Then ported to Windows and ended up becoming my most popular app with 330,000 downloads of the free version. I spent some time porting it to OSX a while back, but never had a version in the App Store.

Now I do.

You can get it here.

Proxima Controller Released for macOS via the App Store

I just released my virtual MIDI controller app Proxima Controller for macOS via the App Store. It’s something that I ported to OSX a while ago but never posted to the app store.

It lets you use your mouse, touchscreen, or keyboard keys to play a virtual MIDI controller that can be used to control external devices such as drum machines, synthesizers, or samplers.

You can get it here.

And if you want the Windows version you can get it here.

SpaceTheremin and MIDIPlayer Available for macOS Again

Over the years I’ve struggled mightily with OSX development. It’s just hard if you want to do things your way. It’s far easier if you use Apple’s choice of tools and languages.

Since most of what I’ve worked on for Apple computers has been apps ported from Windows or Linux, there really hasn’t been the option of starting with their way of doing things in mind at the beginning.

Last time I was working on building things for the App Store, I had eight apps I was trying to publish. I only ended up getting two released before I gave up in frustration. Those two were SpaceTheremin and MIDIPlayer.

Well, given my lack of enthusiasm, it’s no surprise that I let my developer subscription lapse. A lot of people wonder what happens when you let your subscription expire but then renew it later (around two years later in my case). Well, your apps disappear from the app store but stay installed wherever people already have them. And when you renew, they magically reappear like they never disappeared without needing to be reviewed again, and any apps in progress will be exactly as you left them.

That’s the case with SpaceTheremin and MIDIPlayer, which are now both available for macOS again.

Here’s SpaceTheremin.

Here’s MIDIPlayer.

I also have some things that have made it farther than before that you should expect to be released in the near future.

Menu Bar with Quit for a wxDialog or wxFrame-based app on OSX

I have some apps that I’ve tried porting to OSX off an on over the years, but some of them have never been quite right.

They’re written with wxWidgets, which is a multiplatform application development toolkit. However, documentation and fine details for macOS specifics is generally lacking.

For instance, I had an ongoing problem with making the “Quit” function in a menu work in a single-dialog application based on the wxDialog class. I originally asked the question on the forums back in 2011:

I have a wxDialog-based application on OSX that shows a single modal dialog window.

My understanding is that a dialog-based app cannot have a menu bar. However, I do get the default system menu bar on the app.

The Cmd-Q option (Quit) shows up on the default system menu bar, but it is grayed out. How can I modify my app to bind to that Cmd-Q option so I can treat it the same as clicking the red button at the top right of my dialog (which exits the app)?

The original post is here.

The answer from Tierra about switching to a wxFrame instead of a wxDialog was a part of the puzzle (thank you!), but the quit item still didn’t work. Once I had a wxFrame I could then attach the default menu items (in the constructor where all the dialog controls are being created):

wxMenu* helpMenu = new wxMenu();
helpMenu->Append(wxID_HELP);
helpMenu->Append(wxID_ABOUT);
wxMenuBar* menuBar = new wxMenuBar();
menuBar->Append( helpMenu, "&Help" );
SetMenuBar(menuBar);

I also had to connect those buttons to my functions in the event table (my dialog class is called wxKeyboard):

EVT_MENU( wxID_EXIT, wxKeyboard::OnExit )
EVT_MENU( wxID_ABOUT, wxKeyboard::OnInfo )
EVT_MENU( wxID_HELP, wxKeyboard::OnHelp )

Once that was done, I had an about menu item, a help menu item, and the quit item magically appeared and worked as intended. In addition, the “About” menu entry appeared under the application menu and not the help menu, but I had to add it to a menu in order for it to show up.

Silica Gel Packet Websites (Plus Favorite Packets)

For ages I’ve run websites that are image galleries of silica gel packets. You could say that I’m a pioneer in the field of silica gel packet collecting. It all started when a coworker gave me a silica gel packet with the word “candy” written on it.

In 2009, I bought the domain do-not-eat.com [Archive.org September 2010]. It was just a simple photo gallery with a dozen or so packets, but it managed to get some organic traffic. I sold the domain for something like $30 and the new owner kept the site up for a year or two.

In 2012, I bought the domain silica-gel.org. I built a Django site and added a bunch of packets, also linked by ink color, language, and manufacturer. I ad a packet now and then as I discover new and different ones.

Silica-Gel.org Website Logo

 

 

 

These are my favorite packets.

This one has a nice transparent blue flower that lets you see the silica gel balls.

This one has a phenomenal amount of text and has nice fonts and imagery.

I like this one just because it is orange. There are a few nice orange packets, especially ones from Topcod.

This is another nice orange packet and I enjoy the skull and crossbones.

That’s it for the highlights of my silica gel packet collection.

If you’d like to download a copy of the silica-gel.org website (including archived images), it’s available as open source on GitHub.

Vintage Live Dr. Kilpatient Recordings

I posted two Dr. Kilpatient live albums recorded in 2001 on YouTube.

The first is And The Key of Love, from the largest live lineup we ever head. With a larger lineup, we evolved from our industrial circus rock sound to more of an electronic funk band.

The second is Fuck Jason Champion, an album titled as a goodbye tribute to me because I was moving to New York City. I came back 4 months later. That place wasn’t my style.

Enjoy this glimpse into the history of Midwestern circus rock.

Chitika Didn’t Work For Me. Luckily They Died.

Chitika was one of the remaining few advertisers in my WbSrch advertising experiment.

A few days ago I received an email saying that they were shutting down, effective immediately.

Since they had a fill rate that never got higher than about 10-15%, that’s hardly a problem. I was going to remove them from my site when I had a free moment anyhow.

From January 7-April 10, a span of 94 days, I had 1,318 filled impressions and $0.000 revenue. On the best day ever, the CPM was $0.0007, or seven hundredths of a cent per thousand impressions. In any case, that was not enough to add up to a penny.

Bidvertiser is still in the rotation and they’re doing about how I’d expect. I will probably report more later.

RevenueHits Didn’t Work For me

I’ve had to cut short another one of the alternative advertiser experiments that I’ve been running on WbSrch. This time it’s RevenueHits.

This one isn’t causing malware warnings, but it made my site unusable if I had ad blocking turned off. There were popup windows, auto-navigation, and tabs opening without my permission. None of this is OK.

It’s not much of a loss – I didn’t earn anything at all from them during the brief experiment. During the short test, I had 433 impressions, 5 clicks (1.155%), and $0.00 in revenue. Not even a fraction of a penny – eCPM was $0.00 across the board.

The experiment continues with Adcash, Bidvertiser, Chitika, and Adsterra remaining.

Rain Without End – Flickering Flames

I recorded and released a song called “Flickering Flames” in January. It’s an instrumental track with bass and three guitars. Here it is as a YouTube video:

The cover art is a painting I created the first time I tried abstract painting. The cover art for “Rolling Clouds” was created the same day.

If you’d rather listen on Spotify, it’s here.

Yllix Didn’t Work For Me

I’ve been experimenting with advertising providers on WbSrch to find one (or more) that works well.

Among the half dozen or so I was testing is Yllix.

Unfortunately, they’re causing my site to get malware warnings from Chrome. I’m sure Google is especially vigilant with flagging a competing ad service as malicious, so I’m dropping them from the test.

During the (shortened) test, I had 527 impressions, 4 clicks, and $0.01 in revenue, so it’s unlikely that they’d work out anyhow.