My 2023 New Year's Resolution, finally started in June that year, inspired by this: learn a thing a day every so often sometimesI am a CDN Operations engineer, a violinist, and a father, and I take long hour-and-a-half-long walks in the morning between dropping my kids off at school and starting work, because that's the only time I can exercise (my commute being a three-second walk from one part of my house to another). The things I learn will probably not be relevant to anybody but me.
Don't wanna be here? Send us removal request.
Text
Today I Learned: GitHub Pages broken SSL/TLS
I operate my wife's website and use GitHub Pages for hosting. Apparently its SSL/TLS certificate expired in May and we had just gotten around to noticing, half a month later (I will be putting in monitoring so I find out sooner next time lol).
[terry@llnw3 ~]$ echo | openssl s_client -connect wadamariko.com:443 -servername wadamariko.com 2>&1 | openssl x509 -noout -startdate -enddate notBefore=Feb 27 13:46:14 2025 GMT notAfter=May 28 13:46:13 2025 GMT [terry@llnw3 ~]$ [terry@llnw3 ~]$ [terry@llnw3 ~]$ [terry@llnw3 ~]$ date -u Wed Jun 18 01:39:49 UTC 2025 [terry@llnw3 ~]$
The Pages page in the repo Settings had this to say about it:
TLS certificate is being provisioned. This may take up to 15 minutes to complete. 1 of 3 Certificate Request Error: Certificate provisioning will retry automatically in a short period, please be patient.
And, right above it, these:
Hold up, 'github.io'?
Back when I created this repo I had accidentally named it with a '[orgname].github.com' suffix, instead of the standard '[orgname].github.io' (for GitHub Pages); GitHub told me to 'www.wadamariko.com CNAME [orgname].github.com', so, dutifully, I did. Now it's telling me it needs to be 'github.io'?
Okay.
[terry@llnw3 ~]$ dig +short CNAME www.wadamariko.com @ns1.dns.ne.jp # before marikowadaportfolio.github.com. [terry@llnw3 ~]$ [terry@llnw3 ~]$ [terry@llnw3 ~]$ [terry@llnw3 ~]$ dig +short CNAME www.wadamariko.com @ns1.dns.ne.jp # after marikowadaportfolio.github.io. [terry@llnw3 ~]$ [terry@llnw3 ~]$ date -u Wed Jun 18 01:53:54 UTC 2025 [terry@llnw3 ~]$
Wait long enough and the SSL/TLS certificate passed Let's Encrypt's DNS checks and properly got deployed. :bananadance:
[terry@llnw3 ~]$ echo | openssl s_client -connect wadamariko.com:443 -servername wadamariko.com 2>&1 | openssl x509 -noout -startdate -enddate notBefore=Jun 18 00:56:28 2025 GMT notAfter=Sep 16 00:56:27 2025 GMT [terry@llnw3 ~]$ [terry@llnw3 ~]$ date -u Wed Jun 18 02:30:19 UTC 2025 [terry@llnw3 ~]$
Conclusion:
My worknotes here: https://github.com/marikowadaportfolio/marikowadaportfolio.github.com/issues/14
Today I also Learned: in setting up monitoring/alerting so I find out sooner the next time something similar happens, I discovered I already have monitoring set up with Uptime Robot. With a free account, Uptime Robot will ignore SSL/TLS handshake errors (basically 'curl -k') to check that the webserver does, in fact, respond.
Is it time for me to spring for an Uptime Robot subscription?
0 notes
Text
Pretty Good Airsoft Shooting Range in Sapporo
My team recently got put on rotating 24/7 shifts and I am currently on evening-to-midnights, leaving me my entire morning and early afternoon free - when business that open around 10 or 11 or 12 are open, and more importantly, when my kids are at school.
I've also recently been considering starting a new hobby. The old adage that 1) young people have time and no money, 2) young adults have money and no time (and 3) old people have money and time but less physical freedom, which isn't as relevant to this exercise (yet)) is quite true, but I suddenly find myself with some time, and a non-zero amount of money - certainly more than my college days.
My options are:
viola - too similar to violin to be much of a challenge, probably, and also very few electric violas in Japan (or, well, in the world)
Uillean pipes (because my birthday is March 17) - no real versions to be found in-country, although there's an importer of an electric chanter in Tokyo... that costs over a thousand dollars
airsoft?
I've previously owned a couple airsoft guns back in my college days - a Glock 18C and an FN P90, both electric, both from Tokyo Marui - but they never left the home and the only damage they ever caused was dents on the inside side of the front door of the house where my parents and I used to live. I'd never even gotten around to purchasing one of those sticky targets that trap the BBs you shoot into it so you can tell how accurate (or not accurate) your shooting was. I've never practiced shooting accurately, and figured I'd do pretty badly in an actual shooting range.
So two weeks ago I visited an airsoft shooting range [the unfortunately-named Kids Dragon, in Shiroishi-ku Sapporo] on a whim. Turns out that shooting range doesn't rent out even safety glasses, not to mention actual guns, so I ended up running up an unexpected hobby tab of just over two hundred dollars (well, okay, around 150 USD, because gone are the days of 1 USD = 100 JPY) with the purchase of a Beretta PX4 Storm - a gas blowback model, not electric, because I am a grown-up now (and it's my turn to decide what that means) - and associated peripherals. Kids Dragon has a single-lane shooting range with four metal disks in three rows of differing distance, whose only report of a successful hit is a dull clunk. Good enough, I guess, for (iirc) ¥300 per half hour with a ¥1000-a-year membership.
I'd decided on a once-a-week cadence of visiting a shooting range, and for Monday on week 2 I'd intended to go try another one - which purportedly does have a parking lot, whose location I couldn't figure out from their website - that unfortunately turned out to be closed on Mondays. So back to Kids Dragon I went. Later in the week, though, I ended up near the second shooting range [SSR, apparently short for "Sapporo Shooting Range," in Chuo-ku Sapporo] on foot and decided to check it out - frak my one-shooting-range-visit-a-week quota. They have next to no selection of airsoft and military stuff on sale, unlike Kids Dragon, but they do do rentals and their shooting range even has an electronic target - what looks like a computer monitor (likely with a very impact-resistant touchscreen) that displays targets and shapes of various sizes that I can select on a laptop behind me. I rented a long gun - a sniper rifle of some kind, I forgot to look into what model - which turned out to be way less accurate than my own PX4, with which I kept hitting bullseyes on the small target the computer told me was "for sniper rifles." My groupings, though, could still use a lot of work. ¥300 per half hour with a ¥500-a-year membership or ¥500 per half hour for visitors, although you do have to buy BBs - can't BYOBB here.
I think I'll be visiting SSR for my weekly shooting range visit from this week.
0 notes
Text
ON EDUCATION AND TEACHING KIDS
Sooner or later, parents have to take responsibility for putting their kids into a system that is indebting them and teaching them to be cogs in an economy that doesn't want cogs anymore. Parents get to decide... [and] from 3 p.m. to 10 p.m., those kids are getting homeschooled. And they're either getting homeschooled and watching The Flintstones, or they're getting homeschooled and learning something useful.
I think we need to teach kids two things: 1) how to lead, and 2) how to solve interesting problems. Because the fact is, there are plenty of countries on earth where there are people who are willing to be obedient and work harder for less money than us. We cannot out-obedience the competition. Therefore, we have to out-lead or out-solve the other people...
The way you teach your kids to solve interesting problems is to give them interesting problems to solve. And then, don't criticize them when they fail... If they get in trouble every time they try to solve an interesting problem, they'll just go back to getting an A by memorizing what's in the textbook... And what we can say to that 11-year-old is: I really don't care how you did on your vocabulary test. I care about whether you have something to say.'
Seth Godin, from Tim Ferriss's Tools of Titans (page 242)
0 notes
Text
Today I Learned: Notion Database formula to calculate day-of-week
And it's not in the documentation!
Long-form day-of-week, e.g. "Tuesday": "dddd"
formatDate(now(),"dddd")
Short-form day-of-week, e.g. "Tue": "ddd"
formatDate(now(),"ddd")
0 notes
Text
Last Week I Learned: Sociophilosophical Considerations re Using genAI for Translations
I volunteer with the Parent-Teacher Association at my kids' private school as class representative and steering committee member, and I'm currently between jobs so hey, maybe let's volunteer for some odds-and-ends projects. One such project that happened my way was to translate two Japanese Red Cross booklets on first aid procedures in CPR and AED use.
I am not a professional translator by trade, although I do have a recently-retired professional translator/interpreter in my extended family. On the other hand, I have dabbled in the mystical arts of translation and interpretation, including having to read through and understand Japanese court documents (and the laws and prior art backing the claims and counterclaims presented by both sides) to be able to present them - accurately, naturally, if not legally cromulent - to the Indian parent company of my then-employer.
Proofreading somebody else's translation - ネイティブチェック "native check", it's called in Japanese - is as important a task as the initial translation that produces the material to be proofread; it's of such importance, especially in the Japanese please-translate-my-stuff-to-English community, that ネイティブチェック may pay just as well as the actual translation itself (or not, which results in signage saying "Genaral Citizen's Hell" outside a Tokyo ward public hall). I myself have helped make the world a better place make Japan a more English-friendly place for extra pocket money. This Red Cross booklet project was the first time I actually had generative AI tools at my disposal to produce the translation that I then ネイティブチェック myself, and... I still have mixed feelings on the matter.
The popular refrain of the day is that AI will one day take away our jobs, except not really, except certainly so for certain values of two industries, etc etc etc. So far that hasn't been the case for me personally, although my work sometimes involves being what I jokingly call a human cronjob, but I do remain cognizant that one day AI will come for me as well. What class of jobs are more easily replaceable with AI, and what careers are safe? That is a question I see smart people wrestle with every day. American entrepreneur and inventor Danny Hillis notes:
In the beginning of AI, we thought the things that were hard for us to do were the intelligence - like we thought playing chess... or solving calculus tests... or translating languages... the things that were hard for us, we thought that's intelligence. And that was the stuff that early AI concentrated on. And actually, it turns out that was really the easy part. The hard part was the stuff that we were so good at, we didn't even notice: like recognizing a face, jumping to a conclusion, having an intuition about something. Those things were way, way harder. So, we thought producing speech would be hard. We didn't think listening would be hard, right? Because we just did that without apparent effort. But listening to speech turned out to be way harder than producing speech... and [AI is] actually really good at kind of imitating human intelligence. And imitating is kind of a good first step. — Tim Ferriss Show #782: Legendary Inventor Danny Hillis (Plus Kevin Kelly)
So. Translating: okay for me to contribute to the possible demise of the industry by using genAI? A quick-and-easy rubric might be whether I would have paid an actual human professional translator in lieu of using ChatGPT, in which case no, I myself would have slaved away for days and weeks doing the translation myself as an unpaid volunteer.
But last year I ran a booth selling old books at a bazaar at my kids' school. My poster for the booth featured a baby husky reading a book, generated by not-ChatGPT:
Should I have engaged an artist on Fiverr to draw me this, instead of using a free AI tool? If generative AI tools with free tiers were not a thing, would I have paid money for this (because I cannot draw, for the life of me), or would I have just decided, "Welp, no book-reading baby husky on my poster then," and moved on with my life?
However, the previous rubric fails here, because my bookstore booth was ostensibly a for-profit venture (even though I ended up not making any profit). Was I, therefore, morally obligated to pay a real human illustrator for the privilege of using their talent to supplement my lack of artistic ability? Or is it okay because it was for a single booth in a whole gym floor of sellers in a one-day school bazaar open only to the school community and local public - and not, say, a multi-million-dollar marketing project at a global company? Where, then, is the line?
0 notes
Text
Code Blocks on Tumblr from Journey
Publishing to Tumblr from Journey (https://journey.cloud/). I want to be able to do code blocks.
A code block (hmm Journey calls them "pre") initiated with backtick backtick backtick. How does this appear on Tumblr?
Linebreaks?
{
"type": "json",
"the square brackety thing": [
{
"first": 1
},
{
"second": 2
},
{
"third": 3
}
]
}
Let's find out how Tumblr handles pre!
---
So: looks like the lines inside the pre became blocks with font "Chat", and each line (even in the JSON) became separate blocks.
---
... The JSON whitespace gets squished (╯°□°)╯︵ ┻━┻
0 notes
Text
Pulitzer Prize Winners database
I volunteer at my kids' school library. I recently needed a list of all the Pulitzer Prize winners, in order to identify which books we had in our catalogue but weren't on our Pulitzer winners bookshelf. I had resigned myself to manually copy-pasting almost six hundred entries in eight categories from the Pulitzer website - a task that would likely take the better part of a month - before then going through the process of checking our library catalogue for matches, but one midnight I had an ephiphany that there might have been another person with the same needs that had already created a database.
I found one better: https://github.com/jonseitz/pulitzer-scraper had identified nine years ago that the Pulitzer website itself uses API calls to inform its category pages!
I wrote up my explorations of making the Pulitzer API output usable in a GitHub repo, which also serves a GitHub Pages site made out of Jekyll:
0 notes
Text
Today My 6-year-old and I Learned:
Years ago my dad once told me that the human face is shaped in such a way that you can spray water over your head while facing down and the water will curtain around your eyes and mouth, allowing you to see and breathe (the alternative being looking up while e.g. you're washing shampoo out of your hair).
I was told this fairly (embarassingly) late in my young life, and always assumed that this was a feature of sufficiently-grown heads - the correlation being that children are generally more afraid of water and will use the face-up method when washing their hair.
So my six-year-old and I tried it today. Turns out...
He can see and breathe in falling water face-down just fine. The problem was just me lol
0 notes
Text
Today I learned: when the roads are one huge skating rink and it's next to impossible to control your car when turning or stopping or evading or ducking or diving, the shoulders on the sides and the thin strip in between where everybody else drives helps provide a little bit of purchase for your winter tires so you don't go skidding past the line at a red light, as this exact carbon-copy of my own Forester driving in front of me perfectly demonstrated. (I do not know them; we are not a caravan of Subaru fans that decided to get the same car for twinsies)

1 note
·
View note
Text
Throwback to the time I learned a new word
"desultory": lacking a plan, purpose, or enthusiasm.
Bobbie desultorily poked her spork at the quivering mound of green on her plate.
instagram
0 notes
Text
Throwback to the time I learned that bash has arrays (also, Bash one-liner monstrosities)
(Because this came up recently in a job interview, and at the time I couldn't for the life of me remember where I had recently used a bash array. During the interview I went hunting through my scripts directories on multiple servers, but turned out it was not a bash script, it was a FrankenBash a Bash one-liner.)
Five or six years ago, my colleague was attempting to write a bash script to... do something, and lamented that bash doesn't have arrays - a single variable that contains a list of multiple items. Back then I only had a vague understanding of arrays, and just smiled and nodded.
Then in November 2021 I purchased Dr Angela Yu's 100 Days of Python, and the following month I finally got to Day 4 and Python lists. Cue lights and confetti and a "tada!" soundtrack - I now know what an array is!
Fast forward to half a year ago, and I had to check DNS records for hostnames associated with multiple live streaming slots to troubleshoot for a support ticket. Up until then, I had used both 'for' loops and 'while read line' loops many, many times to e.g. check DNS records for multiple hostnames, but they had all been for single-element lines, e.g.:
$ cat list.txt hostname0.llnw.net hostname1.llnw.net hostname2.llnw.net $ cat list.txt | while read line; do echo -n "$line : "; dig +short CNAME $line; done hostname0.llnw.net: cname0.llnw.net hostname1.llnw.net: cname1.llnw.net hostname2.llnw.net: cname2.llnw.net $
(echoing $line is for presentation - this would go into an internal support ticket worknote (the kind where if it's not worknoted, it did not happen), and I make it a point to make my worknotes easy to follow and understand for posterity.)
However, my input in this case was a set of live streaming slot names and their purported ingest servers (as reported by the live stream backend service that actually assigns ingests to slots); the problem statement was that the customer was deleting and creating live stream slots with the same name too quickly, triggering a race condition whereby the live stream ingest assigner would attempt to create the ingest server DNS record for the new slot (with the same hostname, because same slot name) before the old DNS record got deleted, resulting in ingest server DNS records CNAMEd to the wrong ingest server.
The input:
$ cat allslots.list stream0 ingest1.pop1.llnw.net stream1 ingest2.pop1.llnw.net stream2 ingest3.pop2.llnw.net $
(This is a simplification; the actual input was the JSON output from an API call, passed through jq to get only the stream name and purported ingest server into a single line.)
(Also an oversimplification in that the actual input was 1,336 live stream slots.)
An ingest hostname for a stream would have the stream name in it, and would be a CNAME record for the actual ingest server provisioned to that slot:
$ host stream0.primaryingest.llnw.net stream0.primaryingest.llnw.com is an alias for ingest1.pop1.llnw.net. ingest1.pop1.llnw.net has address 1.8.555.256 $
The idea being that the customer would put the ingest hostname (in the above example, 'stream0.primaryingest.llnw.com') in their encoder settings, and not have to change their encoder settings whenever we move their slot from ingest to ingest.
My first step was to set up this while read line loop ('cut -d. -f 1-2' again for readability and presentation, because the last two levels of the hostnames are always the same):
$ echo "stream purported actual"; cat allslots.list | while read line; do array=($line); actual=$(dig +short CNAME ${array[0]}.primaryingest.llnw.net | cut -d. -f 1-2); purported=$(echo ${array[1]} | cut -d. -f 1-2); echo "${array[0]} $purported $actual"; done stream purported actual stream0 ingest1.pop1 ingest1.pop1 stream1 ingest2.pop2 ingest2.pop1 stream2 ingest1.pop1 ingest3.pop2 $
This, except 1,336 lines of this. Painstakingly comparing each $actual and $purported with my eyeballs 1,336 times would take forever, even with some help from Ctrl+F match-highlighting.
So I decided to use another bash feature - conditional expressions. Only print the line if $purported and $actual do not agree:
$ echo "stream purported actual"; cat allslots.list | while read line; do array=($line); actual=$(dig +short CNAME ${array[0].primaryingest.llnw.net | cut -d. -f 1-2); purported=$(echo ${array[1]} | cut -d. -f 1-2); if [[ $purported != $actual ]]; then echo "${array[0]} $purported $actual"; fi; done stream purported actual stream1 ingest2.pop2 ingest2.pop1 stream2 ingest1.pop1 ingest3.pop2 $
This cut down the 1,336-line output to a meager 337 lines (so, 337 live stream slots with the wrong ingest hostname DNS CNAME record). Run through the internal MOP to remediate incorrect DNS records, and then run the one-liner abomination again (because the root cause is a race condition that hasn't been fixed), rinse and repeat, rinse and repeat.
Bonus: as a learner of Python, I was feeling bad about turning by default to bash scripts (and, well, bash one-liners) instead of whipping up a quick-and-dirty Python script to do my bidding. However, this article I referenced to learn about Bash arrays while building the above Franken-oneliner assuaged my guilt:
Bash or Python? Which begs the question: When should you use Bash arrays instead of other scripting languages such as Python? To me, it all bois down to dependencies - if you can solve the problem at hand using only calls to command-line tools, you might as well use Bash. But for times when your script is part of a larger Python project, you might as well use Python. For example, we could have turned to Python to implement the parameter sweep, but we would have ended up just writing a wrapper around Bash:
#bash#shell#scripting#FrankenBash#for loop#while loop#linux#unix#troubleshooting#DNS#arrays#bash arrays
1 note
·
View note
Text
Today I Learned: one thing left-handed people have got it good
I am left-handed. Obviously from centuries of cultural and social history, left-handed people have it worse than right-handed people - only one in every thousand scissors are born shaped for left-handed hands, many a handwritten essay feature smudges in the distinct curled shape of the edge of the hand, and even the soup ladle at most Japanese famiresu have the little lip on the wrong side if you're holding an empty soup cup in your left hand.
But I've finally found one cultural etiquette rule where the left-handed have a leg up: fork and knife. See, left-handed people hold their fork in their left hand, and when using both fork and knife, the fork is in... the left hand. No need to put the knife down to shift the fork-hold - simply bring your forked food to your mouth and you're done. I knew right-handed people hold their fork with their right hand, but never got around to wondering whether the fork-and-knife hold is similarly reversed. (I lie, I have wondered but never cared enough to investigate.) But the question came up while having breakfast with my kids today, and I finally did a Google search.
Turns out you guys have to hold your fork in your left hand, and your knife in your right hand! And after cutting out your mouthful, you have to either 1) let go of your knife and hand-transfer your knife to your right hand, or 2) awkwardly maneuver your fork up to your face and into your mouth with your definitely non-dominant hand... depending on the type of meal?
Take that, more-populous and therefore socially-convenient folk!
(I swear I'm not dominant-handist. I've got three family members that are right-handed (and we are a four-person family).)
4 notes
·
View notes
Text
Using Notion as Second Brain for Job Hunting
Not really something I learned today, but something I've been trying over the last few days. My employer filed for Chapter 11 bankruptcy two months ago, and last weekend we learned that the winning bid in the bankruptcy sale auction - by a long shot - was our competitor wanting to scoop up our customer contracts, but not the actual service infrastructure or the engineers needed to operate it. That means the entire company itself is about to be no more, and my colleagues and I are about to all lose our jobs.
I hadn't job-hunted for almost a decade at this point, and Notion certainly did not exist back then. The concept of a second brain was completely foreign to me, but after starting to use Notion for my daily log at work, it was a natural progression to putting my entire personal work knowledgebase on Notion (and then sharing that knowledgebase with my colleagues), and then also using Notion as my personal second brain to record my "worknotes", a concept I got from the internal notes we write into the support tickets we handle at work.
So I guess it's only natural that I started using Notion to record my job hunt.
I had recently figured out how to use database relations and had been going crazy linking two database together - the violins in the family versus their maintenance records, my wife's artwork versus the exhibits at which they were exhibited, my daily work diary versus worknotes for a manual global configuration push that I do a couple times a month. For tracking my job applications I ended up with three interconnected databases (one more than my usual fare!): one tracking applications, one tracking recruiters/websites from whence they originated, and one tracking the recruiter conversations and interviews for each application. I did briefly wonder if maintaining separate pages for each call/interview (because Notion database entries are each individual pages) is necessary, but piling all my conversation notes into one single application page will probably make that page really, really scrolly.
No, I will not be creating a template for sharing :)
2 notes
·
View notes
Text
Samsung Galaxy Note 10 Plus and 5GHz Wi-Fi
Today I learned: the Samsung Galaxy Note 10 Plus does very poorly with 5GHz Wi-FI.
I switched Internet Service Providers today, and moved everybody from the old modem-and-router-combo Wi-Fi network to the new router. Every single device - laptops, phones, Chromecast, Sesame smart lock Wi-Fi module - works just fine with the new Wi-Fi network, except for one single Galaxy Note 10 Plus: it complains that the Wi-Fi is not connected to the Internet.
Restarting the router helped... for a while, until it suddenly started complaining of no Internet connectivity beyond the local network.
When Band Steering is on on the router, Wi-Fi clients can connect to either 2.4GHz or 5GHz (using the same SSID); turns out there's probably an endemic problem with this particular device (that I don't understand - if a client can't connect to 5GHz, like Chromecasts, it just... doesn't, rather than complain of networking issues).
Turning off Band Steering (which makes the router announce two separate SSIDs, one for 2.4GHz and one for 5GHz) - helped the Note 10 Plus stay connected.
(╯°□°)╯︵ ┻━┻
(The thing is, the modem-and-router-combo that I'm about to send back to the provider is also forcefully limited to 2.4GHz. I have a feeling I forgot, and am re-learning this.)
1 note
·
View note
Text
ENCOURAGING GIRLS
With boys, there is an active encouragement - despite the possibility that they could get hurt - and guiding the son to do it, often on his own. When a daughter decides to do something that might have some risks involved, after cautioning her, the parents are much more likely to assist her in doing it. What is this telling girls? They're fragile and they need our help. That is acculturated so early. So of course, by the time we're women and in the workplace or relationships, that's going to be a predominant paradigm for us: fear.
[...] I would say it's time to adopt a paradigm or bravery instead of a paradigm of fear. So, when you have a boy and a girl, or a man and a woman, facing the exact same situation, there will be two emotional reactions to it that are sort of opposite. The man will be trying to access his bravery, and the woman will be accessing her fear.
Caroline Paul, from Tim Ferriss's Tools of Titans (page 461-462)
0 notes
Text
PARENTING ADVICE
What could possibly be more important than your kid? Please don't play the busy card. If you spend 2 hours a day without an electronic device, looking your kid in the eye, talking to them and solving interesting problems, you will raise a different kid than someone who doesn't do that. That's one of the reasons why I cook dinner every night. Because what a wonderful, semi-distracted environment in which the kid can tell you the truth. For you to have low-stakes but superimportant conversations with someone who's important to you.
Seth Godin, from Tim Ferriss's Tools of Titans (page 242)
0 notes
Text
cvs diff
Today I learned: how to show the diff of a historical revision. Actually pretty simple now that I see it.
cvs diff -r [revisionnumber] -r [revisionnumber] [file]
cvs diff -U0 -r [revisionnumber] -r [revisionnumber] [file]
2 notes
·
View notes