In the aftermath of the Presidential election in 2015, I learned that one of my co-workers–a man whose technical ability and knowledge I respect, a man whose friendship I appreciate–had voted for Donald Trump. I was gobsmacked. He explained that he didn’t like that Hilary Clinton was a lifetime politician.
It took some time to come to terms with the idea I was friends with someone who had voted for Trump. We work at different places now and my contact with him is sporadic. Our friendship has withered.
On the eve of this year’s Presidential election, with the same person once again running for President–someone who was impeached twice, who is a convicted felon, who is a convicted sexual predator, someone who disseminates, and lies, and stirs up hatreds and discontent, someone who wants to tear down our country and end the Constitution–I can’t help but think about my colleague who is smart, educated, intelligent, and genuinely nice, but who voted for chaos and mayhem rather than sanity and reason.
I am once again struggling with the knowledge that a friend of mine would vote for Donald Trump. And I am wondering who else I know that is either not voting or who is voting for the Republican candidate. This year’s election boils down to one, and only one, issue. Do you want the rule of law and a representative democracy, or do you want a fascist dictator and a Christian nationalist state?
This year I don’t think I’ll be able to forgive someone I know voting for the later. It will be hard to accept someone sitting out or voting for a third party candidate as some form of “protest”.
In one week we find out if the 248 year long experiment in democracy called the United States of America continues or if it implodes into darkness and tyranny.
I am afraid and I am hopeful.
I’ve tried to write this posting several times. Two things are at play here. First, the reMarkable tablet is something I’ve been aware of for several years and have wanted to try. Second is the frustration at a drawn out and semi opaque return/refund process.
In my previous posting I talked about why the reMarkable Paper Pro wasn’t right for me. The device itself is superb, the niche it fills isn’t one I need filled. For nearly $800 it needs to fit better into my lifestyle. Having desired it for so long, only to find out that it really isn’t what I need, was a letdown.
Returning it for a refund started out easily enough. reMarkable sent me a label, and I was able to put the tablet, marker, and folio case back into their original boxes, and fit those boxes back into the outer shipping box it was delivered in. The nearest DHL location was about 25 minutes drive away. It only took four days for the package to return to Hong Kong.
The returns section of the reMarkable website claims a 10-15 business day turn around for the refund. They say that credit card refunds may take longer, all other forms of payment are immediate refunds. It took 21 calendar days (16 business days) for the package to be reviewed by reMarkable, so the 10-15 business day refund clock only started yesterday.
There is a status page, but, until yesterday, it showed the package as scanned, but not delivered. Yesterday I finally got an email indicating that a refund had been issued, and that “It can take approximately 10 days to appear on your statement”. Amazon has not only spoiled us with overnight or two-day delivery, but it speedy refunds for returns. All the returns to Amazon have been credited to my card the same day I drop off the package. Waiting three weeks for the refund to even be issued, seems like an overly long time.
While I was disappointed that the reMarkable didn’t suit my purposes, I wasn’t unhappy. The frustrations caused by the lengthy return process have somewhat soured me on reMarkable. Whether they are doing the shipping and returns themselves, or (as I suspect) they have a third-party fulfillment center doing the shipping and initial return acceptance, if they want to work in the global market, they will need to up their game.
tl;dr: reMarkable Paper Pro gets five stars, but it isn’t for me.
For several years I have been aware of reMarkable and their tablet. If you aren’t aware of them, the tablet promises a paper like writing experience and it has a limited set of features to help you stay focused on writing or consuming documents.
I resisted the urge to buy the reMarkable 2, but when I saw the announcement for their latest product, the Paper Pro, I decided to give it a try. The 100-day return policy made trying something complete new to me, risk free.
reMarkable has a very Apple-like out-of-box experience, in the best possible way. The boxes are easy to open with pull tabs, and the contents are nicely displayed. The tablet itself is remarkably (Ha!) thin and light. This was my first eInk device and I was impressed with the clarity of the screen and the ease of reading it. I can see why it may be easier on some people’s eyes, since there is no constant back light.
After opening the packaging I had the tablet, a base-level folio cover, the marker (with eraser), and a flat type-C power cord. Turning it on, attaching the marker and setting up a reMarkable account were quick and easy tasks.
Navigating the user interface did present a couple of small challenges. Taps needed to be a fraction longer than I expected. There is also a slight delay as the display refreshes. Not objectionable but noticeable coming from the land of iPads. Within a day I had several folders and a notebook or two in each.
Handwriting notes was a very nice experience. The textured surface of the screen combined with the nib on the tip of the marker really does emulate the feel of writing on paper with a pen or pencil. Discovering that the OS will automatically straighten a drawn line if you pause the marker briefly after sketching it was delightful. It will also make squares and triangles. I wasn’t able to product a circle.
I was able to add my Dropbox account as an integration, allowing me to transfer files via that service. In order to have some PDF content to consume, I have been hoarding some PDFs of web pages since I placed my order. Scaling them to the screen size requires some pinching and zooming. You can fit them to the screen based on height, or width, or set a custom size. The custom size is done with a pinch-and-zoom motion. The refresh lag while pinching does make getting the size right a bit tricky.
My use case, in broad terms, is to have one place for all my notes. I have tried paper notebooks many times in the past. They always start out purposefully but then I start doodling in the margins, or mixing work notes with personal. Then I am unhappy because the notebook is no longer “orderly”.
I can and do take notes on my computer. But I can’t easily draw or sketch ideas on the computer. I tend to use the back side of page-a-day calendars for note taking. My desk is littered with dozens of small pieces of paper. Some with doodles, others with important lists, some with sketches or ideas. Periodically I sift through and rewrite some to make them neater or to separate the note from doodles or to cull no longer needed notes.
The other use case that reMarkable touts is reading PDF files and marking them up. Turns out this use case isn’t one of my requirements. The friction required to convert a web page or other document to PDF format and then transfer it to the reMarkable, only then to have to fiddle with sizing it, meant I was happier reading the material in its raw format on my computer. I can easily see a lawyer, or researcher making excellent use of the PDF features.
There is nothing wrong with the reMarkable Paper Pro. It is a quality device made for very clear and specific purposes. They set out to fill a niche and I think they have completely succeeded. That niche isn’t one I need to scratch. I am very glad to have tried the Paper Pro–now I know what it is and what it isn’t. I have satisfied my curiosity about it.
Therefore I have returned it for a refund. I give it five stars, and would recommend it to anyone who had the very specific use cases it sets out to satisfy.
For the past several months I’ve been making personal pan pizzas at home. The recipe I’m using is simple, and the results have been surprisingly good.
(This makes two 8" inch pizzas)
Dough
Topping
Combine the yeast and water, stirring to mix. Ideally this should sit for 5 minutes before being combined into the flour. I stir the water a couple times during that wait to make sure all the yeast is dissolved.
Measure 7 oz of bread flour and add the salt. Stir to combine.
Pour the water and yeast mixture into the flour. Stir until just combined. It should look dry.
I use a 9 inch square Pyrex baking dish for the dough to rise in. Oil the dish with olive oil. For the cooking step below the oil cannot be Extra Virgin, as that has a lower smoke point and will burn, so I use regular olive oil throughout this process.
With the dish lightly oiled, and at least one of your hands oiled as well, transfer the dough to the dish. Spread it out as evenly as possible. It won’t cover the bottom, but that is okay.
Cover with plastic wrap (puncture the plastic several times with the point of a knife). Let the dough sit for at least 8 hours. I make mine the night before.
About 2 1/2 hours before mealtime, oil two 8" cast iron skillets, bottom and sides. Split the dough evenly. Gather half the dough up into a loose ball and place in the skillet. Pull the sides up and over the top, and then flip the dough over. Spread it out as much as it will allow. Again, it won’t cover the bottom. Repeat for the other half.
Preheat the over to 350 degrees for 2 or 3 minutes, then turn it off. You want it warm, not hot. Place the skillets in the oven for the final rise. Loosely cover with plastic wrap.
About 30 minutes before mealtime, remove the skillets from the oven. The dough should have risen and spread out in the skillets. Preheat the oven to 550 degrees or as hot as it will go. Ours tops out at 525.
While the oven is heating, add pizza sauce and your choice of toppings. I put 2, maybe 3, tablespoons of pizza sauce on the dough, spreading it out evenly from the center, leaving a 1/2 inch or so dough as a border. I use just enough shredded Mozzarella cheese to cover the sauce. Add pepperoni or other toppings. Sprinkle a teaspoon or so o grated Parmesan cheese over the top. When the oven is ready, bake the pizzas for 15 minutes.
Remove from the pan (slice if desired) and transfer to plates and enjoy.
If you frequent a site enough time, your browser will start to auto-complete that site’s URL when you begin typing its domain. Here is a list of what a single letter entered into the address bar of my browser produces.
A - amazon.com
B - boards.greenhouse.com
C - chatgp.com
D - daringfireball.net
E - en.wikipedia.org
F - fasterthenl.me
G - github.com
H - hackmd.gfuzz.de
I - imore.com
J - jimmymiller.github.i
K - kottke.org
L - lobste.rs
M - mail.google.com
N - news.ycombinator.com
O - os.phil-opp.com
P - polymonster.co.uk
Q - quillbot.com
R - rsdlt.github.io
S - sourcegraph.com
T - textualize.io
U - usgs.gov
V - veykril.github.i
W - www.youtube.com
X - xeiaso.net
Y - youtube.com
Z - zed.dev
I spend a lot of time working in either JSON or YAML while building out infrastructure in AWS. I prefer YAML as I find it less cumbersome to type and it allows for comments.
Today on Mastodon I saw this posting that illustrates a way to put comments into JSON.
{
"//": [
"I am a comment",
],
...
}Cumbersome, but effective.
To clean up local Git branches that no longer exist on the upstream repository, you can run these commands.
To start, make sure your working copy is up to date.
git fetch --prune
The --prune option removes and remote tracking references that no longer exist on the remote
repository.
By running
git branch
You get a list of all the branches on your working copy. Using the --merged flag, filters that
list to show only those branches that are already merged into the main or master branch.
git branch --merged
To delete all the merged branches from your working copy, run this command.
git branch --merged | egrep -v "(^\*|master|main)" | xargs git branch -d
The list of merged branches is piped to an egrep command that eliminates the master or main
branch, as we don’t want to delete those. The remaining branch names are pipes to the git branch -d command, which deletes them.
Whenever I find a command or set of commands online, that purport to accomplish some task, I always break the command down, and execute each stage of it, to make sure I understand what it is doing, and to ensure that it does what the author claims. Trust, but verify.
MacOS has a number of network interfaces making the output from ifconfig messy and not easily
visually parsed.
A non-exhaustive list of network interfaces you might see on MacOS includes
ap1 - Access Point. Used if you are using your Mac as a wireless access point where you are
sharing its connection.awsl0 - Apple Wireless Direct Link. WiFi P2P link for AirDrop, Airplay, etc. Also used for
Bluetooth.llw0 - Low latency WLAN interface. Used by the Skywalk system.utnun# - Tunneling interface. Use for VPN connections. MacOS seemingly hangs on to multiple
utun interfaces, even after they aren’t in use.lo0 - Loopback or localhostgif0 - Software Network Interfacestf0 - 6to4 tunnel interfaceen0 - Ethernet interfaceen1 - Wireless interfaceen5 - iBridge / Apple T2 Controlleren6 - Bluetooth PANen8 - iPhone USBen9 - VM network interfaceen10 - iPadbridge0 - Thunderbolt BridgeA simple way to see the current list of IP addresses your Mac has is by using an alias like this.
alias inet='ifconfig | grep inet | grep -v inet6'
Which produces output similar to this.
❯ inet inet 127.0.0.1 netmask 0xff000000
inet 192.168.6.39 netmask 0xfffffc00 broadcast 192.168.7.255
inet 192.168.65.1 netmask 0xffffff00 broadcast 192.168.65.255
inet 100.101.18.109 --> 100.101.18.109 netmask 0xffffffff
While that can be useful, it would be nicer to know which interface had which IP address.
This command will display the name of the network interface and the assigned IP address for the active network interfaces.
ip -4 addr show | awk '/inet/ {print $NF, $2}' | column -t
In order for this command to work, the iproute2mac formula via Homebrew.
The ip -4 addr show displays all the network interfaces having an IPv4 address.
❯ ip -4 addr show
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1/8 lo0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 74:a6:cd:b6:eb:7f
inet 192.168.6.39/22 brd 192.168.7.255 en0
utun8: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
inet 100.101.18.109 --> 100.101.18.109/32 utun8
bridge100: flags=8a63<UP,BROADCAST,SMART,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
ether 76:a6:cd:6b:c1:64
inet 192.168.65.1/24 brd 192.168.65.255 bridge100
The awk statement filters for the line containing inet and then prints the last field from that
line ($NF) and the second field ($2). The last field is the interface name and the second field
is the assigned IP address.
The column -t command formats the output into columns.
❯ inet
lo0 127.0.0.1/8
en0 192.168.6.39/22
utun8 100.101.18.109
bridge100 192.168.65.1/24
Today I learned that you can paste and match surrounding indentation at once. After selecting the
line or block of lines to be pasted, use ]p instead of only p. Et voila.
I am embarrassed to think of the hundreds, thousands of copy-paste operations I’ve done that were immediately followed by selecting the newly pasted block and fixing its indentation. I need the read the friendly manual more.