tag:blogger.com,1999:blog-47716316363335830672024-03-08T13:01:29.805-08:00Machines Plus MindsPublic musings about the technologies and implications of cloud computing, open source software, open standards, and any other stuff that I find interesting.Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.comBlogger123125tag:blogger.com,1999:blog-4771631636333583067.post-1791614308059312692023-11-28T00:49:00.000-08:002023-11-28T00:49:09.291-08:00<p><span style="font-family: Georgia, serif; font-size: 26pt; white-space-collapse: preserve;">Home automation at Murasakijou: Controlling the Lighting</span></p><span id="docs-internal-guid-7022374f-7fff-d719-9cef-8909bf65563b"><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Georgia, serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Bulbs vs Switches</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">When it comes to smart lighting, you face two main choices: smart bulbs or smart switches. Smart bulbs are a good starting point if you're renting or just beginning to explore smart home technology. However, they come with drawbacks. First, the 'smart' part, which isn't cheap, is embedded in a consumable item. And let's be frank, those claims of 100,000-hour lifespans are often overstated. Secondly, a smart bulb in a fixture with a standard switch becomes unreachable if the switch is turned off. You might find yourself needing to block the regular switch and add a separate, smart switch, which can be a bit awkward. And if something goes wrong, you lose manual control unless you uncover the original switches. Even then, it might not work as expected. Sure, there are workarounds, but they can be more trouble than they're worth.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">If you own your home, I suggest opting for smart switches. They let you use any bulbs or fixtures, including the ones you already have. Most smart switches, especially those that look like regular light switches, default to manual control. They operate just as you're accustomed to, turning the electricity on or off to your fixtures. Installing smart switches does mean dealing with some house wiring, but it's manageable. You can learn a lot from YouTube tutorials, get the right tools, and follow instructions carefully. Alternatively, enlist a friend who's handy with basic wiring, or in the worst case, hire a handyman skilled in basic electrical work.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Just because I usually recommend and use smart switches doesn't mean I don't find value in smart bulbs and smart fixtures. They do have their perks. For instance, smart fixtures are great for remote dimming, and RGBW bulbs and fixtures add a fun, colorful flair. I've kept some smart bulbs from my experiments with SmartThings and found creative uses for them. Typically, I use them for decorative and accent lighting, not primary light sources, to circumvent issues associated with smart bulbs.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Georgia, serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">A small lesson on color temperature</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">So, why mention "RGBW" and not just "RGB"? These smart bulbs often allow you to adjust the 'whiteness' of the light, varying from a cozy 2700K to a bright 5000K. It's useful to understand the concept of color temperature in lighting. Despite seeming counterintuitive, in terms of color temperature, 'cooler' (bluer) light has a higher Kelvin number, while 'warmer' (redder) light has a lower one. Think of heating iron: it starts red and goes to blazing white as it gets hotter. A 2700K bulb mimics the reddish-white glow of iron at 2700K, and a 5000K bulb resembles the brilliant white of iron at a higher temperature. This analogy works well for most home lighting devices, though it's not exact for LEDs. For reference, noon sunlight is around 5500K. Outside of a lab or photography, you won't encounter much beyond this range.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Color temperature is also measured in 'mired', a term more common in professional photography and stage lighting, and used by Philips Hue bulbs. It's a bit more intuitive but not yet widely used in home automation or on bulb packaging, so I'll set it aside for now. But knowing about color temperature is important, even outside of smart homes. It helps you choose the right light for the right space. In my home, I prefer 2700K lights for general ambiance but opt for 5000K in specific areas like over the kitchen counter, bathroom mirrors, my reading lamp, and workshops.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Georgia, serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">Picking the switches, and Z-wave</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">Let's get into specifics. I did a little bit of research, and then picked Zooz switches, which I bought directly from [</span><a href="https://www.thesmartesthouse.com/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space-collapse: preserve;">https://www.thesmartesthouse.com/</span></a><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">]. Zooz devices use the Z-wave protocol, a well-established wireless protocol controlled by Silicon Labs. Despite being under one company's control, or maybe because it is, it's reliable and interoperable. The Z-wave Alliance, a group of hundreds of companies producing thousands of compatible products, ensures interoperability, thanks to Silicon Labs' conformance testing rules. Z-wave is mature enough that you can find devices at places like Home Depot. The Z-wave tech has evolved from the "300" series to "500" (best to avoid, old and slow) and now "700" and "800" series. I went with the "700" series as the "800" wasn't available at the time. I'm hoping the 700s and 800s work well together, but I haven't tested that.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">I bought a Zooz equivalent for every existing switch in my house. Where there was a dimmer switch, I chose Zooz's ZEN77 dimmer variant. Otherwise I just got the ZEN76 on/off variant. I considered getting dimmers everywhere, but then I would have to make sure that every fixture and bulb in the house was dimmable. I probably should have, but I don’t want to go back and replace so many right now. Maybe later.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">In my bathrooms and laundry room, where switches controlled vent fans, I used Zooz's ZEN30 light and fan combo switch - a neat solution since it replaces two switches with one. This is key because most smart switches use a triac, fine for lights but not for inductive loads like motors. Zooz smartly pairs a triac for the light (even dimmable) and a mechanical relay for the fan.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">However, I ended up with extra switches. I didn't account for 'N-way' light circuits and 'traveler lines'. Zooz switches have a feature here that other brands don't, but I'll delve into that in the next installment.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">There's one room in my house designed for floor lamps plugged into wall outlets, controlled by a wall switch. I found strong advice against using a triac for switching wall outlets, so I opted for a GE </span><span style="font-family: Georgia, serif; font-size: 15pt; white-space-collapse: preserve;">“Embrighten” Z-wave </span><span style="font-family: Georgia, serif; font-size: 15pt; white-space-collapse: preserve;">smart switch with a relay not a triac from Home Depot.</span></p><div><span><br /></span></div><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 10pt; margin-top: 0pt;"><span style="font-family: Georgia, serif; font-size: 15pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;">So, how did the install go? And, what about this 'traveler' feature? More on that in the next installment.</span></p><br /><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Georgia, serif; font-size: 20pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variant-position: normal; font-weight: 400; vertical-align: baseline; white-space-collapse: preserve;">In our next installment: actually wiring, and travelers</span></h1></span>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0Bainbridge Island, WA, USA47.624879100000008 -122.521000819.314645263821163 -157.6772508 75.935112936178854 -87.3647508tag:blogger.com,1999:blog-4771631636333583067.post-5020399113901823472023-11-27T00:21:00.000-08:002023-11-27T00:21:18.723-08:00Home automation at Murasakijou: Welcome<h2 style="text-align: left;">Introduction</h2>Growing up with iconic shows like Star Trek and Battlestar Galactica, I was mesmerized by the futuristic technology they showcased—computers that could track people, control environments, and help solve whatever mystery of the day that the plot demanded. The seamless integration of technology in these shows always captivated me. Interestingly, the lack of consistency in these fictional universes often meant that the technology was conveniently forgotten in one episode, only to become crucial in another. Imagine if Lt. Worf's console had buzzed every time an uninvited guest beamed onto the ship!<br /><br />Fast forward to today, and the sci-fi of my childhood is no longer just fiction. The automation seen in newly built office buildings, with their computerized lighting, HVAC systems, presence detection, and security, all monitored and controlled remotely, mirrors those once-futuristic ideas. Even in my work at Amazon, I've seen how this technology can integrate with modern cloud solutions like AWS CloudWatch, an improvement on the proprietary databases typical for “enterprise solutions”.<br /><br />Home automation, once the domain of tinkerers who could build their own hardware and write their own firmware from scratch, has now become mainstream, with a plethora of “Internet of Things” (IoT) products promising ease of use. However, there's a twist. The industry is still evolving, and companies often change course or shut down, rendering their products obsolete and orphaned—ironically making the 'T' in IoT all too often stand for 'trash'. <br /><br />My personal foray into home automation began modestly, evolving from stand-alone motion-activated lights to more sophisticated systems like SmartThings and Alexa-powered devices. Yet, these early experiments were limited by the technology's siloed nature and lack of interoperability.<br /><br />Then, three pivotal things happened: the technology matured, I bought a house, and the Home Assistant project emerged. Home Assistant is exactly what I wanted in smart home technology, emphasizing user control, interoperability, and a vibrant open-source community.<br /><br />Since purchasing my home in the summer of 2020, I've embarked on a journey to retrofit and upgrade its 20-year-old tech. This blog series will chronicle my adventures in home automation – the successes, the failures, the choices, and the lessons learned. I’ll share insights on the technologies and products I've used, all without any corporate sponsorship.<br /><br />Why "Murasakijou"? It's a nod to my love for Japanese culture and language, meaning "the fortress of purple," and it's the name I've given my home.<br /><br />This will be fun. Let’s get started.<div><h2 style="text-align: left;">First, we start with Home Assistant</h2>Home Assistant, or Hassio, is a practical choice in my home automation journey. It's open-source, which means it's free and customizable – a significant advantage for someone like me who enjoys personalizing technology. Its major appeal lies in its compatibility with a wide range of devices. I'm not restricted to products from a single company; it can manage gadgets from various manufacturers, even those that typically don't cooperate with their competitors.<br /><br />The community surrounding Home Assistant is invaluable. Filled with users and developers constantly refining the system, it consistently provides frequent updates and new functionalities. This community-driven development keeps the platform both relevant and evolving.<br /><br />Privacy is a crucial aspect of Home Assistant. It operates locally, keeping my data secure in my home, away from external cloud servers. This also means my smart home system remains functional, even when my internet connection is down.<br /><br />Where Home Assistant truly excels is in its customization capabilities. It allows me to tailor my smart home setup exactly to my preferences, from basic operations to intricate automations. This level of flexibility is perfect for aligning the system with my desires.<br /><br />Home Assistant provides a flexible and user-focused approach to managing my home automation. It's not some corporate product; it's a tool that puts me in charge of how my home operates.<br /></div><div><h2 style="text-align: left;">Next, some requirements</h2>I'm not the only one in my house; my family's here too. So, the smart home setup needs to work for them too, not just me. If the internet cuts out, most things should still work. If the Home Assistant computer or any crucial device goes down, the house should work in manual mode, not just shut down. In case of a power outage, and when power returns (be it from the generator or utility), everything must return to normal. I've got to be able to control and to fix things remotely, and anyone in the house should manage basic smart tasks. The property's big, over 5 acres, remote, and full of trees. I want the automation to cover everything - from the mailbox at one end to the well at the other, including the house, gardens, shop, and garage.<br /><br />I aim for most parts to be retail-bought, from reliable companies, with warranties and UL certification, and meeting building and electrical codes. I prefer to avoid devices that need a constant internet connection, but I'm open to some flexibility, provided I can take manual control during internet outages. I am unwilling to pay annual subscription fees without good reason. While I'm up for reprogramming devices and creating custom solutions with things like ESP32 microcomputers, anything I custom build must not be critical to using and enjoying the house.</div><div><br /><h2 style="text-align: left;">In our next installment: light switches</h2></div>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0Bainbridge Island, WA, USA47.624879100000008 -122.521000819.314645263821163 -157.6772508 75.935112936178854 -87.3647508tag:blogger.com,1999:blog-4771631636333583067.post-24193466139876574732022-10-05T16:29:00.004-07:002022-10-05T16:29:38.153-07:00Operation Snip & Drip, killing Blackberry<p> My operation "snip and drip" for invasive blackberry abatement is underway. I do about 4 dozen blackberry growths a day on weekends, and about a dozen every few days during workweek. Right now is when this has to be done, as the plants are drawing water and nutrient back to the underground rhizomes, and getting ready to abandon the canes for the winter.</p>I cut each cane about an inch from the soil, and then drip a single drop of 85% concentrate glyphosate onto it, using a microdrip squeeze bottle.<br /><br />I've noticed that about 30 seconds after cutting, an impermeable glue layer forms over the cut. Blackberry has evolved countermeasures. So, I have to move fast: cut, drip. clear, and then move to the next. This has to be done carefully. By hand. It's probably not possible to pay someone to do the work with the necessary level of care.<br /><br />This is the first and only use of chemical herbicide I've used on the property. Nothing else works on invasive blackberry, other than just digging out the soil and sieving out the roots and rhizomes. Which I've already done. Twice. And can't do around the fruit tree and in the forest. And I'm not going to widely spray this glyphosate. Just very focused snip and drip, one plant at a time, until I've killed them all. Next season I will also start doing the damn Scotch Broom and the English Ivy.Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-28568126239429597162022-09-14T18:50:00.000-07:002022-09-14T18:50:10.923-07:00Replacing the The Phone Company, for my parents<p><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">I replaced my parents' wireline telephone service with a VoIP service, got rid of the telemarketers who were constantly pestering them, and cut the bill from over $70/month to less than $3/month, which I am now paying myself. My parents will never see or pay a landline phone bill again. Here is how I did it, for the curious, and for anyone who wants to do something like it themselves.</span></p><span id="docs-internal-guid-4563ff2e-7fff-0574-10c5-69e7ca725890"><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">We did not want to lose the phone number. We have had that number since 1982. Everyone in the extended family knows that number, many of us have memorized it, it is in multiple directories in my parents religious congregations records, it’s in the service accounts for many medical, financial, and social services, and we did not want to confuse elderly extended family members. And I especially did not want to confuse my parents.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The thing that made this doable is my parents house has pretty good cable internet. If their internet came via DSL from The Phone Company, this would have to be done a bit differently.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">The VoIP Provider</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">First, the VoIP provider. I use VoIP.ms [ </span><a href="https://voip.ms/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://voip.ms/</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ] because they are a good value, they are mostly It Just Works, and they have a useful set of composable telephony services I can configure via their web console. If I had had to write code, or mess around with some integrated “business solution provider”, or a raw SIP trunking service, this would not have been nearly as easy. And using an off-the-shelf “easy to use” consumer grade VoIP gadget would have cost more, and not given me the features I wanted.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I already had a VoIP.ms account, billed to my credit card. Of course, I have 2FA turned on for it.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">A VoIP.ms main account id is a six digit number. For the sake of example I will say mine is “100000”.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">There are docs and examples at [ </span><a href="https://wiki.voip.ms/" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://wiki.voip.ms/</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ].</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Service and Gadgets Used</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The VoIP.ms telephony services I need are a SIP subaccount, a voicemail, a set of forwards, a ported DID, and an IVR.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">SIP subaccount</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">First, I created a SIP subaccount. I named it “parents”. A subaccount is a SIP endpoint that a SIP client can login to. This will be the interface to the SIP gadget, called an “ATA”, and which is in turn the connection to the classic antique POTS phones in the house.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">A subaccount has a POP Point of Presence, the name of a city. All sorts of things don’t work correctly if this is not the same everywhere in a configuration. For the sake of example, I will say I am using the POP at metropolis2.voip.ms</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">From all this VoIP.ms creates a URI of [ sip:</span><a href="mailto:100000_parents@metropolis2.voip.ms" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">100000_parents@metropolis2.voip.ms</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ]. If someone had a SIP URI enabled voip client or good enough VTC client, they could connect to that URI, and ring my parents’ house phones. I think Zoom and Chime can do that, but I’ve not tried it.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I then created a random long (at least 16 random characters) password. People who pick passwords like “password”, “secret”, or “letmein”, or someone’s birthday, are idiots, and deserve all the misery they are about to experience. Random. Passwords. I used my Bitwarden password vault to generate and store that password. I will need it later when configuring the ATA.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Voicemail</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Next, a voicemail. Again I named it “parents”. I created it, and then set a PIN code on it. I literally rolled a d10 4 times to generate the random PIN.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">VoIP.ms has a feature where voicemails get transcribed to text, and also a feature to email the audio file and the text transcription to someone. I turned that on, with the email going to my parents. The transcription service costs a little bit per minute, but I think it’s well worth it.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The VoIP.ms voicemail service is exactly like every other telephone company voicemail service. The access code is *97. When this is all set up, my parents can call the DID from their mobile and then enter that code, or pick up a house handset and dial that code when they hear dialtone, then dial the PIN, and be in the voicemail service.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Forwards</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Next, the forwards. I want to be able to forward calls to my parents' mobile phones, and also to my own. VoIP.ms requires that I predeclare forwarding destinations. I already had a forward declared for my own personal mobile. I added ones for each of my parents' mobiles, plus ones for each of my siblings’ mobiles.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Ported DID</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Next, the ported DID. A “port” is telling the origin phone company “I’m leaving you, give control of my phone number to my next phone company”. A “DID” is a “direct inward dial”. What that really means is it’s a phone number, plus all the hidden glue so that the public telephone network knows what to do with it when someone dials it. VoIP.ms manages the port process for gratis, and then charges less than a dollar per month for a US DID, which is what the telephone network itself charges them.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To port a number, I needed permission from the account holder, and a bunch of information that is on the phone bill, and a scan/copy of the most recent phone bill. So, I called up my parents, had them find their most recent paper bill, had the account holder write “Port Approved” and a signature near the service address, and then they postal mailed it all to me. In theory they could have just scanned it themselves, but it was just easier if I did that myself.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The VoIP.ms porting team needs the telephone number, the account number, and a bunch of other information off the bill, and the scan of the bill. It takes a week or so for the port to process. It can take longer if the origin phone company is obstinate, but that’s pretty rare now. VoIP.ms sends an email as each stage happens, and when it’s done.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Soon after the port process started, VoIP.ms created the DID entry for it in their web UI. It won’t work until the port is completed, but in the meantime, it is there to connect the other services to.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I then linked the DID and the SIP subaccount to the voicemail. This is so if someone calls the DID and then dials *97, they will go into the voicemail service into the correct voicemail box. And if there is a busy, timeout, or network failure, the call can go to the correct voicemail box.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I enabled 911 service on the DID. This costs $1.50/month, which is what the 911 system charges VoIP.ms. When setting up 911 service, I had to provide the physical address of where the service endpoint is, e.g. my parents’ home address. Do not be funny here and do not skip this step, this is how the PSAP emergency operator knows where to send an ambulance or the fire department.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">IVR greeting, made with Amazon Polly</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Next, I created the IVR greeting recording. I used the Amazon Polly Text-to-Speech service, in part because I work for Amazon, and in part because I could use a console to play around with it. Technically, Amazon Polly costs money, but it provides several hundred minutes for gratis on initial use, which is all I needed.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">To use Amazon Polly, I logged into my AWS console, and enabled Polly. And then went to the Polly console, and played around a bunch, reading docs, and learning SSML (Speech Synthesis Markup Language) markup, and listening to the various voices available.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I finally picked “Joanna, Female, Standard, English” as the voice, and the following text as SSML markup text to turn into speech:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><speak></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><prosody volume="loud"></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">You have reached <say-as interpret-as="telephone">3165550199</say-as>.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The Kent residence in Smallville.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><prosody rate="fast">If you are a telemarketer, hang up put this on Do Not Call.</prosody></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">If you can, please hang up and call Jonathan’s or Martha's personal mobile directly.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Otherwise,</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><prosody rate="slow"></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">press 1 to leave a message,</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">press 2 to ring the house phone,</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">press 3 to forward to Martha's mobile,</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">press 4 to forward to Jonathan's mobile.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"></prosody></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Thank you.</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"></prosody></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 18pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"></speak></span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I had Amazon Polly render that marked up text to a MP3 file, which can be used by VoIP.ms. Otherwise I would have had to mess around with ulaw pcm settings, and I didn’t want to. Voice grade MP3 is good enough.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">IVR Interactive Voice Response</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Then I created the IVR. IVR means “Interactive Voice Response”, and is the phone tree thing we are now all used to dealing with when calling a corporation. Again, I named the IVR “parents”.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I was expecting configuring the IVR to be harder than it actually turned out to be. First I uploaded the mp3 greeting file, then I configured the mappings from DTMF digit strings to VoIP.ms services. So I mapped “1” to the voicemail, “2” to the SIP subaccount, “3” to forward to my mother’s mobile, “4” to forward to my father’s mobile. As an undocumented feature, “51” forwards to my mobile, and “52”, “53”, “54”, and “55” each forward to each of my sibling’s mobiles.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Then I connected the DID to the IVR. So when someone dials the number, it picks up, the greeting audio gets played to the caller, then the caller can press DTMF digits. Well actually, the IVR has “early interrupt”. Someone who knows about it can call in, and when the recording starts, they just immediately press “2”, and immediately ring the house phones.</span></p><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"><span style="color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Bypassing the IVR, depending on who is calling</span></h3><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">A neat feature that the IVR has is “caller id bypass”. An incoming call that has a specific CID can bypass the IVR, and be connected directly to some other VoIP.ms service. I have the bypassed numbers just directly ring the house phone. For example, my mother’s sister regularly calls to talk to my mother, and does not need to be confused by the IVR. My parents have given me a list of numbers that need the bypass, and I add them as they request them.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Some of them are for elderly relatives, and some of them are for the notification robots from their medical providers.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Making the existing house phones still work, using an ATA</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">My parents have several classic Bell System Western Electric Trimline handsets [ </span><a href="https://en.wikipedia.org/wiki/Trimline_telephone" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://en.wikipedia.org/wiki/Trimline_telephone</span></a><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"> ] , and have had them since 1982 when they moved into the house. They probably don’t even realize those handsets are now antiques, somewhat in demand. I want them to keep working just as they always have.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I bought a “Grandstream HT801 Single-Port Analog Telephone Adapter” [ https://www.amazon.com/dp/B06XW1BQHC ], for $35. As near as I can tell, someone at Grandstream sat down and said “Let’s make a residential grade ATA that Just Works and Does Not Suck, and then sell it for cheap”, and created the HT801. Good on you, Grandstream, thank you.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">An ATA is a device that interfaces a classic handset to the internet. It has an RJ11 port that provides dial tone, ring tones, ringer voltage, and understands when you press the DTMF buttons on the handset. And it has an RJ45 ethernet port, that really wants to connect to a home router, and then connect out to a voip provider, such as to VoIP.ms.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I bought that ATA, and then set it up on my own workbench to program it. It was pretty easy. I configured it to connect to the SIP subaccount “parents”, and to generate the necessary powered ringer voltage and ringer frequency. Then I reshipped it to my parents, with careful installation instructions.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Usually, you connect a single classic handset directly to an ATA. But I wanted as few changes as possible for my parents, and the HT801 is mighty enough to provide sufficient dialtone power and ringer voltage to an entire house telephone wiring network and several classic “dumb” handsets, so I did something more awesome. I’m told that the HT801’s bigger brother the HT802 cannot do this, so, be warned.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">We disconnected the house entirely from the old wireline company! My brother and my father went outside, found and opened the demarc where the phone line came to the house, brushed away decades of cobwebs and dust, and physically disconnected the little RJ11 bridge cable, and put a piece of tape over the demarc RJ11 jack. And with that, all the phones in the house went dead.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">They then took the configured ATA, plugged it to wall power, to an open RJ45 ethernet port on the home router, and to an open nearby RJ11 walljack. And with that, all the phones in the house were again alive, and had light and dialtone when picked up. If there had been any “smarts” or filters inside the house phone wiring, we would have had to go chase that down and remove them, but there were not, so we did not.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">If the ATA didn’t have enough power to light up the house wiring and all the phone ringers, I would have had to buy a “Ring Booster”device. But it was able to drive them, so I didn’t have to. </span></p><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"><span style="color: #434343; font-family: Arial; font-size: 14pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Details on programming the ATA:</span></h3><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Here is the guidance from VoIP.ms to programming a Grandstream HT80X ATA: </span><a href="https://wiki.voip.ms/article/Grandstream_HandyTone_802_-_HT802" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">https://wiki.voip.ms/article/Grandstream_HandyTone_802_-_HT802</span></a></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Here is the administration and programming manual for the HT80X:</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><a href="http://www.grandstream.com/sites/default/files/Resources/ht80x_administration_guide.pdf" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; text-decoration-line: underline; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;">http://www.grandstream.com/sites/default/files/Resources/ht80x_administration_guide.pdf</span></a></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Configure the local networking stuff, DHCP, etc for the local internet router. The defaults are fine.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Configure the SIP/VOIP settings as follows:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Primary SIP Server: metropolis2.voip.ms</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Failover SIP Server: <blank></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Outbound Proxy: <blank></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">NAT Traversal: Keep-Alive</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">SIP User ID: 100000_parents</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Authenticate ID: 100000_parents</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Authenticate Password: <SIP PASSWORD></span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Name: KENT</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">DNS Mode: A Record</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">SIP Registration: Yes</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Unregister On Reboot: No</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Outgoing Call Without Registration: Yes</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Register Expiration: 5</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Preferred DTMF method: In-audio, RFC2833</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Use P-Access-Network-Info Header: No</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Use P-Emergency-info Header: No</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Enable Call Features: No</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Dial Plan: {[x*]+}</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Preferred Vocoder: PCMU, PCMA, G729</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Check SIP User ID for incoming INVITE: Yes</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Allow Incoming SIP Messages from SIP Proxy Only: Yes</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Here is the bit to make it able to drive the house wiring instead of just one handset:</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Ring Frequency: 20</span></p><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 22.5pt; margin-top: 0pt;"><span style="font-family: Calibri, sans-serif; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Enable High Ring Power: Yes</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Recording and Transcribing calls, make sure that is off</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">VoIP.ms can record and transcribe incoming and outgoing calls, on a per subaccount basis and on a per DID basis. I turned that on while I was programming and debugging, and turned it off after I verified that everything was working. Listening in on people’s phone calls is creepy. Especially your parents. Make sure that is turned off for that DID and for that subaccount.</span></p><h2 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;"><span style="font-family: Arial; font-size: 16pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">If no answer, busy, timeout, or fail: fallback to voicemail</span></h2><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I’ve configured both the DID and the subaccount so that if it rings for 15 seconds with no answer, it falls back to voicemail.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">VoIP.ms also has “failure handling”. If the ATA says the house phone is busy or off-hook, or if the internet links fail, or even if large portions of VoIP.ms own infrastructure fail, or if “too many” people try to call in all at the same time, the call will get routed to the voicemail, for later handling.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Telemarketers, begone!</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Telemarketers. Scum. My parents said they got several a day. As I reviewed the CDR Call Detail Records, I was able to confirm they were getting at least half dozen a day, most of them from forged CIDs. Those calls from those scammers are still coming in, but now they no longer interrupt my parents.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Some of the scammy ones hang up immediately when they hear the robot voice. The legally compliant ones hang up when they hear “Do Not Call”. Some wait for “press 1 to leave a message”, and leave their message, where they are much less of an interruption. The stupid ones just listen to the IVR message loop three times, then it hangs up on them. But so far, none of them have rung the house phone to bother my parents.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I considered setting up an integration with the Jolly Roger Telephone Company telemarketer trap [ https://jollyrogertelephone.com/ ] [ https://wiki.voip.ms/article/Using_ring_groups_with_a_third-party_spamfilter_service ], to time waste the scammers, but I’ve not yet bothered, and it might confuse my parents. </span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Firing the old phone company, easier than I expected</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Now, at last to fire the old phone company. When I initially tried to cancel the original wireline ILEC account, I got a runaround that I had to call the account termination services between certain business hours. I tried again a few weeks later, only to discover that the phone company had already closed the account and were sending my parents a final statement. I guess they decided that a successful port-out meant that it was not worth it to them to pay a salesman CSR to try to talk me out of it.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Some ideas for the future:</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I can receive a notification if someone dials 911 from the house phone. I think I will set something up so that I and my siblings all get an SMS when that happens.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I can install SIP clients on my parent’s mobiles and tablets, and create additional SIP subaccounts for them to connect to. Then my parents can make outgoing calls from their mobiles, especially on wifi, and it will look like they are calling from the house phone.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I can gift them a wifi cordless phone (Grandstream makes some nice ones, such as the WP810), preconfigure it to yet another SIP subaccount, and they would have a nice cordless phone that works within the house’s wifi.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I can enable SMS on that DID, and then with a little more programming on my part, they can send and receive SMSs on that number.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">I may get around to adding the Jolly Roger Telephone Company telemarketer trap.</span></p><br /><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">If I ever set up smarthome home automation stuff in their house, I can link it together, so that the house can call 911 if the fire alarms go off, or the house can call someone in the family if there is some minor emergency, or my parents can dial a magic code on the IVR to remotely turn on the house porch lights or open the garage door.</span></p><h1 dir="ltr" style="line-height: 1.38; margin-bottom: 6pt; margin-top: 20pt;"><span style="font-family: Arial; font-size: 20pt; font-variant-east-asian: normal; font-variant-numeric: normal; font-weight: 400; vertical-align: baseline; white-space: pre-wrap;">Finale</span></h1><p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">In conclusion, an incumbent wireline telephone company charging an elderly couple over $70/month for phone service is corporate elder abuse. I cut the bill to $3/month, gifted to my parents paying it myself, got rid of the telemarketer scum who were disturbing them multiple times a day, learned how to set up IVRs, and learned how to use Amazon Polly and Speech Synthesis Markup Language.</span></p><br /></span>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-54343522629866381502021-10-11T16:28:00.006-07:002021-10-11T16:28:56.705-07:00How to "break into" writing comic books, today<br />While the big 2 US comic publishers are zombies of ghosts of what they were, *right now* is the Golden Age of the "boxes of drawings with word balloons telling a story" long form narrative art.<br /><br />If you were the 16yo reincarnation of Todd McFarlane today, you don't go showing your drawings to your idols in the hallway of a some comiccon and then go camping in the lobbies of the NYC based publishers begging for starvation wages clean-up inking gigs.<br /><br />You take a couple of online courses "how to layout comic pages", after first having spent 10 years self-teaching learning to doodle with an iPad and then a wacom. Then you start sharing your work on Tumblr / Twitter / Instagram / etc, until you feel ready, then you do a Kickstarter, and fail. Then another Kickstarter, and fail better. Then do another Kickstarter... and succeed.<br /><br />Then you start a Patreon to fund volume 2, 3, ..., N ...<br /><br />Eventually Marvel or someone invites you to draw or write for them. And if you are smart, you look at their contract, and the pay rates, and the "community" of the people you would have to work with, and then you tell them to get lost.Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-5273517086286597162020-04-19T17:39:00.001-07:002020-04-19T17:39:46.120-07:00The CTO of Visa, after listening to my presentation<div dir="ltr" style="text-align: left;" trbidi="on">
Some years ago, I was asked to travel to the corporate meeting center to present at a presentation-fest to the CxO staff of Visa. Yes, the one with the logo on the cards in your wallet. The CEO of Visa was there. My CEO was there. (It was the only time I ever met her.) <br /><br />The fest in general was a disaster. Except for my part, if I may say so myself.<br /><br />During the discussion after the presentations, the CTO of Visa stood up and said "This was the most useless pile of nothing I've had to sit through for a long time! Nobody actually said anything! Nobody actually proposed anything! Nobody actually listened to what my problems are! Nobody expressed any opinion at all! Well, except for this guy!"<br /><br />And he pointed at me. "He actually read my memo about what my problems are! He believes that open source is a good idea, and that cloud computing is a good idea! And I think he's right!"<br /><br />The meeting broke up soon after, and all my coworkers left, kind of glum. Except for me, I had a spring in my step for weeks after.<br /><br />I have no idea if there was any impact on how Visa did business from my presentation, but it was nice to be recognized.</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-81959562338952062232019-12-31T23:39:00.000-08:002019-12-31T23:44:33.995-08:00An easy New Years Resolution: delete artificial scents, and delete Sodium Lauryl SulfateA suggestion for a new year's resolution, something that worked for me. It's a small effort, but a big change, and I suggest it for everyone:
Years ago, I deleted almost all industrial and artificial perfumes from my life. Zero fragrance laundry soap. Tooth powder instead of SLS toothpaste. No more SLS based shampoo. No SLS based "body wash". You don't need SLS, especially not on your skin or in your mouth. Instead of shampoo, I just let water run through my hair. Zero scent natural mild soap. Zero fragrance conditioner. No synthetic cologne.
Almost immediately, I was intensely aware of the reek of all this junk in my sweat and in my taste in my mouth, as it drained away over weeks. And then, it was gone. As was most of my acne. And food tasted a LOT better, and natural scents and flowers smelled a lot better.
So, I recommend it. It's an easy New Year resolution, that isn't a lot of work or willpower, but makes a big difference.Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-79373272092601262992018-11-21T10:21:00.001-08:002018-11-21T10:24:20.315-08:00A gentle lecture, what a codec is<div dir="ltr" style="text-align: left;" trbidi="on">
I recently wrote an offhand post about doing software archaeology at my job into the FFmpeg project, and one of my nephews, who is very smart but his passions go doing a different path than mine responded with: "I have no idea what you're talking about but I'm sure it's great", and thus so, I wrote up a slightly longer lecture/essay as a comment reply. Then my friend Tim Lord responded with: "that description of codecs deserves to be someplace besides only in a comment on a Facebook post -- cogent, unpatronizing, good refresher". And thus so, here it is:<br />
<br />
A codec is a software that turns sound or video into a computer file or back again. Every phone call you have ever heard, and every movie you have ever seen, and all the recorded music you have ever heard (except for actual film movies or phonographs or old cassette tapes) has been processed by an enCODer to record it, and another DECoder to play it back to you.<br />
<div>
There are many many many different codecs. Early ones were designed around the limits that computers were not very fast or very powerful, so they did not do a very good job of using the fewest number of computer bits for the best possible audio or video. We have codecs today that are very very good at it, because our computers are fast and powerful enough.</div>
<div>
There are many old codecs we can't easily stop using because they are built into systems that can't be easily all replaced at once, such as satellite receivers, telephone switches, and handset cellphones.<br />
Some codecs were created to play movies and sound for computer games, and so the codec software was built into that particular game, and used only for one or a few games, and then never used again.<br />
Codecs are very difficult to design well, because they depend on how human brains, human eyes, and human ears work. To save space, a codec does not want to spend computer power saving or playing back the parts of music or video that your brain cannot hear or see. So codec designers have to study human perception, and have to test things out on human volunteers, which is slow and expensive.<br />
Widely used codecs are often "standards". Corporations, governments, and universities will work together to carefully design a codec that then can be used in many places at once, so that lots of systems can all talk to each other.</div>
<div>
One of those groups is called the "Motion Picture Experts Group", which is supervised by an organization called the "International Standards Organization", and one of the standard codecs they designed was called "Audio Layer", and they made several versions of Audio Layer until the 3rd version was good enough. Thus "ISO MPEG version 2 AL version 3", or for short "MP3".</div>
<div>
FFmpeg is an open source software project that was originally an implementation of one of the MPEG video codecs, but since then has become a project that tries to have an implementation of every possible codec. FFmpeg contains old codecs that are no longer used, old codecs that are still widely used, codecs that were used in old video games and never used again, new codecs that are now used a lot, and also lots of experimental codecs that people wrote to figure out what does and does not work in a codec.</div>
<div>
Because FFmpeg has so many codecs in it, people now use it to "translate anything to anything", and they also use it to analyze and process audio and video information. My own employer uses FFmpeg in many places inside our company, to do lots of the things that our customers pay us for.<br />
<br />
My nephew then had the question "So JPEG artifacts are because of an outdated codec?", to which I responded:</div>
<div>
Every codec has artifacts if driven too hard, if its told "no, compress it even harder, fewer bits". There are newer codecs that are better than JPEG that don't start having visible artifacts so soon, and have artifacts that are less distracting. But we can't change all the image viewing software everywhere, so we will have to live with JPEG for a long time.</div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-29298626816942455962018-10-28T18:02:00.001-07:002018-10-28T20:12:07.833-07:00floating an idea: an APA<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="" data-block="true" data-editor="25jc5" data-offset-key="7dt6q-0-0" style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="7dt6q-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="7dt6q-0-0" style="font-family: inherit;">I have no idea why I'm considering doing such a crazy thing, but I'm considering starting and running an APA. </span><span style="font-family: inherit;">How an APA works:</span></div>
</div>
<div class="" data-block="true" data-editor="25jc5" data-offset-key="8qj58-0-0" style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="8qj58-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<ol style="text-align: left;">
<li>You write or draw on up to two sheets of paper, double sided.</li>
<li>You send it to me, either via postal mail or email PDF.</li>
<li>I collate them all together into a stack.</li>
<li>I photocopy and bind the stack, making N copies. Enough to send one in the postal mail out to each member.</li>
<li>I mail a copy to everyone.</li>
<li>You get it the post. You read and enjoy it.</li>
<li>You write or draw on up to two sheets of paper...</li>
</ol>
</div>
</div>
<div class="" data-block="true" data-editor="25jc5" data-offset-key="5kt89-0-0" style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5kt89-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">Some notes:</span></div>
</div>
<div class="" data-block="true" data-editor="25jc5" data-offset-key="5a89u-0-0" style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5a89u-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<ul style="text-align: left;">
<li>I'll be willing to cover the copy costs and postage, at least until it gets too expensive.</li>
<li>I'm willing to have members with non-US international addresses, again until it gets too expensive.</li>
<li>Other members will not see your postal address, unless you yourself decide to put it on one of your pages.</li>
<li>You can send your contribution in as a PDF, or as actual sheets.</li>
<li>Paper size has to be 8.5x11. Print will be BW photocopy.</li>
<li>I reserve the right to change number of sheets members get to send in</li>
<li>I reserve the right to cap the number of members.</li>
<li>I reserve the right to drop any contribution, and I reserve the right to evict any member.</li>
<li>The "code of conduct" is: don't piss me off, don't virtue signal, content needs to be kid-friendly and safe-for-work.</li>
<li>Topic is general, anything you want to write or draw. Fiction, non-fiction, gonzo journalism, bad poetry, good drawing, ...</li>
</ul>
</div>
</div>
<div class="" data-block="true" data-editor="25jc5" data-offset-key="d6ode-0-0" style="background-color: white; color: #1d2129; font-family: system-ui, -apple-system, system-ui, ".SFNSText-Regular", sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="d6ode-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">So, if I decide to do this, do you want in? </span><span style="font-family: inherit;">Reply here, or msg me, or email me.</span></div>
</div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-41176938156245552282018-08-23T08:27:00.001-07:002018-08-23T08:29:01.531-07:00buried in sheets of colorful glowing glass<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="" data-block="true" data-editor="8sca9" data-offset-key="5jm33-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5jm33-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="5jm33-0-0" style="font-family: inherit;">Anyone remember those scenes from ST:TNG that showed the captain doing paperwork at his desk? He was using a display terminal to read text and to do vtc, AND he was switching between half a dozen data tablets? Remember how conceptually silly that was?</span></div>
</div>
<div class="" data-block="true" data-editor="8sca9" data-offset-key="ee6e6-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="ee6e6-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">My edc backpack contains a laptop, a tablet, two phones, and one and sometimes two eink reader tablets. My nightstand has two eink tablets on it, and charger points for the phones.</span></div>
</div>
<div class="" data-block="true" data-editor="8sca9" data-offset-key="8hct2-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="8hct2-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">I just saw a coworker sitting at a table in this building talking on one phone, reading email on her laptop, consulting text on a tablet, and taking notes on a ReMarkAble tablet.</span></div>
</div>
<div class="" data-block="true" data-editor="8sca9" data-offset-key="43dbp-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="43dbp-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">The conference room I'm in right has all my edc gear, plus a yuuge 75inch vtc display on the wall, with attached steerable camera, and a glass tablet on the table for controlling the vtc. Plus a multipoint polycom rig on table. And plus an Alexa for Business terminal on the table. Even the lightswitch isn't real, it is a multiibutton scene controller. At least the clock on the wall is a physical moving-hands analog, but I know it gets set and sync remotely via some wiring coming out of wall behind it. And the six 5'x8' white glass whiteboards lining the walls are not "smart". Yet.</span></div>
</div>
<div class="" data-block="true" data-editor="8sca9" data-offset-key="1j4l2-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="1j4l2-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span style="font-family: inherit;">We are within striking distance of ending the blizzard of paper that used to engulf work, but now we're being buried in sheets of colorful glowing glass.</span></div>
</div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-72064955403079236142018-07-26T10:50:00.002-07:002018-07-26T10:50:52.591-07:00Thoughts on the Google Titan token<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="" data-block="true" data-editor="890m5" data-offset-key="52oil-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="52oil-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="52oil-0-0" style="font-family: inherit;">The tech press so excited about Google's "Titan" hardware token, and the breathless statement that they have "never had an account takeover" since rolling it out internally. They are excited about the wrong things, and are being taken for a ride by G's marketing and PR departments.</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="99ett-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="99ett-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="99ett-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="3bu1v-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="3bu1v-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="3bu1v-0-0" style="font-family: inherit;">It's only a FIDO U2F token. I've had one for almost 2 years now, and my current employer issued me one on my first day of work, over a year ago. Mandating 2FA across an enterprise is hardly a new thing.</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="cf6p3-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="cf6p3-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="cf6p3-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="5qj8g-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5qj8g-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="5qj8g-0-0" style="font-family: inherit;">The actual stories here are:</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="b1onn-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="b1onn-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="b1onn-0-0" style="font-family: inherit;">* why did Google decide to cut out YubiCo?</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="d4gl-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="d4gl-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="d4gl-0-0" style="font-family: inherit;">* Was it price?</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="2b7mn-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="2b7mn-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="2b7mn-0-0" style="font-family: inherit;">* Was it not-invented-here?</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="2id1f-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="2id1f-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="2id1f-0-0" style="font-family: inherit;">* Did Google not trust YubiCo to not backdoor the YubiKey tokens?</span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="d2i4h-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="d2i4h-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="d2i4h-0-0" style="font-family: inherit;">* Did Google want to put their own backdoor into the Titan tokens? </span></div>
</div>
<div class="" data-block="true" data-editor="890m5" data-offset-key="ab8pn-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="ab8pn-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="ab8pn-0-0" style="font-family: inherit;">* Did Google license YubiCo's manufacturing patents? (If they did not, it will be really hard to manufacture them cheaper.) </span></div>
</div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-69678942950862016012018-04-20T11:36:00.000-07:002018-04-20T11:36:07.634-07:00On names<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="" data-block="true" data-editor="47ld" data-offset-key="9ep3b-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="9ep3b-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="9ep3b-0-0" style="font-family: inherit;">(upcomment)</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="3bv55-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="3bv55-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="3bv55-0-0" style="font-family: inherit;">There is no standard central registry of names in the US. Your "legal name" is whatever you say it is, with the restriction that you may not change your name to commit fraud or try to avoid a debt. The flip side of that is you have very few avenues to force anyone else to encode or display your name in the manner you prefer. If you change your name or have a name that is awkward to deal with, the obligation is generally on you to work out a working relationship with everyone else who needs to know your name.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="3avf1-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="3avf1-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="3avf1-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="6o6j2-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="6o6j2-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="6o6j2-0-0" style="font-family: inherit;">A "legal name change" is just a helpful service provided by your local government court that lets you publicly declare and record a new name, bound to your previous name, on standard papers that other government agencies and various private organizations MAY (but not MUST) pay attention to.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="dhp4-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="dhp4-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="dhp4-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="crsmn-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="crsmn-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="crsmn-0-0" style="font-family: inherit;">There are multiple issuing authorities for IDs. Public, private, commercial, corporate, educational, military, government, ... An authority to issue IDs reaches only as far as their legal mandate, and no farther, except by rough consensus and a need to make stuff work.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="2uik4-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="2uik4-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="2uik4-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="e1lp0-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="e1lp0-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="e1lp0-0-0" style="font-family: inherit;">Each issuing authority gets to have their own regularization rules and database schema. They will pick what works for them, and have very little interest or budget in completely reworking their databases and processes to accommodate someone who is being a pain in their ass.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="fvl0v-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="fvl0v-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="fvl0v-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="ag6kc-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="ag6kc-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="ag6kc-0-0" style="font-family: inherit;">Whenever you intersect with government, just expect ascii7 smashing.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="d3626-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="d3626-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="d3626-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="1dd2d-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="1dd2d-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="1dd2d-0-0" style="font-family: inherit;">US banking know-your-customer rules require ascii7 smashed names for account holders, both individuals and companies, to interface to government banking regulators and auditors.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="2p4pe-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="2p4pe-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="2p4pe-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="3p098-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="3p098-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="3p098-0-0" style="font-family: inherit;">The US interstate Driver License Compact imposes ascii7 smashing and length limits, for database and lookup compatibility reasons. When a cop looks at your DL (which you do have to give him if he's detained you while you are driving a car), it had better match what pops up on his terminal when he enters the the license# and/or the plate#, or you may be are about to have a bad day.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="f5449-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="f5449-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="f5449-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="43vf7-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="43vf7-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="43vf7-0-0" style="font-family: inherit;">Things don't get a lot better when dealing with passports, from any country.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="3tknp-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="3tknp-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="3tknp-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="31mur-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="31mur-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="31mur-0-0" style="font-family: inherit;">Passports impose ascii7 (with various accent composition hacks) and length limits, by treaty.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="dn5ct-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="dn5ct-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="dn5ct-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="fvbgc-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="fvbgc-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="fvbgc-0-0" style="font-family: inherit;">Different countries impose additional different rules and length limits, for reasons various and mostly stupid. Some countries try to appear to still permit accent marks, by trying to encode accents using various slightly different composition encodings layered on top of ascii7, and hoping that everyone uses the same encoding. This kind of sort of mostly works, except when it doesn't.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="5uin1-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5uin1-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="5uin1-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="64g3u-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="64g3u-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="64g3u-0-0" style="font-family: inherit;">Passports from countries with widespread non-latin charsets will require an ascii7 smashed name, and often require a specific approved romanization algorithm, or an approved thesaurus, or both. Such a passport MAY have an additional field for the name in a local charset, but that is entirely at the option of the issuing authority.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="5ball-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="5ball-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="5ball-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="aihpp-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="aihpp-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="aihpp-0-0" style="font-family: inherit;">What is printed on the passport photo page should match whats printed in the "machine readable zone", which should match whats on the rfid chip. "Should".</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="4h1kv-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="4h1kv-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="4h1kv-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="461mu-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="461mu-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="461mu-0-0" style="font-family: inherit;">Most countries require air, sea, and rail carriers to pre-transmit passenger manifest before arrival. The names on those manifests also get ascii7-smashed, and any accent composition stripped, and had better match what's printed in your passport, or you are going to have a rough time boarding at departure, or clearing passport control at arrival.</span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="9c3sa-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="9c3sa-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="9c3sa-0-0" style="font-family: inherit;"><br data-text="true" /></span></div>
</div>
<div class="" data-block="true" data-editor="47ld" data-offset-key="baola-0-0" style="background-color: white; color: #1d2129; font-family: Helvetica, Arial, sans-serif; font-size: 14px; white-space: pre-wrap;">
<div class="_1mf _1mj" data-offset-key="baola-0-0" style="direction: ltr; font-family: inherit; position: relative;">
<span data-offset-key="baola-0-0" style="font-family: inherit;">Internal and external passports in China used to also require a field encoding the name in the form of Chinese telegraphy numbers, to sidestep transliteration issues between the various Chinese languages. I don't know if it still does.</span></div>
</div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-14113920913234060792017-10-02T10:51:00.001-07:002017-10-02T10:51:06.308-07:00On base knowledge surveys<div dir="ltr" style="text-align: left;" trbidi="on">
When I was in college, one of my Research Assistant jobs was to do clerical and basic number crunching work for base knowledge surveys. It takes scrupulous and expensive controls to prevent roughly a third of the surveys from being randomly answered for the lulz. Even with the most scrupulous controls and careful interview technique, there is still roughly 5% noise.<br /><br />In other words, any newspaper headline of a newspaper article that is a restatement of the abstract of some random paper from some random academic journal based on some survey, especially if its a prepub paper or open access journal, that is of the form of "ONE THIRD OF LILPUTIANS ARE STUPID, ACCORDING TO SURVEY", is rank bullshit, and is anti-knowledge, as in anyone who reads it is less informed afterwards than before.<br /><br />Show me the survey questions, the interview technique, the responder selection process, the population size, the population demographics, the pre-survey stats oversight board approval, the post-survey stats oversight board signoff, and the raw data, and THEN we will talk.<br /><br />(My lead researcher when I was a RA sat on several of those Stats Oversight Approval Boards. I got well schooled in several of the ways that a researcher could lie to themselves, knowingly and unknowingly.)</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-2997217096278038092017-04-17T18:25:00.002-07:002017-04-17T18:25:50.101-07:00A theory: Bank of Apple<div dir="ltr" style="text-align: left;" trbidi="on">
I have a theory, about Apple.<br />
<br />
Apple has a quarter of a trillion dollars. In cash.<br />
<br />
That is a ludicrous amount of money. That is so much money, that it is too much money. It is too much to deposit as passive cash, because a bank can no longer be a neutral unbiased 3rd party when there is an account that big. Not even a large nation's central bank. When you have that much cash, risks like counterparty risk, fiat currency problems, and government confiscation start becoming a significant amount of the risk profile.<br />
<br />
The way that most very large companies waste very large amounts of cash is to buy other large companies. This almost invariably is a terrible idea. The buying company almost always overpays, especially when they start bidding against someone else. And companies on sale for a discount, are for sale for a discount for a reason. So called claimed "synergies" almost never are realized. Costs are always higher than expected. Big mergers and aquisitions almost always are a mechanism where the senior executives burn the investors money in order to make said executives seem or feel more important.<br />
<br />
Steve Jobs never felt the need to do M&A to seem or feel more important, so Apple only did aquistitions to obtain specific skilled teams or specific technologies. And in his passing, Apple has generally continued this pattern. (I think the aquisition of Beats was very non-Apple, and was a mistake, and probably is seen as an expensive mistake and expensive lesson by Apple's current leadership.)<br />
<br />
But so and still, Apple has Too Much Cash. What to do with it?<br />
<br />
When you have a pile of cash that is so large that it in itself starts turning into a local economic distortion, there really is only one profitable thing to do with it: Wrap a banking license around it, and open a bank.<br />
<br />
Think about it. Apple could run a bank, a very different kind of bank, with a much lower risks of fraud and loss. They already have secure cryptoprocessors... everywhere! They can use iOS devices as the secure terminals, both for customers and for merchants. They can use ApplePay for retail transactions. They can use what they know about your from user's iOS devices and their AppleID for KYC. They can push secure finantial messages around via the iMessage framework. <br />
<br />
With all this in place they could undercut all of the existing payment networks and still make, well, bank.<br />
<div>
<br /></div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com1tag:blogger.com,1999:blog-4771631636333583067.post-44037865700039265902016-05-24T11:36:00.001-07:002016-05-24T11:36:03.780-07:00notes from an opinionated talk about running IPv6 in production<div dir="ltr" style="text-align: left;" trbidi="on">
A few years ago, I was at SCaLE, and attended an excellent talk by someone who operated several campus-wide internetworks, and their hard won experience with IPv6. They were very opinionated. I loved it. Here are some of the notes from that talk:<br />
<br />
<br />
QoS is a bad word.<br />
Control freaks love QoS.<br />
They can debug it themselves.<br />
People who have are held to SLAs operating production networks have better things to waste their time on, and better ways to crash their switches.<br />
<br />
"But I'm not running IPv6!" That means you actually are, and are nor longer in control of your network.<br />
"I will block IPv6!". Say goodbye to all the grants that pay your salary. And everyone's desktops and devices will just make tunnels anyway.<br />
<br />
Say NAT one more time, I dare you.<br />
<br />
If you think that NAT is protecting you, let me know who you are, so I can blackhole your address range and your IS.<br />
<br />
Turning off v4 ICMP is just stupid.<br />
There are lots of stupid people.<br />
<br />
You cannot turn off icmp6.<br />
There is no frag in v6.<br />
Thus mtu detect must be on.<br />
Thus icmp6 must be on.<br />
Live with it.<br />
<br />
dhcp6 is port 547 not 67<br />
<div>
<br /></div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-51463456720799356612016-02-13T08:01:00.003-08:002016-02-13T08:01:32.365-08:00Regarding that article about gender bias in GitHub Pull Requests<div dir="ltr" style="text-align: left;" trbidi="on">
Regarding "Gender Bias In Open Source: Pull Request Acceptance Of Women Vs. Men", or even worse, regarding all the uncritical and breathless articles by the BBC, Vice, HuffPost, and so forth:<br />
<br />
First of all, anyone who names their project "DeveloperLiberationFront" and uses an icon of a raised fist in woodcut style, has already predeclared their bias away from objective truth.<br />
<br />
Second, the authors of the paper exhibit little knowledge of about the large differences in workflow between different projects, and no knowledge about all the different ways that PRs are used and all the different meanings of an "abandoned PR", and also their definition of "project insider" is broken, as for many projects, an "insider" has write access, and may never use PRs at all.<br />
<br />
Third, despite GitHub's growing influence, just grabbing tens of thousands of GH PRs is not in the slightest bit representative.<br />
<br />
Fourth, their process for computing the gender of PR authors is laughably bad, for reasons that went on for 3 paragraphs before I edited down this text.<br />
<br />
Fifth, how many have heard of "p-hacking"? or even have ever actually computed a p value since you took that really annoying stats class in college? Did you even notice that the this paper both obviously did p-hacking, and then didn't even report the p values?<br />
<br />
Finally, allow me to present the following disruption to the breathless and self-reinforcing narrative:<br />
<br />
"So, let’s review. A non-peer-reviewed paper shows that women get more requests accepted than men. In one subgroup, unblinding gender gives women a bigger advantage; in another subgroup, unblinding gender gives men a bigger advantage. When gender is unblinded, both men and women do worse; it’s unclear if there are statistically significant differences in this regard. Only one of the study’s subgroups showed lower acceptance for women than men, and the size of the difference was 63% vs. 64%, which may or may not be statistically significant. This may or may not be related to the fact, demonstrated in the study, that women propose bigger and less useful changes on average; no attempt was made to control for this. This tiny amount of discrimination against women seems to be mostly from other women, not from men."<br />
// ScottAlexander<br />
<br />
If this was a real paper, submitted for real peer review, a good peer review would be:<br />
<br />
"1. Report gender-unblinding results for the entire population before you get into the insiders-vs.-outsiders dichotomy.<br />
2. Give all numbers represented on graphs as actual numbers too.<br />
3. Declare how many different subgroup groupings you tried, and do appropriate Bonferroni corrections.<br />
4. Report the magnitude of the male drop vs. the female drop after gender-unblinding, test if they’re different, and report the test results.<br />
5. Add the part about men being harder on men and vice versa, give numbers, and do significance tests.<br />
6. Try to find an explanation for why both groups’ rates dropped with gender-unblinding. If you can’t, at least say so in the Discussion and propose some possibilities.<br />
7. Fix the way you present “Women’s acceptance rates are 71.8% when they use gender neutral profiles, but drop to 62.5% when their gender is identifiable”, at the very least by adding the comparable numbers about the similar drop for men in the same sentence. Otherwise this will be the heading for every single news article about the study and nobody will acknowledge that the drop for men exists at all. This will happen anyway no matter what you do, but at least it won’t be your fault.<br />
8. If possible, control for your finding that women’s changes are larger and less-needed and see how that affects results. If this sounds complicated, I bet you could find people here who are willing to help you.<br />
9. Please release an anonymized version of the data."<br />
// ScottAlexander<br />
<br />
I am willing to bet money that doing real honest academic statistical analysis of their raw data will invalidate their implications and their claims.<br />
<div>
<br /></div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-60832652022116960102016-01-22T01:03:00.004-08:002016-01-22T01:03:42.833-08:00Why SSH keys dont have metadata<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="_45m_ _2vxa" data-block="true" data-offset-key="dbvud-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="dbvud-0-0">And other tech rant. It was recently asked, in a forum that I read, the following: "<i>Why is it that SSH public keys don’t have an embedded expiration date, anyway? PKI certificates have them.</i>"</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="6op72-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="6op72-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="130i9-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="130i9-0-0">My response:</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="f3i83-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="f3i83-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="dnoak-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="dnoak-0-0">Because as soon as you start adding all sorts of metadata to a key, then everyone will start adding all sorts of metadata to keys, with all sorts of obscure rules about how metadata interact with the environment and various implementations whether a key works or not.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="ffeeh-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="ffeeh-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="1rrep-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="1rrep-0-0">And then the lawyers will show up and insist that you imbed 30 page PDFs of Word docs of someone’s T&Cs and their contracts of adhesion and their “don't hold anyone with money responsible for anything” disclaimers into metadata (you think I joke, I do not at all, this literally regularly happens with “standards based” PKI certs).</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="9ndsv-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="9ndsv-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="20iaj-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="20iaj-0-0">And then your keys are going to be huge weirdly encoded binary blobs of shit that you don’t have good tools to manipulate. And you will need to keep special indexes of them, and “bundles” of them, in multiple conflicting filesystem paths and “key stores”.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="9mcgj-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="9mcgj-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="7n4b5-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="7n4b5-0-0">Part of why SSH took off at all in the first is because it doesn’t have this complex garbage wankery . An SSH public key is a SINGLE LINE, of printable ASCII7. You can edit and clean up your ~/.ssh/authorized_keys file with a textmode text editor.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="ei03u-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="ei03u-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="3vvi2-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="3vvi2-0-0">The lack of metadata in SSH is a feature, not a problem.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="3vvi2-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="3vvi2-0-0"><br /></span></div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com1tag:blogger.com,1999:blog-4771631636333583067.post-76332451085928766832016-01-20T10:31:00.001-08:002016-01-20T10:52:09.537-08:00This is how to do it, or waving my cane.<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="_45m_ _2vxa" data-block="true" data-offset-key="9ale-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
1. Design a data abstraction that solves a class of problems.</div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="1q16q-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="1q16q-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="efhg3-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="efhg3-0-0">2. Design a good wire protocol for that abstraction.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="2q4f9-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="2q4f9-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="46eof-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="46eof-0-0">3. Better yet, design 2 protocols: one server-to-server and one client-to-server. Federation is the only model that has ever scaled large enough.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="5mijm-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="5mijm-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="272jq-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="272jq-0-0">4. Implement a simple as possible server. Do not try too hard to make it performant, just very easy to install and very easy to understand. This is the protocol reference implementation.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="7m438-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="7m438-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="fkegs-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="fkegs-0-0">5. Implement an open source client library, that completely covers the entire data model and the entire wire protocol.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="23dsd-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="23dsd-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="7usar-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="7usar-0-0">6. Implement another open source client library, in a very different programming language. If this is difficult, you let your knowledge of your favorite language overconstrain the wire protocol. Go back to step 2 and fix it.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="4bji9-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="4bji9-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="ffni4-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="ffni4-0-0">7. Implement a command line client on one of those libraries. Again, it must completely cover the entire data model.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="62dcp-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="62dcp-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="3hct7-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="3hct7-0-0">8. Implement an ok GUI app.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="33lof-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="33lof-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="2cbi2-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="2cbi2-0-0">9. Implement a very high performance highly scalable server. If you are tempted to change the wire protocol to do this, you screwed up.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="46pr9-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="46pr9-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="elfan-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="elfan-0-0">10. Now, and only now, you can implement a very nice easy to use GUI. At this point, and at this point only, do you bring in any "designers", "UX" people, or anyone who uses Photoshop as working tool.</span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="d1p1t-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="d1p1t-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="1u68c-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="1u68c-0-0"><br data-text="true" /></span></div>
<div class="_45m_ _2vxa" data-block="true" data-offset-key="4nggn-0-0" style="background-color: white; color: #141823; direction: ltr; font-family: helvetica, arial, sans-serif; font-size: 14px; line-height: 18px; position: relative; white-space: pre-wrap;">
<span data-offset-key="4nggn-0-0">Of course, for the past 15 years, everyone has been doing this backwards, with disastrous results. It takes huge amounts of wasted CPU and wasted money by the millions and billions to make all the resulting garbage work at all.</span></div>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com1Seattle, WA, USA47.6062095 -122.332070847.2636815 -122.9775178 47.9487375 -121.68662379999999tag:blogger.com,1999:blog-4771631636333583067.post-37212795864819045722015-12-11T13:35:00.000-08:002015-12-11T13:35:42.800-08:00Idea: RedFish aggregators, and running them on OpenSwitch<div dir="ltr" style="text-align: left;" trbidi="on">
Once upon a time, when you needed to "do stuff" to take care of a computer, you had to go there in person. By "do stuff", that means things like: turning it off and on, looking to see if the AC was working, were the tape or disk motors broken, were any of the red warning lights on, had the UPS tripped, and so forth. But, for many and obvious reasons, it was useful to do all this kind of stuff from a distance.<br />
<br />
This led to the creation of "IPMI", which was built into most computers that were designed to be used in racks and datacenters. With IMPI, a team of sysadmins could remotely turn computers on and off, check temperature, fans, power, network carrier, installed cards and devices, and read off model numbers, part numbers, and serial numbers.<br />
<br />
IPMI is currently being improved/replaced with a thing called "RedFish". RedFish does all the same sort of things, but it is designed in a way that is called "RESTful", which means it works the same way that web applications work, which makes it a lot easier to write tools that speak it. Another cool thing about RedFish is that it accidentally also looks like a complete database of a "computer like thing", and does it in a way that "things" can be inside "things" and connected to other "things" all within how the protocol works.<br />
<br />
And then I had an idea...<br />
<br />
Write a web application that scans the local network looking for RedFish servers, and then itself acts like a RedFish server that integrates all these other smaller RedFish servers.<br />
<br />
You can even stack this, making it so at a higher level, one of these "RedFish aggregators" discovers and integrates the lower level ones, and so on up. Eventually you would have a top level one that would give you all the data and all the control over an entire datacenter or even larger set of data centers.<br />
<br />
It wouldn't even be that terribly hard to write a small demonstration implementation. It would be a challenge to make it fast and efficient, and to properly handle caches and avoid accidental recursion loops, but it doesn't look like a really difficult one.<br />
<br />
<br />
To use something like this for real, the logical place to put it would be in the network switches. But that used to be difficult, because production level network switches have been very closed and proprietary. However, that's changing. There is a new open source project spinning up right now, called "OpenSwitch". If I was to push this RedFish aggregator so that it would be real world useful, I would make it a be a module that runs in the reference OpenSwitch box.<br />
<br />
<br />
How hard could it be?<br />
<br /></div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-9457420023900338992015-06-07T18:29:00.000-07:002015-06-07T18:58:46.095-07:00About media leakers<div dir="ltr" style="text-align: left;" trbidi="on">
<p>I wonder about media leakers.</p>
<p>I'm not talking about whistleblowers, who reveal coverups by governments and corporations that are keeping secrets of bad or illegal actions.</p>
<p>I'm talking about people who "confidentially source" to the media details of business negotiations, media productions, and gossip of private heartache. Things that are private and confidential for a reason, will be revealed when they are properly baked, and that do nobody any good for being revealed early, except maybe for a burst of clickstream traffic for the "news" source that "scooped" it.</p>
<p>I know a fair number of secrets. Some of them are close friends' private heartaches, which are theirs to reveal, if ever. And some of them are business negotiation secrets incidental to my job, and a few of them part of my job to know. I actually go out of my way to avoid learning things I shouldn't need to know at my employer, just so as to firewall myself from even the appearance of impropriety.</p>
<p>Any of them, if I "confidentially sourced" them to the tech press, would do nothing but cost money that is not mine for no honest gain to anybody, possibly prevent good things that I would like to have happen from happening, and would betray my own principles I try to hold myself to</p>
<p>So, why do other people do it?</p>
</div>
Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com1tag:blogger.com,1999:blog-4771631636333583067.post-53558504112081802422015-05-25T19:32:00.003-07:002015-05-25T19:32:41.749-07:00A temporary mistake<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
I don't care about business models, I care about applications, and at true billion user trillion device scale the only scaling pattern that succeeds is user visible federation.
</p>
<p>
Email, the DNS, the HTML/HTTP hyperlink, XMPP, and the blockchain have no rent seeking gatekeeper business model, and do not require billion dollar data centers.
</p>
<p>
The past 15 year drive to unitary silo'ed apps with a rent-seeking gatekeeper has been a mistake that has diverted too much engineering effort towards just keeping them running instead delivering user-desired features and value, and has been driven by the corrupting need of VCs for their mythical billion dollar exits, and the telco encouraged temporary exhaustion of global address space and thus a temporary breaking of the end to end principle.
</p>
<p>
This is temporary, unsustainable, and not scalable to 10 billion users.
</p>
<br /></div>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-862350883852299502015-04-13T11:44:00.002-07:002015-04-13T11:44:21.694-07:00If your bank calls you, hang up and call them back<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
Important public service announcement: if you ever get a call from your bank or your payment card's security department, hang up on them, and call back via the number printed on your payment card.
</p><p>
I just got a call from a blocked number claiming to be my bank's security department, alerting me that my card was locked, and to press 0 to transfer to an agent for assistance. I hung up on them, and then called the number printed on my card. My bank's *actual* security department let me know they are fully aware of this ongoing phishing attempt, and thanked me for knowing not to fall for it.
</p><br /></div>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-25197945316270855232015-04-12T08:41:00.000-07:002015-04-12T08:41:12.085-07:00Editors betraying their own authors<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
Some editors from Tor Books have been lobbying online to the electors for the World Science Fiction Society Hugo Awards to vote against some works published by Tor.
</p>
<p>
I wonder if anyone has told the marketing department at Tor about this, or has told the owners over at Holtzbrinck? Come to think of it, this is probably a violation of publishing contract that Tor signed with those authors. I'm sure some agents are realizing that, and are starting to write threatening emails...
</p>
<p>
This gets funnier, and funnier, and funnier...
</p>
<br /></div>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com0tag:blogger.com,1999:blog-4771631636333583067.post-50716493358819142862015-02-19T16:18:00.001-08:002015-02-20T12:23:50.080-08:00Regarding Lenovo preinstalling SSL-breaking MITM on their machines<p>One of my fears day-to-day is that my own employer will make a similar mistake. This could have so easily been my employer, instead of Lenovo. And I have no standing or ability in my employer to prevent it, especially not pro-actively. Nobody does, in any of the Windows OEMs.</p>
<p>The OEM gets paid for every instance that gets shipped, and for every instance that gets run, and for every demo preload that gets upgraded to a paying user.</p>
<p>And when something like this happens, the tech and infosec savvy people in an OEM company will run headlong into the people who have bonuses and promotions riding on "cultivating" the "relationships" with the "partners" that wrote the shit. Ripping the software out, backing out the damage, and apologizing will negatively impact their salary, so they will go to the mat and break out all the corporate political long knives to stonewall the issue.</p>
<p>I hate everything about OEM preloads. I tell people that when they do buy a retail Windows machine, they should immediately take it to a Microsoft Store and purchase a "Signature Editions" Windows reload. The staff there will take the new machine, scrub off the OEM install, install a fresh clean lean un-crapified Windows, and then put the old valid license key back on the machine. (Since they are Microsoft, they can generate and load valid license keys at will.)</p>
<p>Or if you can't stomach paying Microsoft $99 to give you the machine you thought you had already bought, at least download a copy of "PC Decrapifier" and immediately run it on your new machine the very first time you turn it on.</p>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com2tag:blogger.com,1999:blog-4771631636333583067.post-28099502324765052992014-12-30T10:57:00.000-08:002014-12-30T10:57:22.801-08:00Why podcasts don't work for me<div dir="ltr" style="text-align: left;" trbidi="on">
<p>
Why podcasts don't work for me:
</p>
<p>
I don't have a driving commute, so when it is the case that I am driving, it's either a short trip, or I have passengers, or I'm going to an unfamiliar place so I have to pay attention to navigation. Plus my car time is irregularly scheduled. And to top it off, my car's audio doesn't have an aux input of any sort.
</p>
<p>
When I'm not driving a car, I'm usually reading, writing, doing work with my hands, exercising, meditating, thinking deeply about something, sleeping, or talking with someone. None of these activities are compatible with listening to a podcast.
</p>
<p>
And finally, podcasts are too slow and too linear. I can read well formatted text an order of magnitude faster than someone can speak clearly.
</p>
<p>
Plus my reading style is to constantly jump backwards while reading ahead, constructing lists and building up the "idea structures" that the text is presenting, and then if the text was interesting and useful enough, jump back an entire section or chapter or the whole work and reread it again, filling in the structure that I built the first time. There are probably people out there that can do the same thing in one pass, memorizing the text in one flat read or as it's dictated to them, but I am not that smart.
</p>
<p>
In other words, if a podcast is that awesome, please also translate it into an essay, or even just a cleaned transcript, and I will read that instead.
</p>
<br /></div>Mark Atwoodhttp://www.blogger.com/profile/01547843054590220545noreply@blogger.com1Seattle, WA, USA47.6062095 -122.332070847.2636815 -122.9775178 47.9487375 -121.68662379999999