Using SIP Phones like home phones

For years now, I’ve been using Asterisk for our home phone line (as well as one for our rental property business). One persistent issue has been getting SIP phones to act like regular non-PBX extension phones. You know — where two people in different parts of the house can use two phones on the same call.

Asterisk has shared line appearance (SLA) features, but this is designed to make it work like an old key system PBX. Not really the way we want it to work. If John is on a phone call and Jane picks up another extension, Jane can’t join the call — she just gets a new outbound line. Most of this is by design. For one thing, in most non-home settings you really don’t want just anyone to be able to join your call. If you want to add someone, you use the conference feature to dial their phone and add them. In a home setup, though, it’s a hassle and it’s complicated — since you don’t necessarily know which extension a person is using, especially if you’re using cordless phones. Asterisk is really not developed for home use; for some pretty obvious reasons, it’s mostly used by businesses. It is, after all, a PBX.

The solution I’ve used thus far is a regular analog cordless phone system (Panasonic, Vtech, etc.) and an ATA adapter like the Grandstream HT801. That device connects your analog phones to Asterisk. This approach is good, but it’s not a perfect solution. You can’t do things like use your cordless phones to make more than one simultaneous call (unless you have a multiline cordless phone and an HT802). These are also typically consumer grade phones, with limited displays and battery life. The quality of cordless phone systems has most definitely not improved over the past few years.

I want to try out some of the new Wifi SIP phones for a number of reasons, but I want to do it without losing the basic advantages of the consumer type cordless phones. What I finally came up with is a decent solution that combines the best of both worlds. Now if John is on a call and Jane picks up the phone, she can place a new call without interrupting John. She can also, however, join John’s call if she wants.

In my Asterisk dial plan, I added a new extension to my internal context. Dialing *11 will join your call to an existing call if one is in progress. I do this with the BridgeAdd() application and the CHANNELS() function, like this:

exten = _*11,1,NoOp(Join call)
 same = n,If(${CHANNELS(trunk)})
 same = n,BridgeAdd(${CHANNELS(trunk)})
 same = n,EndIf()
 same = n,Hangup()

CHANNELS(trunk) works because any channel that is created for an external call has that pattern in the channel ID. In my pjsip.conf file, I have my trunk connections configured with that string in the name – so it’s an easy target for the regex parameter passed to CHANNELS().

I’ve got a Wifi SIP phone on the way that has some programmable softkeys. I suspect I’ll find a good use for one of those to make operating them as simple as a Panasonic DECT phone.

Bob’s Chocolate Flake

If you’ve been smoking a pipe for a while, you’ve probably heard of Lakeland tobacco blends. These mostly come from either Gawith & Hogarth or Samuel Gawith, and include things like Grousemoor, Ennerdale, and this one – Bob’s Chocolate Flake.

Lakelands get a bad rap from some people, and I suspect that’s mostly from people who have smelled a tin of a Lakeland but not actually smoked it. Ennerdale, for example, has a very distinctive and fairly strong floral note n the tin. Comparing to “old lady perfume“ is not entirely unreasonable, and some people assume the stuff will forever “ghost” a pipe. I’ve found this to be a baseless fear; I’m on my second tin of it and it’s fine. It doesn’t smoke like it smells.

I’d wanted to try Bob’s for a while, and finally scored an ounce of it. It’s a dense flake, which doesn’t easily crumble like some. I’d expected a strong chocolate note from the bag, but it’s more of a subtle undertone.

I’m not one of those people that describes tobacco in wine tasting terms. Maybe my palate isn’t sufficiently refined, but picking out “notes of dried fruit, sweet grassy almond” whatever just doesn’t happen for me. Bob’s does have a somewhat unique taste; not overpowering and not unpleasant. It’s definitely a more aromatic smoke, but doesn’t seem overly “flavored” as some are. I’m thinking of Lane 1Q / Captain Black’s vanilla, for example.

BCF smokes fine, given a bit of a rub out and 20-30 minutes to dry a bit. It lights evenly and seems to smoke without requiring much in the way of relights, just the occasional light tamp. I like it, but I don’t love it. Will I buy more? I can’t say at this point. I’m about halfway through the ounce of flakes I bought. One of the things I’ve learned about tobacco is that it seems to take a while, at least an ounce or two smoked over several months under different conditions and in different pipes, for me to decide whether I like a particular blend or not.

My tastes are also evolving as time passes and I get exposed to more blends. Where I used to love aromatics like 1Q, I now find them to have a displeasing chemical taste from what seems like a rather heavy-handed dousing with propylene glycol (PG), a humectant used to keep it from drying out. I’ve gotten more accustomed to VA/Perique blends, though my tolerance varies on those. About the only constant is my taste for English and Balkan blends; I’ve become a real fan of Latakia.

Anyway. Bob’s is a decent enough tobacco, but so far I haven’t really developed a love for it. We’ll see if and how that changes over time as I finish off what I have.

Brother Sebastian’s

Last night Lisa and I went to dinner at Brother Sebastian’s. This steakhouse has been in business since 1977, and was rebuilt after a fire in the mid 1990s.

I remember going to dinner there in the late 70s – there was at least one pre- or post-prom dinner there. I remember it being a really nice place with great food. I was interested to see how well it’s held up over the years; some of our old favorites really have not aged all that well.

The decor is a bit dated, but of course that’s kind of part of the charm. It seemed a little tighter and more dimly lit than I remembered, but honestly it’s been so long I could well be wrong. The menus listed their reviews as “best steakhouse” from 2013, which may have been when they were printed… no, those weren’t 2013 prices. The prices weren’t bad, assuming it really is a great steakhouse.

I was a little disappointed in the lack of higher-end Scotch available; Macallan 12 and Lagavulin 16 are about as fancy as it gets. I’d hoped for some Macallan 18, maybe, but it’s not a big deal. I don’t really know enough about wines to comment on their wine selection. I ordered their perfect Manhattan, which was pretty good – much better than my own previous attempts. Their prices for drinks were very reasonable; I think the Manhattan was $12.50.

It’s definitely a steakhouse of the old school. You’ll hike through the restaurant on your way to and from the salad bar, sharing (and occasionally competing for) space with other patrons as well as wait staff.

The salad bar is not bad, but nothing amazing. There was fresh spinach, iceberg lettuce, half a dozen or so toppings (bell pepper, black olives, shredded cheese, chopped onion, etc.) and a pretty wide selection of dressings.

I ordered a 6 oz filet medium rare with wild rice and linguine. Lisa ordered the walleye with vegetables. When the food arrived, I found the filet cooked medium well. There’s no excuse for that. Lisa’s fish was OK, but there were several bones that were impossible to see in the very dim light. Her squash was pretty badly overcooked. To their credit, when the manager stopped by to ask how we were and Lisa told her that, the manager comped her dinner. This illustrates why I very, very rarely order the generic “vegetables” side – and never if it includes squash or zucchini. Those seem to be the most frequently murdered dishes at nearly all restaurants. Broccoli steamed into mush runs a close second.

All in all… I can understand why some people like it and they seem to have a loyal following. That said, I honestly think we’d have gotten a better meal at Outback or Texas Roadhouse. It’s not on our list of places to go back to.

On the plus side, it’s not terribly expensive. The filet was $36, and the walleye was $26. That included the salad bar and sides. We skipped the appetizer and dessert; had the fish not been comped we’d still have been out of there for just under $100.

Peterson’s My Mixture 965

Picked up a tin of this at Ted’s Tobacco yesterday, and have been trying it out. Flavor wise, it’s a pretty good Latakia-forward English mixture. It needs half an hour or so out of the tin to dry out before lighting, but burns evenly. It doesn’t seem to need a lot of relights, and doesn’t get wet quickly.

I’m on my second bowl of it. The first one was yesterday in a newly purchased estate pipe that turned out to need some serious cleaning… it had some truly nasty tasting stuff inside and on the stem that I’ve since cleaned out. Today I’ve got it in my Jobey 450 paneled billiard. I have to say, this stuff is plenty strong. The taste is good; plenty of flavor and all, but the nicotine content is enough that I had to lay the pipe down halfway through. I can see this being a good candidate for smaller pipes and quicker smokes. I’m really glad I didn’t load up the Savinelli 320KS with a big pile of this! I’d probably be on the floor by now.

So will I buy it again? It’s too soon to say. I do like it, but at this point I’m thinking the Sutliff Balkan Sobranie match is more my speed. A bit milder and a lot less nicotine. I’ll smoke more of this, obviously, since I’m only maybe 5 grams into the 50g tin. if I can get past the nic buzz, it’s pretty good stuff.

In praise of calabash pipes

I have ended up with two calabash pipes. The first I bought used on eBay. I suspect it’s an old Pioneer; it’s a little unusual in that the gourd is rusticated. When I got it, the meerschaum bowl was in good shape but stuck fast in the gourd. I tried a number of different ways to get it unstuck, including freezing, and was unsuccessful. Eventually, as I was applying what I thought was “gentle but insistent” pressure to try to encourage it to come loose from the cork seal, the top of the bowl broke off of the rest. Damn! There was really no way to repair the bowl — believe me, I tried. I’ve seen people suggest plaster of Paris, but it dried instantly when I tried to apply it to one part of the bowl and wouldn’t stick. In the end, I ended up reluctantly and with no small amount of heartbreak removing the rest of the bowl in pieces.

It’s not impossible to find a replacement bowl for a calabash pipe, but so far it has proven impossible to find one the right size for this pipe. I’ve seen a number of bowls come up for sale that measure (where the bowl seats in the cork seal) in the 32-33 mm range, but mine needs to be 37.5 mm ideally, though I could deal with a little over or under that. Another alternative would be to have a new bowl made; there are places in Turkey that will do it, but for the cost I could just buy another calabash pipe.

While trying to find a replacement bowl, I did pick up a second pipe. This one is another probable Pioneer, with a smooth gourd, and I didn’t really like the shape nearly as much but thought I could re-shape the stem a little. As they are Vulcanite stems, I was actually able to do that with very little work and excellent results. As it turns out, the bowl was a very good fit for the first pipe as well. Bonus!! All it took was a little sanding of the cork seal on the rusticated pipe, and the bowl is a snug fit in both of them. Now I have two nice gourd calabash pipes — but only one bowl between them.

What I have discovered is that there is a reason calabash pipes were so popular at one time, and while less so today I suspect it’s mainly because so few have actually tried smoking one. New African gourd calabash pipes are quite expensive, and even used ones tend to be pricey unless you’re willing to do some restoration work. I have found, however, that smoking one is well worth the effort of finding and cleaning up an estate pipe. I’ve smoked aromatics, English, Balkans, straight VA, and VA/Per and loved every minute of it. The smoke is cool and dry, no matter the condition of the tobacco or your technique.

Both of my calabashes required a couple hours’ worth of cleaning, polishing the stem, and so on. The bowl was a mess, so I very lightly sanded it with 320 grit sandpaper to clean it up, After that I used 400 grit and Micro Mesh pads to smooth and polish it, and gave it a coating of beeswax that I then melted and removed the excess. The stem got deoxidized in Oxi Clean and polished up with Micro Mesh. The difference in cost between a somewhat rough but serviceable estate pipe that needs cleaning and restoration, an estate Pioneer that’s already been cleaned up, and a new pipe – many of which aren’t gourd calabashes, but use mahogany or some other wood for the body — is pretty large, on the order of several hundred dollars.

I keep looking for a source for a bowl to fit one of my pipes. I’m tempted to buy a suitably sized block of briar and make a briar bowl to fit. We’ll see how this plays out, I suppose.

Rolling your own dynamic DNS

First let me acknowledge that there are many ways to accomplish this. An easy solution for me would have been to simply use dyndns.com, no-ip.com, or one of the other commercial DDNS services supported by my router. For various reasons, I decided not to use one of those. Actually I did use duckdns.org for a while, but there were occasional issues that I got tired of dealing with.

I’m currently using Porkbun for DNS. They’re cheap, reliable, and have a decent user interface. They, like many other DNS services, also provide an API to make changes programmatically, without needing to log into their web site and make manual changes.

In my case, I have a shell script that runs as a cron job every 5 minutes. It checks my router for the WAN address and compares it to the last recorded address. If the two are not the same, it emails me and runs a Python script to update DNS.

I realize that some of this is pretty specific to my setup. Still, it might be a useful starting point. I found the Python script to update Porkbun DNS on their web site. The command to check the WAN IP address at the router may work for yours, or you may need to take a different approach.

#!/bin/bash

# Read the old IP address from a file.  The EOL will go into a variable we don't use.  This is necessary.
read OldIP b < /home/dale/myipaddress.txt
# Get our curent IP address from the router.
OUTFILE=~/myipstatus.txt
MyIP=`ssh -o StrictHostKeyChecking=no [username]@[router.ip] "ifconfig eth0 \
| grep inet | sed -e 's/.*addr:\([^ ]*\) .*/\1/'"`

while [[ $MyIP == "" ||  $MyIP == "192.168."*  ]] ; do
 sleep 10
 MyIP=`ssh -o StrictHostKeyChecking=no [username]@[router.ip] "ifconfig eth0 \
 | grep inet | sed -e 's/.*addr:\([^ ]*\) .*/\1/'"`
done

if [  "$OldIP" != "$MyIP" ] ; then
  echo "`date`" > $OUTFILE
  echo "Found new IP $MyIP, which is different from our previous $OldIP!" >> $OUTFILE
  echo "Updating Porkbun DNS entries..." >> $OUTFILE
  python3 ~/porkbun/porkbun-ddns.py ~/porkbun/config.json <mydomain.com> <hostname> >> $OUTFILE
  mail -s "IP address change detected" <myemail@domain.com>  < $OUTFILE
  echo $MyIP > ~/myipaddress.txt
else
 echo -n "." >> $OUTFILE
fi

In practice, this can result in a 5-10 minute lag between the time your IP address changes and the time your DNS is updated. If your ISP changes your IP address frequently, it may be too long. In my case, our ISP only changes our IP on rare occasions — typically less than once a year.

Again, there are other approaches, but most will not update DNS entries in your own domain. You can get around this to a certain extent by using CNAME entries, but this was the best way that I found to update my own domain’s DNS.

Running Web Servers on Residential Internet

Once upon a time, residential home Internet connections — cable modem and DSL being the choices at the time — were unfiltered and un-firewalled. This had good and bad aspects to it. You may or may not have been firewalled off from your neighbors. I remember a guy who worked for me demonstrating on the TV news one night how he could see every Windows PC in his neighborhood, and send print jobs to random peoples’ printers if he wanted to. Even after they wised up to that little bit of “openness”, it was still possible to run your own services — mail, web, and so on.

Since then ISPs have come a long way. Residential cable, DSL, and fiber connections, often topping out at 1 GB or even higher, are tightly restricted. Your ISP really wants to support only web prosing and gaming, and most certainly do not want any services running on their network. No web servers, no email (in or outbound). Anything inbound on ports 80, 25, and often 443 are blocked, as is outbound port 25.

So, you’ve got your own little web server you run for your own blog (like this one)… or one you run for a nonprofit, club, whatever. You’ve got your own domain and want to run your own email. The solution is usually some combination of a hosted VM, Google, what have you. But it can get a little expensive, and of course you’re dependent on others for critical bits and pieces of your infrastructure. I can’t take all of that pain away, but I can maybe help to reduce it somewhat.

So let’s look at the issues you may face, and how to solve them. I’ll detail each solution in subsequent blog posts, with solutions that may work for you as they have for me.

  • Your IP address is dynamic, and you need reliable DNS. This can be fixed using a script to detect when your IP address changes, and update your DNS accordingly. It’s not perfect in that there will be a delay before the IP address change is detected and updated, but if your IP only changes occasionally it’s “good enough”. Of course there are dynamic DNS (DDNS) solutions that will do this as well, if you don’t mind paying for them. I’m a cheap bastard and I like a challenge, so I rolled my own.
  • Your ISP blocks connections on port 25 (SMTP). This is pretty much going to require an external mail relay. I have yet to find a way to get the rest of the world to use any port other than 25 for SMTP connections… it really is too bad there’s not a DNS based way around this, like a SRV record (see RFC 6186). Until that happens, I use a small external hosted VM relaying mail on a different port. It could actually be a lot simpler, but I prefer to keep our actual email on a server here, at my house.
  • Your ISP blocks incoming traffic on web ports 80 and 443. Easy. Nginx is your answer, what was the question?

The fun part is sizing this stuff. If you’re used to working in a corporate environment like I have been for the past (mumble) years, you’re thinking, “OK, a 4 CPU 16 GB machine for a mail server, than another one for the proxy… that might be OK… ” Nah. You might be shocked at just how little power it takes to do this stuff. After all, we’re just passing packets around. The TLS encryption is the most heavyweight thing being done, I think. If I had a solid place to hang a Raspberry Pi where it would have a static IP and no filtering of privileged ports, it wouldn’t break a sweat — though I’ve had too many of them just stop working to trust them for this kind of stuff, really.

The Vespa rides again

Or, I ride the Vespa again.

I got the SIP ignition kit installed, which vastly improved the electrical situation. The original 6V AC magneto system gave a dull glow from the tail light (there is no brake light on this scooter) and a headlight that was adequate for very low speed riding around the neighborhood at night, but nothing else. Turning on the headlight with the engine at idle was not a good idea. Now I’ve got 12V AC, a nice bright tail light, bright halogen headlight, everything works – even at idle.

I also took the opportunity to clean out and de-rust the gas tank, and clean the carburetor and replace the gaskets again. Though I don’t have the original, marginally effective choke connected, it still starts and runs well. I put a new exhaust with an expansion chamber on it — it sounds about the same as before, but seems to have a bit more “oomph” than it did. Still not a race bike by any measure! I think it could whip the average Power Wheels though.

I’ve ridden it on a few laps around the neighborhood, and even on a few errands to the stores that I can get to without riding on a major road. It does reasonably well, with a top speed of maybe 40 if you have enough road to get there.

Unfortunately it’s now developed a fuel leak, which I suspect is the fuel tap at the bottom of the tank. I’ll try tightening it up but I’ll probably need to replace the gasket. I want to get that done before this Saturday, when I’d like to ride it in the neighborhood July 4th parade.

Bump stocks

The Supreme Court issued a ruling that invalidates a 2018 ban on “bump stocks”. These are designed to increase the rate of fire of semiautomatic rifles using the recoil to mechanically “bump” the trigger against the user’s finger.

Is there any kind of practical use for this, other than having fun or possibly mowing down people? Not really. It’s not like there’s a need for anything of the sort while hunting or target shooting. Of course, the Second Amendment has nothing to do with either hunting or target shooting, so that isn’t really pertinent. There are a lot of guns out there that are essentially useless during peacetime other than for pure entertainment. Never underestimate the childlike glee of emptying a 20- or 30-round magazine downrange, safely, in a brief period. If anyone ever offers you the chance to run a few dozen (or a few hundred) rounds through anything on full auto, take it. No question. I’ve fired an M60 machine gun, an M16 on full auto, and a charming little .22 submachine gun that looks like the love child of a Thompson and a Lewis gun. That one was suppressed, for even more fun. I highly recommend it if you get the chance.

Don’t take this to mean that I’m in favor of bump stocks, or in favor of banning them. My opinion on that subject honestly doesn’t matter one bit. What does matter is how this whole drama has played and is playing out.

In 2018, the BATFE issued a ruling that they considered bump stocks to be included in the definition of a “machine gun”. Machine guns are, to a degree, legal to own, as long as the gun was manufactured prior to 1986 and the owner has the gun registered with BATFE and has paid a tax. Since supply is very limited and getting smaller all the time, owning a machinegun is beyond the reach of most gun enthusiasts. Even the cheapest full-auto gun will set you back well over $10K, plus a long slog of paperwork. Of course since bump stocks were developed after 1986, if they’re ruled to be machine guns — they’re illegal.

But there’s a specific definition of a “machine gun” in the National Firearms Act. The BATF had issued several letters in the years prior to 2018 stating that bump stocks were not considered machine guns, and were legal. In 2018, they reversed that and declared them to be machine guns. This kind of semi-random rulemaking is not unusual for the BATFE, nor is it unique to them — plenty of agencies do the same kind of thing.

The minority dissenting opinion from the Supreme Court, written by Justice Sotomayor for herself, Kagan, and Jackson, said this:

“When I see a bird that walks like a duck, swims like a duck, and quacks like a duck, I call that bird a duck. A bump-stock-equipped semiautomatic rifle fires ‘automatically more than one shot, without manual reloading, by a single function of the trigger,’ I, like Congress, call that a machinegun.”

Well, there’s the problem. You see a duck, someone else sees a loon or a goose or whatever. A bump stock does not technically allow the gun to keep firing “by a single function of the trigger”. It just allows the shooter to activate the trigger quite a bit faster than most of us could do manually. That’s according to all those BATFE issued letters saying that they were not machine guns.

Congress did, in 1934, write a definition, and the BATFE has been interpreting and re-interpreting it ever since. If Congress wants to impose some improved or additional clarity, or if they want to expand or change the definition, then Congress should do so rather than allowing the BATFE to do what they lack the will or the motivation or the intestinal fortitude to do. Updating a law every 90 years or so might not be the worst thing that could happen.

Resurrecting the Vespa (again)

The Vespa scooter (a 1955 Vespa VL1, if you’re not familiar) has been parked in the hangar for several years now. I don’t really remember how long, exactly, but the license plate expired in 2018 so it was around then. I’d ridden it a couple of times around the airport, but several years ago it refused to start and I hadn’t figured out why. I knew it was ignition related, and I was holding off until I could find the CDI ignition kit I knew I’d bought and install that. In August of 2021 I cleaned out the gas tank (the gas had gone very bad) and carb, and got it running — but it refused to start more than once without taking the flywheel off. I eventually put it more-or-less back together and there it’s sat since.

Well, the day came when we got a letter from the airport authority demanding that we get a bunch of stuff out of the hangar – including the scooter. In the process I managed to find the CDI kit. Unfortunately, I then discovered that it’s a complete pile of shit from a horrible now-defunct Vietnamese supplier. They couldn’t even drill four holes in a square to fit the fan. I don’t think I’ll be using it.

On the bright side, I did discover the cause of the ignition problems — a broken wire on the condenser. A lot has changed in the marketplace since the last time I needed to buy scooter parts for this rare old scoot, and I ended up ordering a bunch of parts from Germany to fix the ignition as well as a bunch of other things that needed fixing. When the parts arrived, I replaced the points and condenser, but didn’t even bother to set timing or point gap before seeing if that made a difference. Miraculously, the gas was not bad enough to cause problems. I squirted a bit into the carb and the old gal started and ran on the first kick. There is a Santa Claus!

Now I’m going through doing some post-restoration work that has been deferred for far too long. I’ve installed new shift cables (the old ones were too short and hit the legshield when turning). I removed the grips, cleaned everything up, lubed and re-installed. I put in a new clutch inner cable and put on the new spare tire carrier I finally found (these didn’t exist a few years ago). I’m replacing the rubber bits that I bought from various places back when I first finished up the restoration; they were made from some horrible shitty rubber that either just dried out and crumbled, or turned into a mess of stuff that looked like someone had hit it with a torch. Some of the wiring has proven inadequate; I’m replacing the wires to the headlamp assembly. Along the way I also cleaned up the carb and fuel system again, replaced the gearbox oil (and the oil seal), and I’m about to see why the steering stops don’t appear to be working on either side.

SIP Scootershop has proven to be my new go-to source for a lot of things, though Scooter Mercato has some good stuff as well. Some of the old places I’ve used either don’t exist any more or have far less inventory available for the old widebody Vespas. I get it; there are a lot more 60s and 70s and later scoots out there than the ’46-’55 models. I’m just glad there are places picking up the slack, even if they are nearly all in Europe.