Twitter Updates

    follow me on Twitter
    See all our photos at www.flickr.com/photos/fischco/
    Thursday
    Nov192015

    2015 Christmas Wishlists

    Collecting gift ideas for people here.

    Mark

    Angela

    •  Anything from Barnes & Nobel’s Harry Potter Display!  She really likes the scarves and bags. 

     

    Tuesday
    Aug132013

    Kids Can't Use Computers... And Maybe That's OK

    Marc Scott wrote a thought provoking article over at coding2learn.org called “Kids Can’t Use Computers… And This Is Why It Should Worry You” a few weeks ago. It’s a really well reasoned article, and you should go read it if you haven’t yet.

    As I was reading through the article, I kept thinking to myself “Yeah, this guy has it nailed. All these people out there have no idea how to use a computer. We should really educate them more on general computer use.”

    However, after reading through some of the comments (there are many) and thinking about it some more, I began to disagree with his ultimate conclusion more and more.

    I want the people who will help shape our society in the future to understand the technology that will help shape out society in the future. If this is going to happen, then we need to reverse the trend that is seeing digital illiteracy exponentially increase. We need to act together, as parents, as teachers, as policy makers. Lets build a generation of hackers. Who’s with me?

    I think there are two main points that are not being considered.

    Blame the user

    This sounds like a great rallying cry. Let’s teach the users so they can be more digitally literate!

    It sounds good, but the more I think of it, the more it actually sounds like an old refrain in the technology world.

    Blame the user.

    One of Mr. Scott’s examples:

    A kid puts his hand up. He tells me he’s got a virus on his computer. I look at his screen. Displayed in his web-browser is what appears to be an XP dialogue box warning that his computer is infected and offering free malware scanning and removal tools. He’s on a Windows 7 machine. I close the offending tab. He can’t use a computer.

    He presents several other anecdotes about how people can’t use computers.

    The automobile is often used as an example of how things have gotten worse with respects to technology. Marc mentions:

    A hundred years ago, if you were lucky enough to own a car then you probably knew how to fix it. People could at least change the oil, change the tyres, or even give the engine a tune-up. I’ve owned a car for most of my adult life and they’re a mystery to me.

    Years ago you could throw a cup of gas right into your carburetor if it had trouble starting. However, this is not an example of how things were better when people knew more about cars. This is an example of the automobile industry’s failure to build a reliable engine.

    Similarly, the fact that Mr. Scott’s student is confused about a possible computer virus is not an example of how the student would be better off if only he knew how to use a computer. This is an example of the technology industry’s failure to build a secure computing environment.

    Division of Labor

    We live in an incredibly complex society. There’s the old adage of “Give someone a fish, and you feed them for a day. Teach someone to fish and you feed them for a lifetime.”

    I used to think this way a lot back in my desktop support days. If only I could just educate my users more about how a hierarchical directory system worked, then they wouldn’t loose their files. If only my users better understood the mental model of relating to buttons, icons, documents, and links, then they wouldn’t be so confused about when to double-click things, or when to click and drag, or when to single click.

    If only I could better educate my users, everything would be better.

    However this idea leaves out one thing.

    Time.

    One day I was talking to a professor at the university I was doing tech support for. She was really angry that something wasn’t working with her computer, and complained that she was doctor of some such discipline, and how should she be expected to know all this stuff about computers.

    At the time, I simply suppressed my initial reaction of how spoiled university faculty were, of how they should really get with the times and really learn how to use a computer.

    Years later however, I think back on that and realize that she was right.

    She was an incredibly talented faculty member. She had been a practicing clinician for decades. She has spent tens of thousands of hours in her chosen field to become an expert.

    She understands the division of labor.

    Its an old economic theory, but somehow I think the technology industry overlooks it.

    This faculty member’s computer was broken. She called in a technology expert to fix it. I did, and she was happy.

    My car is broken. I call in an automotive expert to fix it. They do. I’m happy.

    I am hungry. I call upon an agricultural expert to grow food. They do. I’m happy.

    Somehow technology experts, having grown up in technology, and having spent tens of thousands of hours becoming an expert in it, are surprised when other people choose to specialize in other areas.

    We simply cannot be experts in everything. We can’t even be pretty good at everything. We have to decide what we will be good at, and what we will depend upon others to do for us. The fact that so many people depend on Mr. Scott for technology support is no different than the fact that I depend upon the city to provide me with clean drinking water. I don’t want to be an expert in well drilling and water purification.

    Marc quotes Cory Doctorow:

    There are no airplanes, only computers that fly. There are no cars, only computers we sit in. There are no hearing aids, only computers we put in our ears.

    Computers are absolutely pervasive in our society. And Marc’s points about lawmakers making decisions about an industry they don’t understand is troubling.

    Tomorrow’s politicians, civil servants, police officers, teachers, journalists and CEOs are being created today. These people don’t know how to use computers, yet they are going to be creating laws regarding computers, enforcing laws regarding computers, educating the youth about computers, reporting in the media about computers and lobbying politicians about computers. Do you thinks this is an acceptable state of affairs?

    However this shouldn’t be any more troubling than any other industry that lawmakers don’t understand. They depend on experts to tell them what they don’t know. The fact that the experts are usually provided by lobbyists from the highest bidder is what should scare us.

    If you’re worried about where our society is going in the future, worry more about how to get money out of politics. Spend your time involved in something like rootstrikers.org.

    Make the future better

    All of the examples Mr. Scott cites in his article should be seen as a call to action. However the call to action here shouldn’t be that we need to better educate people on technology. The call to action is for all of us in the technology industry to get off our butts and make the future better.

    Sunday
    May062012

    Skill, Tallent, Time & Motivation

    A recent topic thread on Hypercritical with John Siracusa has been trying to answer the question “are video games an artform where its not possible for a large part of society to enjoy them fully because they lack the appropriate skill”. The example being a first person game where the player can’t enjoy the game because they lack the skill to simple move around the environment and understand the controls.

    I only want to talk about a small part of this larger discussion. I agree with the premise that “a large number of people lack the skills to enjoy certain games fully.” Where I disagree with John is when we states that “it’s not possible for these people to gain the skills”.

    First I want to define a few terms, so that we can be clear on them.

    Skill: The ability to perform a given task to a sufficient level. An example of a skill would be the ability to write, to speak French, to talk, to dance, etc.

    Talent: A natural ability that cannot be learned. An example of a talent is being 7 feet tall, being a musical savant, having a beautiful voice, etc.

    I have three ideas to introduce that I don’t think were covered much in the discussion.

    1. Skill can be learned by spending time working on it.

    2. Talent affects how much time must be spent to learn a skill.

    3. Motivation affects the probability that a given individual will spend the required time to learn a skill.

    So in the context of games, it may require some people more time than others to gain sufficient skill to fully appreciate the it. Those with more tallent will spend less time that those with less talent, but given sufficient time, both individuals will end up with the same skill level. Now if the person with less talent is not motivated to acquire the skill, they will give up early and not get the skill.

    However the main factor governing the number of people who have the required skill is not some innate thing, it is not talent. The governing factors are time and motivation. There are undoubtedly a group of people with so little talent that it is effectively impossible for them to acquire the skill. For gaming though, I think that most people do have the talents required to learn the skills. What keeps people from actually learning the skills is that A) they just don’t want to (lack of motivation) or B) they just don’t have the time.

    The end effect is the same, but the proposition that “it’s not possible for these people to gain the skills” is false. A better proposition might be “it’s not probable for these people to gain the skills”.

    Thursday
    Mar312011

    Ready for adventure with grandparents

    Kirin is off at my parent's house this week. The house is so quiet without her around! It's hard to see her grow up so fast!

    Saturday
    Mar262011

    PHP SoapServer, Objects, Arrays, and encoding 

    I ran into an bothersome problem with PHP’s SoapServer class this week. Here’s what I wanted as output from the server:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Body>
          <locationCollection>
             <Location>
                <name>AME s438</name>
                <id>452</id>
                <latitude>32.236322</latitude>
                <longitude>-110.951614</longitude>
             </Location>
             <Location>
                <name>ECE 229</name>
                <id>45</id>
                <latitude>32.235069</latitude>
                <longitude>-110.953417</longitude>
             </Location>
          </locationCollection>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

    However what I was getting instead was:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Body>
          <locationCollection>
             <SOAP-ENC:Struct>
                <name>AME s438</name>
                <id>452</id>
                <latitude>32.236322</latitude>
                <longitude>-110.951614</longitude>
             </SOAP-ENC:Struct>
             <SOAP-ENC:Struct>
                <name>ECE 229</name>
                <id>45</id>
                <latitude>32.235069</latitude>
                <longitude>-110.953417</longitude>
             </SOAP-ENC:Struct>
          </locationCollection>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

    Here was my original code for the server:

    <?php
    $wsdl = 'http://example.com/locations_service.wsdl';
    $service = new SoapServer($wsdl);
    
    $service->addFunction('getComputerLabs');
    $service->handle();
    
    function getComputerLabs($input) {
      $all_locations = resource::get_all(FALSE, 'location');
    
      $return_array = array();
    
      foreach ($all_locations as $l) {
    
        // Build a basic return object.
        $new_loc = new Location();
        $new_loc->name = $l->name;
        $new_loc->id = $l->resource_id;
        $new_loc->latitude = $l->getProperty('Latitude');
        $new_loc->longitude = $l->getProperty('Longitude');
    
        $return_array[] = $new_loc;
      }
    
      return $return_array;
    }
    
    class Location {
        public $name;
        public $id;
        public $description;
        public $url;
        public $buildingName;
        public $roomNumber;
        public $openStatus;
        public $latitude;
        public $longitude;
    }
    ?>
    

    Apparently the SOAP library really prefers that everything is an object. In php 5 they added an ArrayObject class. This coupled with a SoapVar call fixed my output for me.

    <?php
    function getComputerLabs($input) {
      $all_locations = resource::get_all(FALSE, 'location');
    
      /**
       * Use an ArrayObject instead of a plain array.
       */
      $return_array = new ArrayObject();
    
      foreach ($all_locations as $l) {
    
        // Build a basic return object.
        $new_loc = new Location();
        $new_loc->name = $l->name;
        $new_loc->id = $l->resource_id;
        $new_loc->latitude = $l->getProperty('Latitude');
        $new_loc->longitude = $l->getProperty('Longitude');
    
        /**
         * Encode each array element with SoapVar.  Parameter 5 is the name of the
         * XML element you want to use.  This only seems to work within
         * an ArrayObject.
         */
        $new_loc = new SoapVar($new_loc, SOAP_ENC_OBJECT, null, null, 'Location');
    
        $return_array->append($new_loc);
      }
    
      return $return_array;
    }
    ?>
    

    Note that with only the ArrayObject part, and before I figured out the SoapVar wrapper, I was getting this interesting BOGUS tag:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Body>
          <locationCollection>
             <BOGUS>
                <name>AME s438</name>
                <id>452</id>
                <latitude>32.236322</latitude>
                <longitude>-110.951614</longitude>
             </BOGUS>
             <BOGUS>
                <name>ECE 229</name>
                <id>45</id>
                <latitude>32.235069</latitude>
                <longitude>-110.953417</longitude>
             </BOGUS>
          </locationCollection>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    
    Sunday
    Dec122010

    Gingerbread House


    GingerbreadHouse, originally uploaded by estranged42.

     

    Thursday
    Sep162010

    Tonight's Train Layout


    Tonight's Train Layout, originally uploaded by estranged42.

    Thursday
    Sep162010

    Pumpkin!


    Pumpkin!, originally uploaded by estranged42.

    First pumpkin of the season!

    Wednesday
    Jun232010

    My Girls


    IMG_3204, originally uploaded by estranged42.

    Wednesday
    Jun232010

    Darla


    IMG_3194, originally uploaded by estranged42.

    Guess what I got for Father's Day!

    Sunday
    Apr252010

    Reid Park


    Reid Park, originally uploaded by estranged42.

    Kirin and I wandered around Reid Park this Saturday. Couldn't pass up this shot!

    Tuesday
    Apr202010

    Kirin Turns 3


    IMG_3116, originally uploaded by estranged42.

    Kirin had her 3rd birthday party up in Phoenix this past weekend. Much fun was had by all!

    Saturday
    Apr102010

    UITS Circuit People - It Works!


    UITS Circuit People, originally uploaded by estranged42.

    Well, I populated the circuit board tonight, soldered up all the components, tossed in some batteries, and flipped the switch!

    And nothing happened.

    After ten minutes or so poking at the traces with my multimeter, I discovered that I have one trace out of place leading into the power switch. Fortunately a simple jumper from one pin to another on the switch was able to fix the problem. And it worked!

    I have to admit, this thing looks pretty damn good! Not too shabby for my first PCB layout and project. I think I started toying around with this design over a year ago, so it’s pretty cool to actually hold a real, physical, blinking thing in my hands.

     

    UITS Circuit People EAGLE Schematic Files

     

    Friday
    Apr092010

    First Printed Circuit Board!


    Fitting Parts, originally uploaded by estranged42.

    I got my first printed circuit board (PCB) design in the mail today. This is for a pretty simple blinking LED project.

    When UITS got its new logo, the dancing circuit people just screamed out to be made into a real PCB somehow. This is what I came up with. I realize using a full Arduino ATMega168 is a bit overkill for driving some LEDs, but I decided that I’d rather get a prototype working this year instead of deciphering datasheets for the smaller ATtiny series for the next 6 months.

    The basic idea is to just have the color changing LEDs fade between red and blue in various patterns. Pushing the button will cycle through a couple different blink patterns.

    I got these boards printed at BatchPCB. If you’re only wanting 1 or 2 small boards, they’re hard to beat for price. $45 for two boards, and they ended up sending me 4! Took about 20 days for them to get here, but they look great!

     

    UITS Circuit People EAGLE Schematic Files

    Monday
    Mar292010

    Painting!


    IMG_3062, originally uploaded by estranged42.

    We had a grand time painting this past weekend!