Today was the second day of our mini computer bootcamp for friends and family. The goal was to have a functioning and hosted website up and running.
We started out by using nslookup to find the IP address of a web server — we use ziggeo.com as an example. If you are on Mac OS you can simply do this in terminal (which we learned about yesterday and used again extensively today — I am not sure what the easiest way to do this is on Windows, but if you have your Raspberry Pi handy from yesterday you can use that instead). We then typed the IP Address directly into the browser’s address bar to demonstrate that it does indeed load the same web site.
We then learned about the Domain Name System (DNS) and that it allows computers to turn a domain name into an IP Address. I explained the structure of a domain name and what a fully formed URL looks like. We then talked about HTTP and how the request and response cycle works between the web browser and a web server on the other end, with an initial GET request potentially resulting in many more files being requested from the original and other servers.
We then proceeded to install the Apache web server on our RPis via sudo apt-get install apache2. To make sure that they were fully up-to-date we first ran sudo apt-get update and sudo apt-get upgrade (the latter runs for nearly 30 minutes). While we were waiting we dove a bit deeper into HTML and created sample files on our laptops which we loaded using ”File -> Open File” from our web browsers. We included at least one unordered list using the ul and li tags as well as an image using the img tag.
Once we had our RPis running Apache we now used our locally created samples to replace the contents of /var/www/index.html (use cd /var/www first and then sudo nano index.html to edit). We had great fun visiting each other’s web sites simply by typing the IP Address of the RPi into the browser address bar. I explained that these IP Adresses were only valid on the local network and had been assigned via DHCP. I then showed how I could make any one of the RPis appear on the public internet by adding a rule to the firewall (and drew a diagram showing how the firewall separates the public internet from the local area network we were on).
During lunch we talked more about the HTTP request-response cycle and how there are different request methods such as POST, PUT and DELETE. Answering a question I explained how cookies are set and then included in subsequent requests to a domain and how inclusion of code from other domains, such as a Facebook like button which is served up from Facebook’s servers, means that when you visit that page, Facebook knows about it. We also talked about how web content can be cached at multiple layers such as Cloudflare, your local machine or the current browser session.
After lunch I spun up a cloud server for each student and one for myself at Digital Ocean. We used ssh to connect to our servers and once again installed Apache and started to edit index.html. We then learned how to update the zonefile at our domain registrar to make a domain point to our cloudserver. Thankfully Susan and I have lots of dormant domains and we let everyone in the bootcamp pick one for this exercise. Everyone was super excited how easy it was to have their own website up and running.
We then added a CSS file to our website by including a <link rel=”stylesheet” type=”text/css” href=”main.css”> in our html and started styling it with simple changes, such as background and font color and using sans serif as the font-family. We learned the basics of CSS syntax of specifying a selector such as a tag (or a class or an id) and then adding styles.
At this point everyone was happy but exhausted and we called it a day. We have left the cloud servers and websites up for now so that everyone who participated can revisit theirs when at home. This seemed like a big success and I can feel a follow up coming in the fall — I certainly thoroughly enjoyed myself!
Growing up in Germany I was always bored in math class, despite going to “Gymnasium” (the branch of Germany’s multi-tiered system that leads up to university) and even taking the most advanced math class in our school (the so-called “Leistungskurs Mathematik”). The math we were doing included some multi-variate calculus and some probability but I never felt really challenged nor was there a clear opportunity to take something more advanced. In fact, I wasn’t even aware that one could do the same math we were doing in a more rigorous way nor that there was a ton of math beyond it. When I got to Harvard, I met a bunch of kids who had done college level math in HIgh School and I was suddenly scrambling to catch up.
I finally fully focused on the different levels available even at university and opted to take mostly graduate level classes. There are huge learning benefits that come from taking more challenging material. First, the amount of time spent is roughly the same but you go deeper. It’s a lot like working out at the gym. You can spend an hour futzing around or you can spend an hour pushing yourself. It’s an hour either way but only the latter will actually get you fit. Second, you get a glimpse of the current edge of knowledge. That provides a huge motivation because you can feel the excitement of pushing out that frontier. Third, you are surrounded by older students who tend to be more serious about actually wanting to understand the material.
One of the great things about homeschooling is that there is no artificial age-based ceiling on anything. With University Courses available online via EdX, Udacity, Coursera there is no reason to stop at high school math or physics or computer science if a kid is really interested in these. Much to New York City’s credit there is an additional wonderful option available here. Kids who are homeschooled can take courses at CUNY for free. We are still figuring out what (if anything) the qualification requirements are, but to the extent that our kids are interested we will definitely avail ourselves of this offering. If university courses wind up being something that our kids do — via CUNY or online — I will provide more detail on how well it worked.
Whenever a new medium or technology becomes available the initial approach is to “repurpose” existing content, such as filmed radio on television. Many of the big education publishers have been approaching tablets that way. They try to grab some assets from the web or even further back from print and push them out. There are two reasons for doing so: first, it seems like low hanging fruit and second, these companies tend to believe that their existing content libraries are a big part of their value.
But it doesn’t work. To create an engaging experience that is native to a tablet it needs to be built from the ground up. The app needs to embrace the UX affordances (touch, orientation) and device capabilities such as camera and recording. And the design needs to look great and be responsive (meaning natively coded as opposed to ported in some mechanical fashion).
Thankfully there are now startups focused on creating just these kind of experiences. One example is New York based Learn With Homer, which released their comprehensive reading app today. It is beautifully designed and super engaging using simple touch and recording elements. Throughout it feels completely native as opposed to something obviously imported from a different world (with one caveat: the signup process is a bit wonky as they want to be COPPA compliant and be able to communicate with parents).
Another and quite different example are the apps designed by the team at Curious Hat. Their Oh No Fractions app is super simple but uses touch to illustrate different fractions in a way that makes them quite literally “tangible.”
It is great to see these native applications emerging and going directly to parents and students. I am saying that not just because we are going back to homeschooling, but because I firmly believe that this is how learning innovation will spread from here on: bottom up through kids, parents and teachers and no longer from the top (states, districts, etc).
Not that long ago when I was still living in the suburbs the next town over embarked on a massive construction project for a big new public library. I recall thinking at the time: but what will they put there? Of course books aren’t going away over night but still if you are on the board of a public library it is not difficult to envision a time where you need a lot less space for books. What should you be doing instead?
One interesting answer to that question is coming out of Chicago, which has added a Maker Lab to one of its public libraries. This very much seems to me in keeping with the original motivation for public libraries, which was to provide access to resources for advancement. It raises the question as to what else public libraries could provide access to today.
First, I do think that public libraries could and should not abandon books. In fact, a strong case can be made for libraries becoming more active in the preservation of books and accumulation of knowledge in specific areas. What the Internet makes possible though is an increase in specialization. So there could be a public library somewhere that focuses on finance and another one on medecine. They could actively and aggressively pursue acquisition in their specific domain and then make those resources available not just locally but to the world (through digitization).
Second, access to maker technology as in the Chicago example is a great idea. This could include not just items to be used on site but as and maybe more importantly the ability to borrow. For example, Lego robotics kits are quite expensive for individual families and often get used to build only one or two projects. The same goes for Arduino and Raspberry Pi kits and the associated equipment such as soldering and measurement.
Third, public libraries could play an important role in the reshaping of learning and education. Many online classes are accessible for free or relatively low fees. But space for meeting in person is hard to come by. That’s true for forming study groups that meet in person or classes that are taught in person. I am fortunate that I can use a big space at the USV offices when I teach my Skillshare class, but for many others space is a big constraint.
Some libraries have invested a fair bit of money in providing Internet access itself through terminals. While I appreciate that for some people that may be the only way they can access the Internet and so serves a purpose, it strikes me that this is more of a local policy issue. Access to the Internet these days is as important as access to clean drinking water. You wouldn’t want to leave the latter to the public library either.
I would love to hear from readers what they think public libraries should do for the future. Also any good other examples of what to do (or not to do) would be great.
When we moved back to the city at the beginning of 2012 we experimented for 6 months with homeschooling our kids. They then spent last year at Avenues, a new school in Manhattan. Avenues is a startup (and of course I love startups). The Avenues team did an impressive job coming out of the gate and are building a great school. But as it turns out our kids all concluded that homeschooling was better yet and so we are going back to it.
I will be blogging extensively about the experience most likely every Wednesday (“Homeschool Wednesdays” or maybe just “Learning Wednesdays”). We want to give our kids as much time as possible to pursue the things they are interested in. Yet there will also be a body of knowledge that we believe they should be familiar with to be well rounded individuals and inquisitive citizens.
Susan and I would love to hear from anyone who has direct homeschooling experience and are particularly interested in introductions to other parents here in New York City.
My older son asked me yesterday about how colors on the screen work. We started talking about the history of the RGB color model including early color screen technology. That eventually led to a discussion of how the RGB color space is three dimensional with 256 values on each axis for a total of 2^24 or roughly 16 million colors. Since a display is only two dimensional how would you go about showing the entire color space? From that question we talked about projections (from 3D to 2D) but also wrote a bit of code that let’s you slice through the color cube and display that slice on screen.
As we were playing around with that using Khan Academy’s visual programming environment, my son discovered some wonderful color patterns more or less by accident. That led to a discussion of generative art. And as it turns out the Khan Academy environment is based on the Processing library which has been used for years for exciting generative art projects. So I helped my son to take what he had stumbled upon out of there and put it on a web page. With a little more work we figured out how to enable fullscreen mode. You can see the results here.
Talking through all of this provided a great example of how knowledge hangs together and how context provides motivation. Each progressive bit of exploration here was motivated by the territory we were finding ourselves in. It is a stark contrast to our fragmented experience of education in school and even to this day online. As we are creating more and more of atomized learning objects, reassembling them in new ways around these kind of journeys is a tremendous opportunity.
One of our goals for 2012 was to get scuba certified as a family. We took a first run at it in a rushed fashion early in the year but abandoned that effort after a less than pleasant pool dive in Manhattan. In the fall we decided to start the process over and go with a proper PADI certification program. We found a dive center in Playa Hermosa in Costa Rica called Diving Safaris and structured our vacation around that.
Instead of wasting time on location with theory, we took the theory classes ahead of time online. The PADI e-learning course was quite well done. It consisted of short segments with lots of illustrations with both a recorded voice and a text you could read (Susan preferred the voice, I preferred reading the text). The short segments were grouped into subsections and then sections. Each subsection came with immediate review questions and then each section had a full on assessment. You had to pass each section assessment to qualify for the overall theory assessment (in fact, you can’t even access the overall assessment until you have passed the sections).
When we arrived at Diving Safaris, they conducted a brief review of the most important theory — this may be a test to make sure that people didn’t get others to take the online test for them. But other than that we went straight to the practical hands on equipment handling. Having done all the theory up front allowed the instructors to spend more time with us individually on equipment handling and underwater skills.
I had been thinking for some time that schools should switch much more aggressively to the inverted classroom model in which students learn the material at home (from videos, texts, etc) and apply it in the classroom. This frees the teacher up to see where the students have individual difficulties applying the concepts that they are supposed to have learned. Given our PADI experience I am now a complete convert.
I am convinced this is an amazing model and should be used much more broadly. It’s especially powerful if the application of the theory is as lively as our open water dives, although I realize that’s a high bar, especially because on our third dive we got to see seven whitetip reef sharks!
It was great fun to see XKCD take up the subject of Bayesian probability. That was a good reminder that it’s been a while since I taught my Skillshare class on the subject. And so I have added a new date for a lunch class on December 4th. As per usual, all proceeds go to Pencils of Promise.
I have been asked if I am going to teach this class online as opposed to in person. Some day I may do that. But for now I really enjoy being together in a room. There is something very gratifying for me to be able to look people in the eyes and get a sense of whether or not they understood something.
PS In case you missed it, I posted Part 3 of my mini series on employment yesterday.
One of the reasons that we decided to move to Chelsea was the proximity to the USV office. The other was that our kids can walk to Avenues, a new private school with an ambitious program of building campuses in leading cities around the world. Another distinguishing factor of Avenues has been their embrace of technology which got a good writeup in today’s Wall Street Journal. Our kids each have both an iPad and a MacBook Air from school and use both of them heavily across a variety of classes.
There is one important missing component though so far and that is learning to program. That of course has been the subject of my Tech Tuesdays and I have in the past promoted Scratch as a way for kids to learn programming. In that post I wrote that “the use of Scratch can and should be pervasive throughout instruction rather than being something taught separately.” Here is just a short set of ideas for how to do that in different classes:
- History - changing maps over time; graphical relationships between concepts and people; animated historical timelines
- English - create word games; animated six word biography; create your own scene from a drama (“enter stage left”)
- Music - create electronic compositions; visualize sound and music
- Science - simulate experiments; graph the results from experiments; safely explode things
- Math - illustrate the number line; create math games; show the relation between algebra and geometry
Having spent more time writing about programming and also talking to my kids about it, I have become even more convinced of the importance of integrating it into other classes. The reason is that programming provides an exceptional way of learning a concept. It is reminiscent of the saying that you haven’t really learned anything unless you have taught it several times. Programming is “teaching” the computer how to do something. If you can’t teach it to the computer you have probably not completely understood it. Hence the “programming to learn” in the subject line of this post.
For instance, our kids are currently learning about identities and inverses in Math. If they were simultaneously learning how to write a program that kind find the inverse of a number for either addition or multiplication, I am convinced it would give them a much deeper understanding.
Thankfully the team running Avenues is receptive to this idea. I will be spending time at the school in early December to meet with several of the instructors to talk about Scratch and other ways to integrate programming into the learning experience. It is something I very much look forward to.
Last Friday to Saturday I had the good fortune of being invited to crew on my friend Mark Hansen’s boat Sweet Lorraine (a beautiful J-145) in the 2012 Vineyard race. The course starts near the Stamford Harbor, goes up to the Buzzard’s Bay Light Tower and then returns south of Block Island all the way to Stamford for a total length of about 238 nautical miles. We are the rightmost boat in the picture below, taken shortly after the start.
The crew consisted of extremely experienced and successful sailors including several national/world champions in their respective boat classes. I on the other hand have very little race experience and even my total sailing experience was a tiny fraction of that of the rest of the crew. Everyone on board was super generous explaining things to me and being patient when I took a bit longer to get the hang of something or outright screwed up (e.g., overtrimming the spinnaker). As a result I learned a ton! I also really came to appreciate the many lessons about team work from sailing with such a great group.
First, it is tremendously useful to check your ego at the gate (the opening in the lifelines for getting aboard). Despite their tremendous individual accomplishments everyone did whatever was needed at the moment to help move the boat forward. On a boat that often includes cleanup, such as coiling lines so that they don’t obstruct movement and also can run out easily when needed. High performing teams at work take a similar approach where every team member takes responsibility for the quality of the operation (and isn’t above picking up trash in the office when that’s needed).
Second, a clear division of labor makes everyone on the team effective. On a crew everyone has a position at any one time (positions may rotate). The responsibilities for each position are well defined. I have encountered many teams in the workplace where people were not sure what they should be working on which results either in duplication or in gaps with work that doesn’t get done.
Third, communication is the lifeblood of a team. There is a nearly constant flow of information on the boat that enables team members to make the right local decisions. For instance at one point the wind was quite gusty and one team member announced incoming gusts letting both the helm and the sail trimmers adjust accordingly. I think too often in work teams there is an assumption that others have the information already when that’s not in fact the case.
Fourth, recover quickly from errors. When something goes wrong on a boat, there is no time to go sulking. Instead the problem needs to be fixed or it will generally get much worse. There is time to discuss what went wrong and how to avoid it once the problem has been fixed. Put differently, a moment of crisis is not a good time for the team to start questioning each other. That too is a good way to operate as a team at work.
Fifth, don’t get bent out of shape. Sometimes on a boat somebody will yell, especially when something is going wrong or about to go wrong and it is important to pay attention quickly. People don’t take that personally. With work teams at crunch time sometimes things are said without a ton of reflection. There too it will help a lot if people don’t take that personally and instead focus on getting back to the job at hand.
Sixth, experience is the right basis for authority. Of course there is a formal hierarchy on a boat. For instance, each watch on Sweet Lorraine had a designated watch captain. But what made it easy to pay attention was the experience that people brought with them. That I think is another critical lesson for high performing teams. The team leadership is based on domain authority instead of formal titles.
In the end we finished second in our class and sixth overall in a super competitive race where after 24+ hours of racing boats were often only minutes apart. It was a terrific experience and I will make sure to apply some of the team lessons in working with our portfolio companies.
Speaking of teams and portfolio companies: The team at Shapeways has made a great video about the power of 3D printing. You should go watch it — it does a great job conveying the excitement both inside the company and among the people using Shapeways!