"In the world ye shall have tribulation: but be of good cheer; I have overcome the world." –John 16:33

Year: 2013 Page 10 of 16

Kelly will be FAMOUS–she will be published tomorrow

Kelly's first "The Technician" comic stripRemember this comic strip that Kelly drew.  It has been accepted for publication in North Carolina State University’s student newspaper, The Technician.  She is going to be famous!

Good friends and siblings and aging parents

Day 609 of 1000

Grandpa Milo and Grandma Sarah at Curt and Rhonda's potluck

We live a long way from Grandpa Milo and Grandma Sarah.  Every day I have reason to be thankful for my three siblings who have done all the heavy lifting in getting them to where they need to go for the care that they need.  They are in a memory care home now home which was a big change.  Some people do not understand so well.  Memory care is different from other kinds of assisted living, but often necessary.  Dad and Mom are in a place close to all three of my siblings where Dad can work in the garden and still get around quite a bit.

I am also very thankful for friends.  My childhood friend, Curt and his wife Rhonda had a potluck after meeting last weekend and invited the folks over since that used to be their meeting.  They had a great time.  There are other friends who pick them up and take them places.  We appreciate it all a lot.  Hopefully, we will be out there a little closer as soon as our kids graduate from college in the spring of next year.

How to teach computer programming to kids (Part 5) Projects in C, GaugeCam, and PHP

Day 608 of 1000

This is the fifth in a series of posts on how we taught our children to program, what we did wrong and how we think we could have done better.  You can see the introductory post and index to the series by clicking here.

[Previous post]
[Next post]

Sandisk C200 MP3 Audio PlayerChristian only spent half the school year at age 11 learning to program C#.  We really only got him going on it as an afterthought because he was interested.  After he had established a foundation, he got a little bored, I think because he did not have a specific project in mind to practice his skill.  The reason he asked to switch from C# programming to was that we got him a little MP3 audio player.  When he gets a new “toy” like that, he really likes to investigate its capabilities.  He found that it was possible to convert many MP3 players from just audio playback devices into little, general use computers that could run games, videos, and other programs.

The conversion is made by replacing the firmware provided by the hardware vendor to perform audio playback with an open source program called Rockbox.  Rockbox is written in C and Assembly language.  The problem Christian wanted to solve was to make the fonts look better for Rockbox on the Sandisk C200, the one we bought him for his birthday.  To do that Christian did the following:

  • Downloaded the source code
  • Learned how to build and install the code with the gcc compiler
  • Found some anti-aliasing font code to improve the appearance of the fonts
  • Modified the code to run on the Sandisk C200

This new pass through the whole configure-make-install process was much less automated that with the Linux environment.  It moved him up the curve a little bit further and got him his first experience at modifying someone elses C/C++ code to work on a new platform.  The problem was that he finished that in just a couple of months and wanted to move on to a new project.  That is when he decided he needed to know how to build a professional quality website.

Rather than start with something already packaged like WordPress, Christian decided he would use one of the professional quality open source, content management frameworks and build a site from scratch.  After eliminating the idea of using WordPress, he decided on Drupal, so he had to learn PHP.  PHP is a scripting langauge that looks (speaking very roughly here) like HTML with embedded C functions.  It also requires a working knowledge of the MySQL database program.  He spent several months learning how to use the tools, then built himself a site.

In addition to learning how to program a website, he also learned how to work on the aesthetics of his site. I am notoriously bad at making this blog look good.  Christian browbeat me into adjusting the site’s appearance this very weekend.  He still thinks I did a pretty bad job, but he that it is better than it was before.  Part of that is due to the help he gave me on such things as using complementary colors and using the Color Scheme Designer website for help in their selection.

During this whole time, Christian volunteered his time at the GaugeCam project under Dr. Francois Birgand in the Biological and Agricultural Engineering Department at North Carolina State University.  While most of the GaugeCam spent their time gathering data, performing research, testing equipment, etc,, Christian was tasked with building a server to run the website, capture and process results, host a blog, and generally act as the systems administrator on the project for a couple of years.  We gave him an old computer on which he installed a LAMP stack, the operating system and programs to run the server.

The take-away from all this is that Christian stayed engaged in computing with the help of a variety of projects that had specific goals the he wanted to finish and make work.  He learned a lot along the way, a little at a time as it was required for his projects.  The gift of interesting projects with specific goals is one we believe is essential in the effort to learn how to program.  He had one additional project that fits into this category, but that is sufficiently interesting that it requires a post of its own.  Christian figured out how to browse the web on his “dumb” cell phone.  That will be the subject of the next post in this series.

Weekend music video (my new, new favorite)

I love the seriousness with which little Rowan sings Caitlin Rose’s Own Side Now. She is only five years old.

New blog look

There I fixed it.  I thought I did pretty well, but I am still getting abuse.  Everyone rejected the header with FOUR people in it.  Well, we will try this look for awhile.

Lorena’s five years at the YMCA

Lorena's five years at the Kraft YMCA
Our family belongs to the beautiful Kraft YMCA in Holly Springs.  We initially joined the YMCA as a resource for our homeschool physical education efforts, but it rapidly became a favorite destination for the whole family to swim, work out, and lounge by the pool.  Even when I had work, I could sit in the lobby, have a cup of (free) coffee, and work (great wifi) while everyone else got their exercise.  Now that the kids are at NCSU and have their PE classes there, Lorena is the main user of the Y.  The good thing is that there is a sister YMCA right by the NCSU campus where Lorena often gets a workout in while waiting for the kids.

My hat is off to Lorena, she has hammered through a hard aerobic workout (usually the elliptical machine) and weight lifting three or four days per week five years.  Longer than that, actually, but five years at this YMCA.  She has the t-shirt to prove it.  No wonder she looks so good.

The kids tell me I have a lousy looking blog during breakfast at IHOP

Day 607 of 1000

Kelly and Christian at IHOPWe went to a late breakfast at IHOP this morning/afternoon because everyone stayed up late to study going into dead week.  Christian and Kelly let me know that they like the content of this blog (even though the writing style is a little bit stodgy), but the site layout is really, really weak.  Actually, they said it was ugly.  The picture to the left is them looking smug after berating me so intensely and unjustly.  I will give it a little more thought, but with Lorena already complaining about the header image (notice the only one who does not have their head bowed and eyes closed), but it looks like I am in for a redesign.  Christian says it is inadequate to just find another header image or wordpress theme I like.  He says I have to read a little bit about how to avoid having such an ugly blog.

Police pull out all the stops to catch the Boston Marathon terrorist

About that manhunt in the Boston area, the public and private sectors are pulling out all the stops to assure our men in blue get what they need to finish the job.  This passage from an article in Boston.com says it all (H.T. Kelly):

Law enforcement asked [Dunkin’ Donuts] to keep some restaurants open in locked-down communities to provide hot coffee and food to police and other emergency workers, including in Watertown, the focus of the search for the bombing suspect. Dunkin’ is providing its products to them for free.

“At the direction of authorities, select Dunkin’ Donuts restaurants in the Boston area are open to take care of needs of law enforcement and first responders,” spokeswoman Lindsay Harrington explained via email. 

Up late preparing for Real Analysis and an EE Circuits class

Christian went to bed about two this morning after preparing for two very difficult, critically important mid-terms.  When Lorena got up this morning, she took the picture below of how he left his books when he finished studying.

Test prep for Real Analysis and EE Circuits mid-terms

Trying to study when “BIG” events are happening

Day 606 of 1000

All the big events surrounding the bombing at the Boston Marathon has three out of four of the Chapman household (Christian has somehow figured out how to stay focused) glued to news feeds on the computer.  Kelly has big tests, papers, and other assignments next week.  Every minute is precious at this point in the semester, but it is really hard not to listen to the police scanner as the police in Boston chase two bad actors with big weapons and a willingness to kill people–maybe even themselves.  While this was going on there was a big explosion that killed a bunch of people in Texas and a good sized earthquake in Japan.  It gets on to thinking about what is happening in this world.  I am off to lunch with my Russian buddy Igor.

How to teach computer programming to kids (Part 4) C#

Day 605 of 1000

This is the fourth in a series of posts on how we taught our children to program, what we did wrong and how we think we could have done better.  You can see the introductory post and index to the series by clicking here.

[Previous post]
[Next post]

Beginning C# Game ProgrammingAt the beginning of the school year, just before Christian turned 11, we decided it might be a good thing for Christian to learn a object-oriented, non-garbage collected language with a lot of libraries and support.  The three obvious choices were Python, C#, and Java.  If I had to do it again, I probably would hanve started Christian with Python or Java, but I was doing some work in C# on Windows for my job at the time and was playing with Mono (a cross-platform C# implementation).

I wanted Christian to work toward the ability to program something in which he was interested so when I found Beginning C# Game Programming, it seemed a good fit.  The first few chapters explained the concepts of object oriented programming and the C# programming language.  Visual Studio Express, Microsoft’s Integrated Development Environment (IDE) for learners and hobbyists had come out not too long before this, so I spent a couple of hours on a Saturday downloading the program with Christian and showing the fundamentals of how to write, build, and run a “Hello, World!” program.

Next, as part of Christian’s daily homeschool plan, I assigned him to work on C# for fifteen minutes per day.  I wish I could say I assigned the work as part of a rigorous, well-thought plan to teach Christian to program, but the reality is that I assigned it to him because he was excited about learning to program.  I was more concerned that he focus on Literature, Writing, Math, and Science than programming.  We spent a lot more time on those core materials than his programming efforts.

The reality is that all I really did in terms of “teaching” him anything about programming (and I use the word “teaching” very loosely here), is review where he said he was in the book, quiz him a little bit about the concepts in that part of the book, look at how his program ran, and give him a few hints about coding style.  He was on his own with this.  The amazing thing is that he came away with quite a good understanding of Classes, Objects, Encapsulation, Inheritance, Polymorphism, and the concepts of Object Oriented Programming, as well as a pretty good knowledge of how to make things happen in a C# program.

Christian followed this program for about five months to get through the first four or five of chapters of the book.  The reason we stopped and moved on to something else is because Christian’s excitement diminished after about four months.  After that, we stopped programming for awhile so Christian could work on other computing projects.  It was a great exercise that was just long enough to keep a 11 year old kid interested.  Again, if I had to do it over, I would do it differently and will explain how I might have done it in one or more later posts.

Wading through the last week before dead week

The entire family has been going to bed between one and three AM every morning for the last week or so, then getting up in time to get to NCSU by eight.  It is the week before dead week in what will probably be the toughest semester either of the kids have for their undergraduate career.  They both have two semesters left after this one.  Those semesters feature hard classes, but not so many hours as this semester.  It is all theoretical math and statistics class all the time.  We all try to take a nap when we have during the day, but it does not seem like we catch up much on our sleep.  Tonight is no different.  The sad part is there is no hope for a good rest on the weekend–there are tests scheduled during dead week for both of kids.

Messy learning and object oriented programming

Day 604 of 1000

Kelly and I have stayed up well past midnight several times this semester to work through assignments for her Java class.  In spite of the great joy it gives us to have our children at North Carolina State Universiy, I think they way they teach “Programming 101” is almost criminal.  They were told they should not Google anything or receive any outside help.  I understand the need for a student to “own” the material, but this is definitely not the way to do it.  Nevertheless, my support has been mostly limited to looking on and trying to give verbal descriptions of high level concepts.

Last night was very good as Kelly prepared for a five minute talk she has to give in class about concepts such as implicit vs explicit parameters, get/set methods, encapsulation, and other object oriented programming topics.  I remember when I learned all this and it was a fight.  Christian seems to be a very linear learner.  That is, he builds one concept on another until he achieves master.  Kelly and I are what I like to call messy learners.  We learn just enough about a subject to go on to the next step, but not enough to master it.  That means we are pretty much in a state of confusion until we go through enough of the “learn just enough” steps to get a coherent understanding of the subject as a whole.

Messy learning is really pretty painful, but when the light starts to come on, it is so wildly gratifying that one forget all the pain leading up to it.  After going through that kind of process for subjects like math, chemistry, and programming, it is not so bad starting a new learning project because the payoff is so great.  I think some of the problem associated with so many people hating math and programming in this day and age is that so many people give up before they get to the payoff a couple of times.

Our Kelly Chapman did NOT write this book!

Our Kelly Chapman did NOT write this book.I find a book titled Good Manners for a Little Princess. I just wanted people to know it was NOT OUR Kelly Chapman who wrote it, although I kind of wish she would have. Maybe if she READ the thing…

Carl’s Jr./Hardee’s Low Carb

Carl's Jr./Hardee's Low CarbI used to eat the Carl’s Jr./Hardee’s Low Carb hamburgers (no bun included) because I was on an Atkin’s diet.  Now I eat them because I really like them a lot.  It causes some problems, though.  Kelly told us she learned in her Agribusiness marketing class that ALL Carl’s Jr./Hardee’s marketing is aimed exclusively at men.  I got a real-world view of that today when Lorena and I ran down to get me a Low Carb burger.  She refused to eat anything from Carl’s Jr./Hardee’s.  Instead, we drove through Wendy’s first to get some food more fitting for a female after which we got my Low Carb burger than sat and ate together in the car.

Visiting potential graduate schools

Day 603 of 1000

We have two kids about to finish their Junior years at North Carolina State University.  Both of them want to go to graduate school, but they have very different goals.  Christian, the Applied Math major, wants to go to a tier one University to get a PhD in Control Systems with the idea that he will work as a researcher in industry when he gets out.  Kelly, the Statistics major, wants to get a one or two year Masters degree at a school known for its close association with industry so she can get a good job and start her “real” life.  This summer, both kids will travel to a number of universities on the west coast to talk to professors before for they start applying.

It has always seemed that things work better in both business and school when people have a personal connection with each other.  I have two good friends from Russian.  One, Stepan, has a PhD in Chemistry from Moscow State University and has done post-docs at University of Texas at Austin and University of Houston.  The other, Igor, has a PhD in Mathematical Physics from Moscow Institute of Physics and Technology and has worked as a scientist at universities in the US and Europe.  They have a very interesting outsiders view of post-graduate education in the United States.  They both highly recommended that the number one criteria in selecting a graduate program is to find the right professor to serve as your thesis adviser.  The best way to chose a good thesis adviser is to research and go meet as many of them as possible.

That makes a whole lot of sense to me.  People are a lot more important than than institutions.  So, based on that advise, the kids have started doing research and writing introduction letters to professors at a number of universities they think they might like to attend.  The plan is to talk face-to-face with as many professors as possible to increase the chance they will be accepted into a good school and to be able to make an informed decision about which program is best for them.  I will write more about the process as we move through it.

How to teach computer programming to kids (Part 3) Dillo (Compiling and Linking)

Day 602 of 1000

This is the third in a series of posts on how we taught our children to program, what we did wrong and how we think we could have done better.  You can see the introductory post and index to the series by clicking here.

[Previous post]
[Next post]

In the previous post in this series I explained how Christian got his arms around the software build process using the configure, make, make install process.  A good example of how he got pushed through this learning process occurred on a trip we took to Monterrey, Mexico to visit the kid’s Grandparents when Christian was ten.  The only computer we had to take on the trip was a Dell 1300 that did not have too much power nor too much memory.  The computer was dual-booted to both Windows and Linux.  Christian had a very lightweight browser for Linux called Dillo that did not use very many resources.  It ran in Linux, but not in Windows.  Because of the lack of resources, Christian wanted to be able to run Dillo on Windows, too.

Dillo was made to be used on Linux, so Christian started digging around and found some instructions on how to compile the program for Windows.  Here is a website that has instructions on how to do exactly that.  The problem was that, in 2005, the instructions were not so good.  The normal configure, make, make-install process did not work, so Christian had to look for resources on forums to figure out how to get Dillo to compile and link properly.  The support libraries were not quite right and there were tons of problems.  Christian spent most of the time in Mexico when he was not playing with his cousins trying to build Dillo for Windows.  The make files hold commands that perform the compiling and linking of the program.  He had to learn exactly how the compiling and linking worked to modify the make files properly.  He made some major breakthroughs and felt like he was almost there when we had to pack up and go home.

Even though he was not ultimately successful in making Dillo run, he says this set of events helped him learn more about compiling and linking than anything else he had done before or has done since.  He had to dive into the make files to change the order of the internal commands, learn the structure of folders that held support libraries, and generally just learn a lot of minutiae about the compiling and linking of a fairly large program.  The reason he could stick to it was that he had a goal that he wanted to accomplish.  I think that is a very important principle with respect to learning to program.  It is also the reason class-based learning (of programming in particular) can be very ineffective.

How to teach computer programming to kids (Part 2) Working with Linux – Compiling and Linking

Day 601 of 1000

This is the second in a series of posts on how we taught our children to program, what we did wrong and how we think we could have done better.  You can see the introductory post and index to the series by clicking here.

[Previous post]
[Next post]

We think it was about 2005 when Christian was ten years old or so that he really took an interest in how software works on a computer.  I am not talking about how to use software on a computer.  I am talking about how it actually works.  We had an old Dell Desktop (I forget the model) with Ubuntu Linux installed on it.  All Christian wanted to do at first was install some games and some drawing and rendering programs.  The way you did that with Ubuntu is through the use of a GUI front-end program called Synaptic that managed program installation, updating, deleting, etc. using a program tool called APT (Advanced Packaging Tool).

He got pretty good at that, but the computer was so limited in its capabilities and resources he would often get stuck.  This led him to the use of Google to find answers to his questions about how to get unstuck. The problem was that he often stayed stuck because there were no good answers on the internet, even after a thorough search.  The next step, then, was to ask experts on forums like Ubuntu Fourms.  The answers often came in the form of a command line (non-GUI) process where he had to open up a console to get a command prompt so he could follow the procedures he was given.  Little by little, he got proficient at using the Linux command line to run APT and other utilities, getting help from man pages, and learning Linux’s basic directory structure.

Next, he started to run into programs that were not set up for installation via APT, so he learned how to install programs from the source code.  The way it works is that a program’s source code, usually C/C++ is downloaded from the internet.  It is set up for the computer on which it will be installed and customize for the needs of the user by running a program called configure.  Then a program called make is run to compile and link the program which creates the binaries (the actual file(s) that will run the program).  Finally, make is run again, but with the word install after it so that the program will be moved to the correct folder in the Linux file system so that the user will know where and how to start the program and the program will know the location of other files it needs to run properly.

The set of steps listed in the previous paragraph–configure, make, make install–is the normal procedure used to take programs written in C/C++ as text files, turn them into programs that will run on a computer, put the files in the correct folder on the disk drive, and assure all additional files required to run the program are in the right place.  Sometimes the names of these steps change depending on the computer, operating system, and other factors, but the process is essentially the same.  The problem is that the configure, make, make install process hides compiliation and linking from the user.  That is a good thing most of the time, but a person who wants to learn how to program needs to know how to compile and link a program, not just follow the cookbook configure, make, make install process.

Fortunately for Christian, the configure, make, make install process, for some fairly technical reasons, did not allow him to control the installation of the programs he wanted to run in the way he wanted to run them.  Specifically because of that, he started to read and learn about the compiling and linking process.  For some programs, there are heavily documented, step-by-step procedures to walk through that process.  This helped him understand how a program called a compiler takes a text file that holds a C/C++ program and converts it into a binary file and how a second program called a linker takes that binary file and links it to other program files that it needs to run properly.

It is not possible to program without knowledge about how to perform compiling and linking.  This can be hidden from the programmer in something called an Integrated Development Environment (IDE) which we will talk about later, but it is best to get started just the way Christian got started, learning the command line usage of the compiler and linker because this gives a much better understanding of the process needed to test and run a hand-written computer program.

All of the above happened under my radar.  At first he did this to get games and drawing programs running, but eventually, he just wanted to learn more about how Linux and the programming process worked.  All I really did in this process was provide a ten year old boy an old, piece of trash computer that had no programs on it that interested him.  He did the rest.  I am not sure how I would have taught this to him in a structured way, but I will take a stab at explaining how that could be done toward the end of this series of posts.

Serious food questions. Is this a Southern thing?

Day 600 of 1000

Is peanust in Coke a Southern thing?
Is peanuts in coke a Southern thing? I am now going to try to have to try this. Click here to read the article.  (h.t. Kelly) I give it a less than twenty percent chance of making it into my regular diet. I tried with the boiled peanuts thing several time, but acquiring a taste for them will definitely take a bigger effort on my part. Actually, I think the peanuts in Coke will be a little easier.

Back to Raleigh to work on GaugeCam in the morning

Day 599 of 1000

I will work in the morning, the travel late into the evening to get back home to Raleigh.  Since finals approach for the kids, they will study all weekend long.  On Saturday, we will go to NCSU.  Normally, I would go to either the Hunt or Hill library to write code, but I have been asked to work on the GaugeCam project to improve the ability to detect water levels.  We have been going slowly on this project for at least four years, probably getting close to five and, little-by-little, the product is getting refined and attracting interest.  I have the fixes in place and just need to get the code running on Dr. Birgand (the professor in the Biological and Agricultural Engineering Department at NCSU who runs the project).  He should be able to generate data and finish a couple of articles for publication.

On a side note, next trip, I get to have Lorena with me!

Page 10 of 16

Powered by WordPress & Theme by Anders Norén