TruerWords Logo
Google
 
Web www.truerwords.net

Search TruerWords

Welcome
Sign Up  Log On
Thursday, February 4, 2016

Wisdom Teeth

This article on wisdom-teeth removal being a scam is the second one I've seen in a week. Perhaps people are starting to realize that wisdom teeth aren't a mistake? That some discomfort as they come in is to be expected?

I should note, though. that this doesn't affect me at all, I simply find it interesting (but not surprising). My wisdom teeth never grew in, at all. X-rays show nothing there, not even an aborted attempt at the teeth.

Also, I still have two primary molars. In both cases, my current dentist expressed surprise. Primaries aren't meant to last this long, but nothing grew under them to push them out and yet those old boys are perfectly healthy. He says the lack of any attempt at wisdom teeth is much rarer and he can't explain it. Maybe I'm not human?

Thursday, April 30, 2015

Creating Great Mobile Apps! (snark)

The following is a re-post of something I said on Facebook just over a year ago. The topic came up today in a conversation on Twitter so I figured it was time to move it to here where others can see it.

Written after Twist went under.


How to create a great mobile (iPhone/Android) app in the current business climate:

  1. Go to school, fail math. HARD.
  2. Have an idea for a cool product.
  3. Get your programming buddies together, create a demo.
  4. Optional: Show it to a venture capitalist. Get lots of money to grease the skids for the first release.
  5. Finish the app.
  6. Release the app. Make it free for everybody. You'll make it up in volume! (See step 1.)
  7. Get lots of users.
  8. Wonder why you're not yet profitable.
  9. (Optional) Get more money from the vulture capitalists!
  10. Spend lots of money on marketing.
  11. Spend lots of time on a big update that makes the app prettier and funnerer.
  12. Wonder why you're still not profitable!
  13. Go out of business. Disappoint the millions of users who would have paid for your app had you let them.
  14. Blame the system. The app store. The market. The business climate. Never consider your own utter failure at math, because who needs math when you have millions of customers ^d^d^d^d^d^d^d^d^d users!
  15. Return to step 2, wiser and stronger for your failure, to create an even better business based on a free app (in a completely different space).

This just keeps happening.

Saturday, April 11, 2015

Swift Spirals

Yesterday on Quora a particular Math question caught my attention and fired up my imagination. I've already linked to it, but here's how the question was worded:

Four persons K, L, M, and N are initially at the four corners of a square of side 'd'. Each person now moves with a uniform speed of 'v' in such a way that K always moves directly towards L, L directly towards M, M directly towards N and N directly towards K. At what time will the four persons meet?

(Why say they are people and then not give them real names? I thought that was funny.)

Let me rephrase the question. Four people (or uh... dots) are at the corners of a very large square. They're all going to move at the same time, and keep moving until they touch. Each person moves toward the person at the next corner of the square in the clockwise direction. (So the person at the top left moves toward the person at the top right.)

I didn't care about the actual question there at the end, "at what time will the four person's meet?" I was just interested in the path they would each travel, the shape it would form.

Now keep in mind that each person is always moving towards the next person, not towards the corner where that person started.

It was obviously going to be a spiral in toward the center. Could I write a program that would simulate this travel?

Yes, I could! Here's an Xcode Playground file (written in Swift) that demonstrates the whole thing. It's not fancy, but it does show the spiral being drawn and I've kept the math self-contained in a couple of functions.

Update

Here's the same thing in some javascript, running in the browser.


  var graphSide = 500.0
  
  function sqrx ) {
      return ( x * x );
  }
  
  var Point = functionxy ) {
      this.x = x;
      this.y = y;
  };
  
  // thanks to my buddy Pythagoras
  Point.prototype.distFromPoint = functionpointB ) {
      return Math.sqrt(sqr(pointB.x - this.x) + sqr(pointB.y - this.y));
  };
  
  var actorA = new Point00 );
  var actorB = new PointgraphSide0 );
  var actorC = new PointgraphSidegraphSide );
  var actorD = new Point0graphSide );
  
  var distToMove = 2;
  var lineWidth = 2.0;
  
  var canvasctx;
  
  function initSpirals() {
      canvas = document.getElementById"spiralCanvas" );
      canvas.width = graphSide;
      canvas.height = graphSide;
      ctx = canvas.getContext("2d");
      
      document.getElementById("runButton").addEventListener("click"runButtonClickedfalse);
      document.getElementById("resetButton").addEventListener("click"resetButtonClickedfalse);
  }
  initScripts.push(initSpirals);
  
  function reset() {
      actorA = new Point00 );
      actorB = new PointgraphSide0 );
      actorC = new PointgraphSidegraphSide );
      actorD = new Point0graphSide );
      
      var canvas = document.getElementById"spiralCanvas" );
      var context = canvas.getContext("2d");
      
      context.clearRect(00canvas.widthcanvas.height);
  }
  
  function runButtonClickede ) {
      reset();
      window.setTimeoutincrementWalkers0 );
  }
  
  function resetButtonClickede ) {
      reset();
  }
  
  // find a new point on the line between a and b
  function moveFromAToBpointApointBdist ) {
      var dist_total = pointA.distFromPointpointB );
      var newX = pointA.x + ( ( dist * (pointB.x - pointA.x) ) / dist_total )
      var newY = pointA.y + ( ( dist * (pointB.y - pointA.y) ) / dist_total )
      
      return new PointnewXnewY );
  }
  
  function moveAndDrawFromAToBpointApointBdist ) {
      var dest = moveFromAToBpointApointBdist );
      
      ctx.moveTopointA.xpointA.y );
      ctx.lineWidth = lineWidth;
      ctx.lineTodest.xdest.y );
      ctx.stroke();
      
      return dest;
  }
  
  // incrementWalkers is its own function so that we can see the 
  // image updating in an animated fashion. If it was just done in 
  // a loop, then all we'd see is the finished product.
  function incrementWalkers() {
      if ( actorA.distFromPointactorB ) < distToMove * 1.001 )
      {
          return;
      }
      
      // draw lines from old to new locations
      var destA = moveAndDrawFromAToB(actorAactorBdistToMove);
      var destB = moveAndDrawFromAToB(actorBactorCdistToMove);
      var destC = moveAndDrawFromAToB(actorCactorDdistToMove);
      var destD = moveAndDrawFromAToB(actorDactorAdistToMove);
      
      // update actors with new locations
      actorA = destA;
      actorB = destB;
      actorC = destC;
      actorD = destD;
      
      lineWidth = lineWidth * 0.99;
      
      window.setTimeoutincrementWalkers0 );
  }
  
Friday, December 26, 2014

More Tragedy, Status Update

A lot of Corinne's friends have heard by now that Shane's cousin (same age) was killed on Christmas Eve, down in the Lancaster, PA, area.

A very good friend just called me to see how we were handling things, considering our history with Shane; so it seems like this would be a good time to clear things up as best I can.

Stephanie Kilhefner was Shane's cousin on his Dad's side (his father's brother's daughter). She had two kids. Her husband turned himself in and confessed to everything yesterday. I'm not going to offer any details, or even links to the story, but I've already given enough info that you can google it if you want to be grossed out.

(We hear about stuff like this in the news all the time, but it's grosser when it's closer.)

To answer the main question being asked by the friend that called: we're ok. I knew of this cousin but had never met her. Corinne knew her and was friends with her on Facebook but hadn't seen her since before we met, so it's probably been twenty years.

There's nothing "good" about this. There's no "phew, that's a relief." What we have here is another Kilhefner tragedy, the third big one (that I'm aware of) in the last eleven years.

So we're hurting for them. We know their pain, we're intimately familiar with it, and we're reminded strongly of it. But we're not living it ourselves right now, except vicariously.

Thursday, November 13, 2014

Primary Colors

We had Lauren Monday night. That's wonderful! Her parents have been really generous lately about letting us spend time with her.

She's in second grade now, and what was not so wonderful was her homework. It was a reading-timing test. (As in, time her for a minute to determine how much of this essay she can read.)

The essay was the problem. It was all about how Red, Yellow and Blue are the primary colors. "They're called the primary colors because you can make any color with them."

It's simply not true. It's not even close to true. The primary colors are Cyan, Magenta and Yellow. Mixing pigments of those pure colors, you can make any other color in the visible spectrum. In fact, you can even make red (magenta and yellow) and blue (magenta and cyan), which are not actually primary colors.

You can't make magenta or cyan with those fake primary colors. No mixture of red, blue or yellow will give you either magenta or cyan, because magenta and cyan are actually both primary colors. You can't really make a pure green because green is actually cyan and yellow, not blue and yellow.

It is possible to cheat a little with crayons (and perhaps ONLY with crayons), because you're not really mixing the colors so much as layering them, so the top color becomes dominant. You still can't make magenta or cyan.

The funny thing is that even people in the printing/prepress business get confused about this. Everybody in the business knows the the 4-color printing process uses CMYK (cyan, magenta, yellow and black inks), yet many still think of red and blue as primary colors, because that's what they were taught in primary school.

I don't mean to claim this is a big deal, but it's an example of the kind of thing that gets under my skin. Kids are taught one thing that's absolutely untrue, and then anybody who ends up in a line of work or hobby that requires an understanding must be RETAUGHT the very most basic points because they've been misled their whole lives.

Incidentally, the same is true about the Bible. People are told what it says and means by other people who are just repeating what still other people have told them. When teaching someone, a huge amount of time has to be devoted to easing the student over and through those misconceptions which aren't their fault at all.


February, 2016
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29  
Apr  Mar


RSS: RSS Feed

TruerWords
is Seth Dillingham's
personal web site.
From now on, ending a sentence with a preposition is something up with which I will not put. - WC