The Smart Toilet

I have been kicking this idea around for years and am only now finally publishing something about it.  The title really tells it all.  The next big thing?  Sure.  You poop in a toilet every day, so let’s make a toilet that crowd sources medical and related data to tell you how you are doing.

(I know we use toilets for urine as well, and everything I am saying here about poop should be thus extended to urine as well.)

I suppose it will need a sort of garbage disposal or blender component.  It would presumably work from assays of your excrement, and make whatever various tests or analyses it will be capable of doing (which ought to increase over time).

Currently there are a number of states we can assess from human excrement.  I don’t know them well enough to list them all here, but things that come quickly to mind are pregnancy, some kinds of cancer, kidney issues, bowel issues, &c.

Imagine how this smart toilet might make various important measures each time you use it.  It would know you are you based on your account.  It would catalog everyone in a poop database.  This data could be made available to the medical community.  This could be done both specifically (your doctor could be allowed to access your data) and generally (your data would be part of the big data that researchers could use to further our knowledge and advance our research projects).

It could alert and advise things such as “you should have your kidneys checked and refer to test xxxx when you do” or “you should do a pregnancy test” directly to your smart phone (or whatever method you might choose).

Now lest you think I’ve gone mad (or think this is just one more data point in a long line trending toward madness), here is a great video concerning human gut biology in which the speaker specifically mentions a smart toilet!  Yay, me!  (He mentions the toilet at about 50:30 but the whole talk is quite excellent.)

Have fun out there!  Keep pooping!

Share

AI v IR

To my knowledge no one is currently taking advantage of camera sensors’ (typically) inherent ability to capture inferred (IR) data. If someone is, good on them. Someone will tell me at some point.

Camera sensors often (always?) are able to collect data beyond the visible spectrum into the inferred (and presumably into the ultraviolet (UV). It seems clear to me that parsing this data can be useful to an autonomous vehicle in identifying human and other animal agents on and near the roadways. (There may be similar benefits available in parsing the UV wavelengths as well.)

There are situations (especially at night) where IR will allow human and other animal agents to stand out against the background in ways the visible spectrum cannot. IR (and UV) may be able to usefully augment the lasers currently being used as well to provide a more robust dataset and thus more complete picture of the world for autonomous vehicles.

This may also help to solve some of the problems associated with windows and similar either reflective or transparent surfaces (as they should typically produce different IR ranges than the surrounding surfaces (and again perhaps UV differences)).

Another related source for potentially useful information would be comparing polarized lens data with standard lens data.

Thoughts?

Share

Powershellish Mailbox Creation

Found these old notes for making a post.  Figured I may as well move the notes here even if they are less relevant.  Maybe it will be useful to someone.

Mailbox Creation

Sometimes those old Exchange gui’s just ain’t enough. Time to bust out the command line. Here is some very useful information about doing just that.
So, of course, there is a special command prompt you will want to use: the Exchange Management Shell.

Main Data

I pulled this directly from the MS helps pages in Exchange. I did, however, add the very important (and neglected) identifier for each of these five mailbox types (at least my best guess):

User Account:

##
New-Mailbox -Name -Database -OrganizationalUnit -Password -UserPrincipalName [-ActiveSyncMailboxPolicy ] [-Alias ] [-DisplayName ] [-DomainController ] [-FirstName ] [-Initials ] [-LastName ] [-ManagedFolderMailboxPolicy ] [-ManagedFolderMailboxPolicyAllowed ] [-ResetPasswordOnNextLogon <$true | $false>] [-SamAccountName ] [-TemplateInstance ]
##

Linked Account:

##
New-Mailbox -Name -Database -LinkedDomainController -LinkedMasterAccount -OrganizationalUnit -UserPrincipalName [-ActiveSyncMailboxPolicy ] [-Alias ] [-DisplayName ] [-DomainController ] [-FirstName ] [-Initials ] [-LastName ] [-LinkedCredential ] [-ManagedFolderMailboxPolicy ] [-ManagedFolderMailboxPolicyAllowed ] [-Password ] [-ResetPasswordOnNextLogon <$true | $false>] [-SamAccountName ] [-TemplateInstance ]
##

Room Account:

##
New-Mailbox -Name -Database -OrganizationalUnit -Room -UserPrincipalName [-ActiveSyncMailboxPolicy ] [-Alias ] [-DisplayName ] [-DomainController ] [-FirstName ] [-Initials ] [-LastName ] [-ManagedFolderMailboxPolicy ] [-ManagedFolderMailboxPolicyAllowed ] [-Password ] [-ResetPasswordOnNextLogon <$true | $false>] [-SamAccountName ] [-TemplateInstance ]
##

Equipment Account:

##
New-Mailbox -Name -Database -Equipment -OrganizationalUnit -UserPrincipalName [-ActiveSyncMailboxPolicy ] [-Alias ] [-DisplayName ] [-DomainController ] [-FirstName ] [-Initials ] [-LastName ] [-ManagedFolderMailboxPolicy ] [-ManagedFolderMailboxPolicyAllowed ] [-Password ] [-ResetPasswordOnNextLogon <$true | $false>] [-SamAccountName ] [-TemplateInstance ]
##

Shared Account:

##
New-Mailbox -Name -Database -OrganizationalUnit -Shared -UserPrincipalName [-ActiveSyncMailboxPolicy ] [-Alias ] [-DisplayName ] [-DomainController ] [-FirstName ] [-Initials ] [-LastName ] [-ManagedFolderMailboxPolicy ] [-ManagedFolderMailboxPolicyAllowed ] [-Password ] [-ResetPasswordOnNextLogon <$true | $false>] [-SamAccountName ] [-TemplateInstance ]
##

Examples in Action

Create a shared mailbox:

##
new-Mailbox -alias testsharedmbx -name TestSharedMailbox -database "Mailbox Database" -org Users -shared -UserPrincipalName testsharedmbx@example.com
##

Realworld example:

##
new-Mailbox -alias sanfrancisco -name SanFrancisco -database "Mailbox Database" -org "simplecompany.lan/simpleCOMPANY/Resource Accounts" -shared -UserPrincipalName sanfrancisco@simplecompany.lan
##

Notes:

  • alias is the whatever@
  • name relates to the display name

Adding Permissions

Main Data

##
Add-MailboxPermission
Add-MailboxPermission -Identity "Some User" -User DonaldK -Accessright Fullaccess -InheritanceType all
##

To this point everything is more or less clear but people find it hard to find more parameters for -Accessright, which is actually the most important part of the command. Here they are:

  • FullAccess
  • SendAs
  • ExternalAccount
  • DeleteItem
  • ReadPermission
  • ChangePermission
  • ChangeOwner

Examples in Action

Realworld example:

##
Add-MailboxPermission -Identity SanFrancisco -User "simpleCompany San Francisco ACL" -Accessright FullAccess -InheritanceType all
##
Share

Fuck Comcast

Comcast used to give me a static IP address for five dollars a month.  This is exorbitant (as you will see below), but it was paradise to pay compared to what they are doing today.

First a word about IP addresses.

For IPv4, this pool is 32-bits (232) in size and contains 4,294,967,296 IPv4 addresses. The IPv6 address space is 128-bits (2128) in size, containing 340,282,366,920,938,463,463,374,607,431,768,211,456 IPv6 addresses.

So for IPv4 (what is most commonly used still) there are about 4.2 x 10^9 and for IPv6 (newish but growing slowly) there are about 3.4 x 10^38 total addresses.  If we were limited to IPv4 we would be having some minor difficulty getting addresses assigned around the globe.  Mostly that’s not an issue because mostly individual computers sit on local networks and don’t need public addresses.  These numbers are really only about pubic facing addresses.

Think about that scale for a moment.  Let’s look at the math.

340282366920938463463374607431768211456 ÷ 7631836561 = 4.458721884×10²⁸

So, every human on the planet could have their own pool of addresses (just from IPv6 because at this point the IPv4 address aren’t even a rounding error by comparison) and they would get a pool of about 4.5 x 10^28 addresses.  To put that in perspective the weight of the earth in grams is The mass of the earth is 5.98 x 1027 grams.  How much is a gram of dirt worth?  This is the scale we are at with addresses.

Comcast will charge $30 per month for an IP address (a static address).  Let’s break that down.  In order to get a static address you must have a business account which is an increase in your monthly fee of (at least) $5.  Then you will need to pay the monthly fee they charge for the static lease which is now $15.  Finally, you must rent a modem from Comcast at $10 every month.  (I may have those numbers reversed but either way it’s the same math.)

You may think “oh, I’ll save some money and buy my own modem”.  Good thought.  That’s what I did.  But it turns out they are now geared to fuck anyone who tries to escape that fee.  They are currently refusing to assign static leases to customer-owned modems.

They will tell you it’s not possible, but this is what I do for a living.  You can assigned a static lease to any device on your network by several various means, and it doesn’t matter who owns that device, who made that device, or what sort of device it is.  You only need the MAC address of the device (which is easy to provide and which I have repeated offered).

They are lying.  In addition to it being technically possible, I also know this from experience with Comcast.  Remember this is what I do for a living.  I have set up businesses around town with their own modems, with Comcast as an ISP, and with static addresses many times over the years.  I know too of specific business with this arrangement currently.

So, in short Comcast is charging any customer who asks for one thirty dollars for one-tenth of one gram of dirt.

Fuck Comcast.

Share

HowTo: Copy an Array in bash

If you want to make a copy of an array as an array in bash, you must use this specific syntax in order to get the elements parsed as individual elements.

##

export -a "$newArray=(${oldArray[*]})"

#

The asterisk gives access to each element within the original array, and the parentheses ensure the new array is populated also as an array with multiple elements.

Share

Windows Hates USB Drives

Not sure why but Windows is always throwing little tantrums when I attach a USB drive.  None of the other operating systems I use complain, but Windows complains nearly every time.  I think it can smell the Unix.

When I first attach a drive it will probably confront me with this terrifying message of doom.

What to do?
What to do?

Continuing without scanning always works fine, but if I should ask it to scan and fix (as they so thoughtfully recommend) I get the obligatory “are you sure?”, because (of course) “Scan and fix” means “scan and… that’s it”.

Er... repair?
Er… repair?

Oh, shit.  They found errors!  Better fix them.  I mean it’s the only option at this point.  (Canceling is just giving up.)

The No Error!
The No Error!

I’m pretty much doomed.  Save yourself!

Share