I will readily admit that I got too much of my news from Twitter, before theimplosion. After twitter went away, there was a slight hole in my daily news diet. I started filling that hole with Inoreader and PressReader. Inoreader has a $20/yr “supporter” plan and the app syncs your feeds from device to device. PressReader is free with a Milwaukee County Federated Library card and gets you access to over 7000 magazines and newspapers on up to five devices.
I really wish there was a viable “netflix for news” that would cover all of these publications. Paying $80 here and $80 there for these things is really hard.
Last week, Elon Musk bought twitter. As soon as the deal was complete, he fired the chief executive, chief financial officer, and head of legal policy, trust, and safety. That last one was what worries me the most. I have been mirroring my tweets over on mastodon for a while now. I’m planning on staying on twitter for the moment but mastodon is a good escape hatch if things get really bad. Continue reading Where you can find me online→
This past July, I found myself looking for a way to test a web application from behind “the great firewall of China” (aka Golden Shield). The problem is that I can’t test that something works in China if I’m not in China. My first thought was to use Nord VPN to connect to a VPN server in China but the closest that Nord offers is Hong Kong. I did a little light investigating and found that Hide My Ass VPN claims to have 4 servers in Beijing. After paying $59.88 for an account, I was ready to start testing.
Unfortunatly, it looks like HMA VPN is doing some shinanigans to make it look like your traffic is originating from the country without it actually originating from that country.
When you use their client, it shows that you are connected using an IP that is in China. You can use IP Chicken to prove that it is your new public IP address and you can use a service like MaxMind GeoIP or IP Location Finder to prove that IP address is in Beijing. The problem was that despite that, the Golden Shield limitations were not happening. I could still visit things like Google and Twitter and see things like photos of the Tiananmen Square massacre.
The first thing that came to mind was to use nmap to trace the path between the remote server and my computer. It does that by sending packets to the server with decrementing TTL, in an attempt to elicit ICMP time-exceeded messages. That didn’t work great because the result didn’t show my public IP. My next idea was to use traceroute since instead of decrementing the TTL, it increments it.
Since the traceroute goes from where your computer is to the target server, the first hop should be your public IP address but in this case, it isn’t. So, where is 5.62.34.110?
It looks like for some reason, when you select China, you get a Chinese IP address but the traffic actually emerges onto the internet in Singapore?!?
I have no idea why this is happening but when I asked them, they said:
The most I can do to show you we are indeed telling you the correct information is to point you to the database of the official registry RIPE NCC: https://apps.db.ripe.net/search/query.html
RIPE NCC is one of five RIRs worldwide coordinating and maintaining the information databases about the registered IPs and operating under IANA (Internet Assigned Numbers Authority). You can also confirm these IPs are allocated to RIPE by looking them up here: https://www.iana.org/whois.
I understand that the inner working of the internet is not your prime concern, but rather the websites recognizing your location correctly. Still, I just wanted to demonstrate that we have taken all the necessary actions on our end. At the moment, incorrect IP details appear, but they appear less and less frequently as other websites conduct updates of their databases.
So, they aren’t denying that they are faking the traffic. They are just saying the IPs are registered in China (which doesn’t help).
I still need to figure out if there is a legitimate way to test if I site works in China. Have a suggestion? Feel free to drop a comment, below.
So, what’s next? You could keep using Heroku and just pay for it. Render still has a free tier and there are a lot ways it is better than Heroku. I have used Cloudflare Workers for some stuff. That is free and works well. If JAMstack is your jam, there is Cloudflare Pages. DigitalOcean Functions has a free alotment (but I don’t understand the pricing terms at all). Google Cloud has a free offering and I hosted this very blog using it for years. I don’t think that I ever paid more than $3/mo for the VM while I was using the service. My employer bought me a Visual Studio Professional subscription that includes a generous monthly Azure credit but even if you don’t have that, Azure has it’s own free offerings.
The big benefit of Heroku was the fact that you could easily run server-side code and attach it to a PostgresSQL database. I liked the ease of installing things like Laravel on Heroku. If you are looking to do that elsewhere there isn’t a great answer (maybe Forge?). If your jam is Node or vanilla PHP, I would say that you should check out Render or Cloudflare Workers.
Like a service that I didn’t meantion? Have an opinion one way or the other? Please drop a comment, below.
I recently found out about something called #newprofilepic (that appears to be the name of the site). When you click on their privacy policy, you are taken to pho.to, which advertises their use of “smart algorithms” for “simple photo editing”. I figured that I would give it a swing and it turned out pretty well.
I’m not too sure how they pay for doing what they do but I like the result.
A decade ago, I watched a ted talk about Kiva and made my first kiva loan. The first few loans were kind of random but I eventually settled on the goal of giving a loan in every country. Kiva officially works with lenders in 76 countries and I typically gave one loan per month, so it took a while but I eventually reached the point where I had made loans in 72 countries. A few years ago, they added something where you can list what countries you had and hadn’t lent to, yet. This is my list:
There aren’t any potential borrowers in those countries, though. Do I set a new goal? Do I go back to random? If you have a suggestion, feel free to drop a comment, below.
If my count is correct, this is my 1000th post on this blog. Since the blog just turned 10 years old, that means that I have been averaging 100 posts per year but there have been years where I only posted one or two things for the whole year. Continue reading 1000th Blog Post!→
It has been exactly 10 years since I posted Changes on this website. This blog has never had a singular focus. It has always just covered what I am interested in at the time. So far, I have published 988 posts (including this one and a few that are scheduled out into the future). I might need to commemorate a 1000th post in the near future. 🙂
Over the past few weeks, I have mainly been posting content related to the State Parks App and work on that project is not stopping at all but there is some additional content that I really want to work into the weekly schedule. Last week, I posted an update about my preferred coding tools and next week, I am posting something about the Vue CLI and Webpack. In addition to that, I also want to revisit MongoDB after ignoring it for a few years (and not just because I have a future need). After that, I also want to try to work some non-vue-related content in (maybe Alpine.js or Angular). You can expect some more content related to the State Parks App after that.
It is safe to say that my two posts per month plan is shot to hell, at the moment. I am still limiting myself to a code-related post on Thursdays and non-coding posts on Tuesdays, though.
This is going to be a pretty quick post. I am really excited to announce that I just accepted a new job at Bader Rutter, here in Milwaukee. Bader Rutter is an almost 50-year-old full service agency with offices in Milwaukee and Chicago. I am joining their team as a senior full-stack developer.
Joe Steinbring's thoughts on coding, travel, and life