After driving truck for eleven years, it was time for a change. Education was important in my household coming up. I have a Latin book from a great-great-grandfather on Mom's side. Half of Mom's family were teachers, including her parents for brief stints as young people in Iowa - two of my first cousins became Math and Computer Science professors in Canada. Mom did her entire high school through correspondence on the plains of Saskatchewan; she said trig just about sunk her. Dad too, where education was seen as a deliverance from poverty. He was an engineering student at the University of Manitoba and struggled through school for many years, having to support himself from a very young age. Struggled academically too, but was in awe of mathematics. I told him once as a kid I wanted to be an engineer like him; he said, oh no, shoot higher - go for mathematics. I still have his calculus book and gave his rebound copy of Men of Mathematics to my daughter Lydia when she graduated with a major in mathematics. On occasion I'd get some recognition at school, the honor roll or something, and would throw it aside as of little interest. Later it would appear framed and on the wall in Dad's home office. I essentially ended up teaching software engineering, that was typically my job title when working in the field; I think he would've been Ok with that.
I'd been a Math TA at UW-Madison from 1969-73 and enjoyed teaching in the classroom. In the kitchen at home, Mom had a little chalk board for the grocery list. I'd deliver little lectures to her and my younger sister Kate on calculus and use the board - here's what the chain rule really says, whatever. They'd humor me. Mom later said she figured I'd end up a teacher, seemed like a natural progression - funny how your mom knows you better than you know yourself. I'd gotten a masters degree in Mathematics and even passed the qualifying exams for a PhD, three daunting written tests, but never got started on research. All that was not put to much use all those years on the street, but good training for the apprentice computer programmer, a role I determined to assume. I'd had one programming class as a math major in undergrad in the late 1960s, Fortran probably. What a turn off. You'd have a stack of blank "IBM cards" (aka Hollerith cards in days past) to bring to a little keypunch machine built into a desk (do not even think about folding, spindling, or mutilating these cards). There was a keyboard to type the commands; you might get "x = 2" on a single card (or not). Holes would be punched into the card to represent the command and they were read by equipment connected to the computer, probably not too differently from Hollerith's day, when circuits would be completed by current across the holes. Then tap the eject key when done with that card. It would shoot out to the side and punched cards would stack up. The collection of cards was the program and they had to be kept in order. When done with a program, you turned the cards into the I / O window and they'd give you a receipt, like at the dry cleaner. Come back in two or three days for your printout. Only to find that there was a misplaced comma on the third card, so your program couldn't run. One of my programs was calculating the sum of the natural numbers up to 100 - whoop-de-do. It was more fun filling blank pages with math.
I started with the Casio fx-3600p programmable calculator Dave recommended, my friend from graduate school. It had an odd little macro language, off the main line but fun, and possible to work on during spare moments on the route (mobile development, as it were). One project was the perpetual calendar, another calculating \( \pi \) to a 1000 digits. It had become possible in the late 1970s to buy your own computer and program it; the command prompt was typically BASIC - you could enter programs with line numbers on the spot and save them or execute one-liners, like "print 22 / 7". Great fun, especially the immediacy and how you could commune directly with the machine where and when you liked - no mediator, no big organization, no priesthood between you and the machine. In 1982 or so, we bought a Commodore CBM business computer for a ridiculous amount of money - it might have been $4,000 - loaded with dual 140KB 5 1/4" floppy disk drives and 8KB of RAM. You could write 6502 code and stuff it away in some obscure part of memory with pokes. And I'm not talking "ADC $B3" but "65 B3", the hex opcodes you had to figure out and poke into memory. You were lucky if a programming error didn't wipe out part of the operating system. I wrote a 6502 program to interface the CBM word processor to our nice electronic typewriter.
Early BASIC on those machines was crude with no provision for long programs and only two letters for variable names; you could add comments, but at the cost of consuming valuable RAM. Named routines came later, but early on you had to write "GOSUB 410", where 410 was the number of the line where the subroutine started. Yes, they upcased everything. Spaghetti code was downright encouraged with mazes of goto's crossing each other so that even small programs could have unintelligible flow. Edsger Dijkstra must have been having a conniption, having warned about this long before (Go To Statement Considered Harmful). But I learned something about programming and published a few articles in trade magazines; that plus the masters degree got me a job teaching in the Math Department at MATC in August, 1984. That's Madison Area Technical College, rechristened in 2010 by a mindless president as "Madison College", a name resisted strenuously by old timers and vocationalists like me. MATC is one of sixteen public vocational colleges in Wisconsin. Just about every state has schools like this, but it can be a small scam, a way to claim tax dollars for schools engaging in marginal vocational training, a way of mollifying tax payers that they and their kids can use this training to get good jobs - "workforce development" as we called it. But it's not a shell in Wisconsin, it's real. This is a state that funds all levels of education well, Scott Walker's recent attempts in the opposite direction notwithstanding. I was a little abashed at the final interview with the vice president, what with the long hiatus in professional work; he said, "A truck driver I see, you'll get along fine with our students". I'd landed at the right place.
I started at the old Trade and Industry building on Commercial Avenue across from Oscar Mayer, a half mile from my terminal as a truck driver. My classes at first included a year-long "Electronics Math" sequence, just basic math for electronics associate degree students - linear and quadratic equations, systems of linear equations, trig, logs, and so on. It didn't seem much like vocational education to me, just generic math that could've been taught anywhere. Some of my peers with a better electronics background included things like logic gates and Karnaugh diagrams, which seemed better, but that was actually discouraged by the "General Education" authorities, who preferred a cookie cutter approach. Vocational students have many required courses in subjects like English, Math, Civics, and Psychology; and it can be challenging for programs to fit them in, even a matter of resentment when time for their subject proper seems to be receding. My second semester, the automotive teachers wanted to repurpose a little one credit math class and make it more relevant. I agreed without giving it much thought, and my contact said come over for a meeting. So I do and we meet right in the shop, ten or twelve teachers sitting there in a circle waiting for me, not at all what I expected. Some real listening and fast talking ensued and I put together a little computer literacy course that seemed to work Ok; it was still being taught fifteen years later after I'd moved on. Who said civics and psychology are unimportant in a vocational setting.
Dave had actually occupied that job and helped me get it when he left to become a full-time programmer. He had taught a couple programming courses for electronics students, one in Z80 Assembler, another called Computer Math that he migrated from BASIC to Pascal. They had a few Cromemcos at T&I with 8" floppies (the school was always willing to spend for labs, there are auto and machine tool shops with hundreds of thousands of dollars worth of equipment). My second year, the Electronics Department dropped those courses, but I asked my bosses to teach new versions of them on the IBM PC, saying that we could attract a new audience of adult students as well as some electronics students taking them as an elective. So the assembler was now 8088 and Computer Math featured Turbo Pascal, a dynamic new product from Borland that was inexpensive and easily accessible by students on their own PCs.
I was flying under the radar to some extent, but the classes filled and that's the main thing for HQ. At the end of the second year I and my students sponsored a workshop in interfacing Turbo Pascal and assembler - people presented papers and we prepared the proceedings and a disk with the software and invited people at large to attend. It seemed a good way to position the school as a cutting edge technology center, at the same time attracting attention to these classes. I was proud of us all and sent the brochure to my Dean Sara Sherkow; she reminded me a little of Sister Dorothea in the eight grade - same commanding presence and stature (about five feet tall). Sara calls right away reading me the riot act - you can't set up and do things like that by yourself, why it's finals week and what if those rooms or students are scheduled, and on and on - all BS and totally ridiculous. I gave her a fair amount of lip and said fine, I'll just cancel it, taking initiative around here is obviously frowned on. I could sense the slightest retreat on her part (not much) and was really steamed. The next morning I scheduled a meeting with her and started in a mild vein. She did too, pointing to my brochure and explaining how very important it was to note at the bottom of all our materials that we're an affirmative action employer. Pretty transparent, even amusing. I didn't smile though, but said things like, "Thanks for pointing that out". Off and away, we got along fine after that.
We moved over to the new Truax campus after two years, in August 1986. Sara wanted the Math Department to teach a new computer literacy course which could transfer to the UW-Madison, paralleling one of theirs. Bottom man on the totem pole, but no one else was interested, so I threw myself into it, and now in a greatly larger venue in the new building. The plan was to meet twice a week for lecture in the classroom for an hour, followed by another hour+ in a computer lab, that's how we'd done computer courses at T & I. But there was no lab available in the new building, so I asked the Electronics Department if I could use theirs for a while. Then I started working on getting a lab and that turned out to be a daunting project, valuable real estate being fought over with an intensity rivaling contested borders on the frontier. I politicked with bosses, teachers, and IT infrastructure people like never before. It seemed impenetrable until one day in a casual conversation, Sara says, "Now that you have the lab ...". All right then.
I battled off-and-on with the IT infrastructure folks and successfully cut them out of my life for a while. Like so often, the rank-and-file workers tended to be helpful and competent, both of those trailing off precipitately the higher up you go. The school spent generously for computers, no fault there, but tended to take a one-size-fits-all approach: here's your PC with Microsoft Office - all done, now shut up. Of course that wasn't at all sufficient, considering all the special tools we needed in programming classes - assemblers, compilers, and what not. Even basic installation typically required some familiarity with the packages. So we had constant rows; authoritarian methods seem to thrive in this area, where IT officials lord over even their superiors with their supposedly specialized knowledge - ZOMG, security, can't do that! At one point their chief said, keep this up and we won't even come into your lab. I said you got it, step in there again and I'm calling the police. I don't think he'd heard that before, but perfectly willing to step back and watch me fail. I would go in the week before classes every semester and re-install the latest version of software, add patches, and so on. We gravitated to Microsoft tools and the compilers could cost $300 per seat. There was no network, so I'd install 20 copies. They tried to sandbag me when it was time for new computers (they had to be replaced every two or three years). I worked with a vendor who was a friend and former student, had the computers delivered late one Friday afternoon (dead time), and set them up with a student. We needed to drill one inch holes in the desks for the cables at one point; no problem, down to maintenance for the drill; my associate had to run out to a hardware store for another bit when we burned out the one we had. Custodial kicked us out at 10:00 pm, but back in first thing Saturday morning to finish the software installs.
We had some more epic battles when the network came in, essential of course for the Internet, and the tide turned in their favor. Like at T&I, I continued with the approach of two two-hour meetings per week for programming classes - the first hour in the classroom, the second in the lab, so we needed that software in the lab. Somehow we muddled through. At one contentious meeting with the acting president and a couple VPs and others, I said we'd have to cancel classes because the school was unwilling or unable to set up our labs. The president stepped in at that point, said we're not cancelling classes. So we set up a little working group and got it done. Everyone had been warned to be on good behavior at that meeting, typical conflict resolution practice, and fine. The IT VP called me a blackmailer, catching himself at the last moment with "and I mean that in the best possible way". Even I smiled. By 2013 it was mostly irrelevant; just about everyone had a laptop or other computer at home and most of the software tools were free (even Microsoft had free versions of their compilers and IDEs).
Computer graphics was an abiding interest, dovetailing nicely with the rise of graphical interfaces. In the late 80s I worked on a shrinkware project to write a draw program - think Adobe Illustrator. We started in Windows 2.1; it was a DOS executable, you had to type "windows" at the DOS prompt to start it up. More C and all those Windows APIs - Charles Petzold was our guru. Graphics are inherently interesting for anyone, but another connection is all the math involved in computer graphics. I encountered concepts not seen since undergraduate days, like the vector dot product and 2D geometric transforms implemented with matrices as in linear algebra (rotate, scale, shear). One of my tasks was implementing Bezier curves; we even stored circles as four cubic Bezier near-quarter circles after convincing ourselves that the maximum divergence was acceptable, one part in 10,000. You hear all about the Bernstein polynomials when defining Bezier curves, but that is not the fast way to render them - the de Casteljau algorithm is, a truly beautiful recursive method involving geometry and binary math. Bezier and de Casteljau were industrial mathematicians in the French auto industry (Renault and Citroën respectively). The text box above links to some of the articles I wrote, including on Beziers. Bezier curves are built into most APIs now, including HTML5 canvas and Android (cubicTo). The CORDIC article was fun, involving basic geometry, trig, and binary math; also the history of technology, looking up articles from the 50s when this complex of algorithms was conceived for electronic machines with minimum resources, including, later, hand-held calculators (no, Taylor series are not used to calculate cosines on calculators).
Here is a Bezier-dragging HTML5 canvas app, similar to the 1992 Windows article linked above, but now a whole lot easier because we don't have to roll our own Bezier drawing with de Casteljau. Drag any of the four red knobs right in the canvas window to see the handles and Bezier curve reshape (will not show in earlier versions on Internet Explorer). It was common during this period for software engineers to implement cutting edge algorithms in their projects, only to see them appear in APIs somewhat later. It was a great way to experience and participate in technological change as it happened. Writing this little app brought home to me how persistent these graphical methods have been even as the APIs have changed dramatically, with basic graphical concepts like managing user-driven drags much the same as twenty five years ago. Here is the Javascript code for the Bezier app.
I had to learn an entirely new kind of computer graphics when teaching support classes for the Electron Microscopy program - how to manipulate bitmaps, where you think of an image as a matrix of numbers, each representing the color of a pixel. With vector graphics, shapes are stored as coordinates, so a circle is {(xCenter, yCenter), radius}. In order to double the size of the circle, you simply double the radius. It's trickier with bitmaps though. For photorealistic images, you can double the size by interpolating. The original image is copied to a new blank canvas twice as large in each dimension, stretched out with blank rows and columns interspersed evenly. Then the blanks are filled in with the mathematical averages of surrounding numbers on the assumption that the average between blue and black (say) is dark blue. That works well up to a point and for some images. Shrinking involves removing rows and columns and there is the potential to lose much of the graphical content for line drawings. There is a whole whole world of digital filtering techniques like noise removal, edge detection, and sharpening. Algorithms typically involve copying the original image to a blank buffer and rewriting each pixel based not only on its value in the original image, but also the values of neighboring pixels. C is good at this kind of work, with pointers free to roam through both images in memory.
You have to move fast to be on the cutting edge in the software field. Later in the 80s I wanted to change Computer Math from Pascal to the C language, which seemed more current in the field. I'd had a project in C one summer for a dairy equipment company (it's Wisconsin!). My friends teased me about cow.dat, my name for a key file. The idea was to automate feeding. Each cow would wear a collar which identified her when she bellied up to the trough, so her particular ration could be doled out as appropriate. I told my contact I didn't know C, but he said oh pshaw, you can learn it. And so I did and thought, heck, let's make it a class. I started with Sara's number two, previously a teacher and not a particularly good one by all accounts. I explained the rationale and kept saying how C was trending, the lingua franca of the cognoscenti as I later called it (not to him though, he would've only understood "of" and "the"). He said, I don't care if it's D, E, or F, your job is to teach support classes to program students. I'd been talking up C to my students - that was a method of mine, to see what current students found appealing, conceive a course in that, then start talking it up right in class. The course was scheduled, but with the generic name Computer Math; this was before eMail, so I called everyone who had expressed interest one weekend, forty or so people. Some of them were casual about it - oh, I'll sign up when we get closer. I said, if you want a C class, sign up by 9:30 am Monday and spread the word. I had a meeting scheduled at 10:00 am with Sara. I started my explanations and she interrupted and said, Herman (the aforementioned associate dean) tells me such a course would never fill. I said, check it on your computer, and hoping for the best, because I had no way of knowing. She did and broke out into a smile, turning the computer screen towards me, showing twenty five enrolled. You've got a class, Mike, she said. I liked that about Sara, she was always ready to do business. I never spoke to Herman again, he'd always look daggers at me. I loved that C class and taught it for many years, including variations. It was a good choice, the root language so many others were based on (Java, PHP, Javascript).
Madison has a medium sized software industry - not Chicago, but not Appleton either. Not so much software for sale, though there is some of that. The state government agencies headquartered in Madison total up to a huge software establishment; I'd always have students from the Departments of Transportation, Revenue, Administration, and so on. Also government agencies at other levels - counties, schools, municipalities, the university (some spin-offs too, especially in medical equipment). There is good sized insurance establishment in Madison and environs as well. American Family Insurance has hundreds of people in their IT Department, and there are others. It was common that agencies and businesses would pay tuition for a course or two for their workers in the evening - maybe $350 in 2013 and the worker is doing it on their own time; that is a pretty good deal for company and worker. If the instruction is any good at all any way and relevant. The nice thing about adult students is that you learn from them as they learn from you. It's not too hard with a good attitude to see what those workers and their companies need. On occasion a company wanted me to come out to their place of business to deliver instruction and I did a little of that, but found it uncongenial. It's just part of work for the students and you're on their turf; the authority, social, and motivational aspects aren't optimal. It seemed better for everyone to mix at school; people learned from each other and it wasn't unheard of to hire another student right in the classroom. You can't be heavy-handed with adult students, they will not take it; you're generally not the smartest or most experienced person in the room. I had students older than me right up to the end. Self deprecation helps, older people get it.
Teaching well involves a mix of skills - social, technical, organizational. You have to be a presenter and be able to express yourself verbally and on paper. Projecting a personality and having a sense of humor are helpful; in the end, loving your subject and your students is about half of it. You love what you're doing and enjoy explaining it to all comers; people see that and it's infectious. Teaching at this level and with these students was great fun. It was common not to know the answer to a question or solution to a problem that came up. If I didn't know, I'd say so, but then move heaven and earth to find a decent answer or solution in a few days. I found the technical challenge exhilarating, and always something new. Peers in industry typically wouldn't have time to experiment and play in a directed way that leads to understanding, but I had all summer, and if working on a project for a company, well that too is helpful in understanding industry practices and norms as well as whatever might be picked up on the technical side. My classes were in the late afternoon and evening, that is when people can make it after work. For the last fifteen years, I'd start work at home in the morning answering eMails. That seemed to be a time sink, but I came to understand that the problems and issues that came up were generally the ones I should be considering midday anyway during the prep phase. So eMail, but basically solitary at home. Then go in about 3:00 pm and copy handouts for class, old ones if they still held up, others modified or fresh off the press. Then two or three lectures starting about 5:30 pm, interspersed with labs, and done at 8:30 pm or 9:30 pm.
In a technical subject like this, you have to be a problem solver, to like cracking puzzles. The math background helped, I've enjoyed that since childhood. Take project 10 from the Ajax class, here is the assignment sheet I'd hand out in class. Generally I'd start people out with some basic code they could download from the class server; their task was to finish it. In this case I gave them the PHP program and rudimentary HTML; they had to set up a MySQL database and table with a given schema, flesh out the HTML, and write the CSS and Javascript / jQuery to interface with the PHP program and load the HTML with the XML data. Being server-side, this had to be done on the class server; work would be done locally, but then FTP'd up to the server and tested there. Each step bite-sized, but a lot of moving parts and opportunity for error. Best to approach as a puzzle, a series of smaller problems to solve. There are two programs talking to each other, so find a way to test them separately before welding together. Rewriting the page with Javascript is one task; figure out how to do that before tying in the Ajax-served data. And so on. Conceiving and initially writing little apps like this turns you into a debugger, working with students on their implementations even more so. I tried to impart debugging skills to students, the entire mindset of deliberate and methodical decomposition of a problem - how you can write small testbeds to isolate problems, to understand what's behind them. Also making the most of modern debugging tools, like Chrome's Javascript debugger (awesome). Click the image to run the finished Ajax app in a popup window.
Most of my students had degrees of one kind or another. Maybe in anthropology, but now time to learn a craft that pays. Many had graduated from our IT associate degree program, maybe twenty years before, but were scrambling just like me to keep up in a rapidly changing field. The median age was about 35. All my classes were project-based, no tests. Sometimes younger people would wander in and it could be a little jarring for them, certainly different from a lot of schooling they'd seen, including at MATC. But there were some gratifying success stories, people who dug in like their life depended on it and started their career with these classes. I started out giving tests like in my math classes, but decided it was unnecessary in the programming classes. I kept my head down about it for fear the school would make me give tests, till finally my boss asked me point blank how I evaluated. I was worried, but figured it was best to tell the truth; she said that's just what you should be doing. There were a few cases of students cutting corners over the years, but they were mostly there voluntarily and seemed to think that the entire enterprise was pointless if you didn't do your own work. Mathematics education stresses doing the problems, so the learn by doing approach was familiar and it only seemed natural in a vocational education setting. I'd call my approach a modified discovery method, where assigned projects motivated just about all classroom discussion. Sometimes just as a take-off point: we're going to need arrays to do this, so let's talk about arrays in Javascript ... This seemed to work well, considering the sophistication and background of so many of my students. It didn't make sense to treat them as raw recruits. I tried to accommodate different levels in the same classroom. I'd suggest extra credit enhancements and talk about them when time permitted, even say things like, "If you're struggling on this project, never mind the next ten minutes, just bear with me." It seemed to work out and gave people a chance to take initiative and be creative, at the same time giving me a lot of good ideas.
I developed 26 classes over the years and accepted a curriculum development grant from the school for an early one, $1,000 or something. I worked on it one summer and showed the curriculum specialist at school after a few weeks. She said that wasn't at all what they wanted; for her, the curriculum was the "objectives" with the "verbs" from an approved list. Like this: the student will be able to stand on his head in the corner for thirty seconds or more with 74.3 decibels blaring in the background. I produced what she wanted, but thought, never again. Some classes were stable, like C and Java - pretty much the same for fifteen years or more. Others changed considerably just about every semester, including Ajax, where newer technologies like jQuery and better browser support advanced rapidly. The basic template for a programming class is the same, so moving (say) from Pascal to C wasn't too daunting. I used some projects repeatedly, just adapted for the different language - students would tease me about doing that ("When are we going to do the calendar, Mike?"). Some languages / environments are more peculiar to themselves. Enterprise Java with Spring and Hibernate was like that. Also Flash programming with ActionScript, a really impressive graphics environment now on the wane with HTML5 canvas and other competing technologies. I was always happy to turn a class over to someone else and had my own curriculum documents laying out the projects and lessons for each in detail, what another programming teacher could execute a class from.
My method in the classroom was orthodox and teacher-centered, with prepared lectures and chalkboard work. None of those new-fangled white boards either, although it became hard finding an actual chalk board towards the end of my tenure, one class the last year being in the welding lab, and fine. I was always ready to go for fifty minutes, but enjoyed and appreciated any class discussion that arose. Groups are so different; I'd have back-to-back classes on the same subject and one class would have free-range discussion for fifteen minutes; the next, nothing. The first is more engaging and stimulating, arguably more educative all around, but you have to be ready for either one. I was big on paper handouts with project specs, discussion, and code snippets; and those handouts would shape classroom discussion. Towards the end, every classroom had a computer at the front which projected to a screen next to me; that together with access to the Internet and a networked drive available to every teacher and student made it possible to give nice demos, including spontaneously (necessary software could be loaded on the networked drive).
Our bosses loved online education, but I thought it was a crock. Funny, because the technologies I taught were exactly those necessary to implement those online education systems. My thought was that regular face-to-face contact is important, regular meetings being events everyone prepares for. We did a few experiments, but it seemed our students themselves wanted the regular contact. My peers in the IT Department favored one meeting a week for evening classes, three and a half hours, noting that adult students found it easier. I didn't care for that either, thinking that more short meetings was better than fewer long ones. It's hard for people to concentrate intensely for more than twenty minutes or so, especially when listening to someone else. One of the tricks is to be aware of your audience, to introduce a joke or other diversion when you see attention flagging, like Chekhov's Professor Nikolay Stepanovitch in A Dull Story (must reading for all teachers).
I created and taught a couple Android classes (basic and advanced) in 2010 and 2011, they ended up being the Android component of the then new IT Mobile Applications Developer Associate Degree. Developing these classes turned out to be fairly straightforward in the end, in spite of the novel aspects of mobile development and new concepts like geolocation. I got a wobbly start though, initially conceiving the first class as a survey of Google programming technologies (Google Docs can be programmed in Javascript, for example, much like Excel and VBA). I got an Android phone that first summer, set up the development environment on my home computer (tools all free and downloadable by anyone!), and did some basic experiments. Every time someone asked about it, they'd want to know how much Android there was going to be, and I'd add on another two weeks each time. I had the first three or four projects mapped out for students, then started with Android for the fifth project. There was so much there and students seemed to like it, as I did, so that was the rest of the class. The IT Department decided they were interested in Android right about then, so I just turned it into an Android class the second semester and changed the name. Voila, curriculum development the Bertrand way.
What made it tenable from the school's standpoint was satisfied students and employers and filled classes. It became obvious as the 90s progressed that I had a following. Visual Basic was a breakthrough (1995). I'd been filling classes to that point, so when raising the possibility of such a class with my Dean Rosie Findlen, she said fine, my job is to take care of the paperwork. I really appreciated that freedom, a hallmark or the Arts & Sciences Division I was in with English, History, and the rest (formerly "General Education"). Sixty or eighty people signed up for the section we posted, so we set up a second one, and VB was big for us for years - we started with VB 3. Then Java in 1998, another big one, especially considering that even then it seemed clear that Java was destined for enterprise work and big iron, so professionals were scrambling to pick it up (and having a little trouble, considering the rethinking involved moving from procedural to object oriented programming). There was a cadre of IT teachers at the time who were damned if they were going to adapt to all this new-fangled technology; I remember walking out the door with one who assured me that PCs were a fad and were only going to be playing a small role in the IT field. Fine with me, no competition. It seemed like the world was coming my way. VB was cheap and easy for people to install on their own machines, much like Turbo Pascal, but Java was free! And that's what the future held, free software now the norm with the success of the open source movement.
Distributed computing was proceeding in another way during this period with the rise of the Internet. Here too the official IT Department was slow bringing these new developments into their curriculum. My dean at the time, Terry Webb, and I conceived the Internet Developer Certificate (IDC) in 1999 to close the gap and offer Internet-related programming technologies to adult students. He got a capacity building grant from the state to forward this work - the term meaning building the capacity of the region to produce workers with these skills. We got four new teachers out of that, two for the Math Department and two for IT; and getting new positions is not easy at MATC. It was becoming obvious that organizations large and small would need a web presence, not only for outreach, but for eCommerce and other remote access. The latter verges into traditional IT data processing functions when web pages are programmed to communicate with a back end data store. At first, organizations would send out disks to their people in the field (think agencies for a large insurance company); the agents would copy software to their PCs, which in turn would communicate through the Internet with HQ. As technologies improved and knowledge spread, they saw that it could all be done through the Internet: programmed, data-driven web pages could be written by the company's IT department and loaded on company servers. Those pages would run in all browsers, familiarity with which was becoming universal; then an agent anywhere could sign in with credentials and access the company database. Like throughout society, content and data in large organizations are accessible directly by front-line intake workers, content providers, and users of all kinds wherever they are and without intercession. That's a data processing revolution!
Few people saw all those ramifications right away, but the delight of being able to program web pages would get you started. Java was an interesting development for a number or reasons, including their virtual machine - a layer of software on a given machine translating the Java byte code (the output from the Java compiler) into operating system commands executable on the machine. Device independence, a long-term holy grail! As a practical matter, that made it possible for people to write their Java projects on any computer, including a Windows-based PC or a Mac; students could then attach the source in an eMail and I could recompile at my end and check their work. Java applets were enticing too, programs which could run in any browser in any operating system. Applets turned out to be a dead end, but they gave an idea of what was possible. Consider Professor David Joyce's geometric applets to illustrate Euclid, for example, written in 1996-1998; go to the bottom of the page of Euclid XIII, 16 and drag the colored points on the icosahedron to reshape it, amazing. The image shows my draw applet from 1996 - click it to run in a popup window - I hope you like those tooltips, because they took a little work (Java must be installed on your machine and browser for this to work). The draw program was a project in many classes.
Java was getting a lot of buzz and people could download it and experiment on their own equipment without asking anyone's permission. That had a number of consequences for a vocational college like us. Of course it drove people to us when we offered Java instruction, including but not limited to experienced professionals seeking retraining. We had trouble keeping up with demand for a few years. The school was no longer required to provide labs equipped with the software and machines to run it, because anyone could set up on their own machines. We did continue to equip labs and have that be part of class time officially, but the labs became less central - a way to confer with students informally rather than a necessary venue where people had to do their work.
Our first new class for the IDC was Intro to Internet Programming and concerned HTML and CSS fundamentals, but mostly Javascript, which has taken the world by storm since then. It was possible from the beginning to thoroughly program a web page through the Document Object Model (DOM), little known as it was. One barrier was differing implementations of Javascript on different browsers, something that has smoothed out considerably over time. It was a balance, with browser manufacturers introducing features not found in the standards, making new things possible at the expense of introducing nonstandard techniques. The temptation is to denounce standards-breaking wholesale until you remember that empires were founded of some of those innovations, like Microsoft's HttpRequest object (Ajax) and Apple's canvas element. We taught Intro for over twelve years and not only me; at our high point about 2003, there were up to six math teachers teaching IDC courses, eighteen sections one semester at the high point - four Javas, four Intros, and others. We took all comers; I had 43 in one Java section, possible only because just about everyone did the projects on their own equipment. I wanted people to come in for the lectures though and generally had good attendance, encouraged by the good esprit de corps generally found in true vocational education ("I can use this at work"), but also the tight bond between class discussion and expected work. Students would often say they could figure this out if they really knuckled down (and they could), but they found it easier to have me walk them through it - schedule study, explain salient points, and assign projects to push against.
Evaluation was typically done remotely. We had a class server, which seemed only reasonable for Internet-centric technologies. Each student had an account and would FTP up a finished project and send me an eMail with a link pointing to it; it's the real Internet, so send the link to your mom if you like. With technologies like Javascript and PHP, students' programs are executed or triggered in browsers when downloaded from the server. So they could write them anywhere they liked and with whatever text editor they preferred (and editors too became increasingly available for free); then they or anyone else could execute the programs on their own machines through a browser. That's Internet development.
I ran the certificate as a free-standing operation as much as possible, a little program. The school has many certificates ostensibly targeting adult students, but they are slow-moving and bureaucratic. It could take students months to get accepted and years to get an actual certificate even though completing all work. I short-circuited all that and handled everything myself as much as possible: outreach and publicity, including regular blast eMails; curriculum development and course construction; application handling and advising; employer relations; tracking student completion through the certificate; cutting actual certificates; and giving a little dinner party for graduates and guests each semester. Graduating from the certificate required taking four courses and there were 288 graduates from 2000 till I retired in 2013.
I'd been warned for some time that our oversight agency, the Wisconsin Technical College System, didn't approve A & S teaching computer programming. One day around 2004 I got word that an apparatchik there had disallowed the state subsidy to all the IDC classes, essentially cancelling them; even our leaders found out indirectly when a staffer noticed they had disappeared from the approved list. I conceived a six step campaign to challenge them; the last step being to storm WTCS HQ with commandos ;). The labor background proved helpful. The new WTCS chief was a real loser, a Mississippi boy who thought that vocational education was second best, we should aspire to be like the University of Wisconsin. My letter to him went unanswered. We put up a site with student profiles and testimonials. I asked students to write letters to the WTCS president and board and got some great ones. They'd send me an electronic copy and I'd print out several copies for them, together with stamped, addressed envelopes, and hand them back saying, "Sign, put in envelopes, seal, and mail." Nothing - on to the next step, an online petition; I rolled my own and directed the eMail list to it, 1,000 contacts. The state has a site where you can look up your legislators based on address and I programmed it to take the list of signers and partition them by senate and assembly district, spitting out petitions to legislators from their constituents. I'd just started on the step after that, demanding that the WTCS president be fired as unfit, when he gave in. We had a big party at the Crowne Plaza to celebrate.
The school talks a good game about valuing adult and returning students but can be slow to adapt to their special needs. I greatly appreciated Arts and Sciences enabling my efforts, just letting me execute what was the only real workforce development effort in A & S. I had a string of good deans until the last one, a disturbed person who left MATC under a cloud when challenged in federal court for firing a good teacher who complained about anti-Semitic treatment at school. The judge and jury ordered that the teacher be reinstated and the school give him and his attorneys $1.1 million. She made my life hell for a while, crediting anonymous accusations and wanting to cancel my classes three or four months out when they weren't filling. That qualifies as not understanding adult education, where working students in the field often decide at the last moment to take a class; it was typical that my classes would fill to an expected level only the last weekend before classes, with stragglers coming in the first couple weeks. I landed fine, transferring elsewhere at my own request, but the experience underscores how very slow the school can be to correct bad behavior. The irony is that the same tolerance and hands-off management style that made my efforts possible protected her as well, even as she veered far beyond societal and school norms of good behavior.
The IT Department got on the ball with new leadership and an influx of new teachers keyed to current developments, including those two who came in with the capacity grant. They were stealing my thunder. There was always pressure to cut down on duplication and my arguments were that my methods and clientele were different than in a two year program and would sometimes hazard that it was pretty annoying to have duplication thrown in my face when someone else copied what I did. Never mind, the new IT Department did what they were supposed to be doing and did it well. My numbers declined, but I could usually fill four or five classes and was quick to jump on new technologies. Android was my last hurrah starting in 2010 and flagging numbers revived for a couple years, an old story for me when meeting a new need in a timely way. I transferred from Math to the IT Department around 2009 and was worried that my independence would be affected, that my classes and certificate would be subsumed into their programs. The first didn't happen but the second was starting to as Android was incorporated, but in such a gradual way that I hardly noticed and with my consent at every step. For the most part I continued on my merry way - a tip of the hat to that department and it's leadership.
Android development is great fun and those classes went well. All the tools are downloadable for any OS and free (Eclipse and the Android SDK from Google). The base language is Java and you develop on a PC or Mac and execute in an emulator right on the PC. Pretty klunky emulating Linux though (the Android OS is a fork) - better to download right to a phone or tablet across the charging cable after installing a USB driver on the development machine. Here are my projects for the first Android class. One of the projects for Advanced Android, just to give the idea, was to write a walking program tying geolocation to Google Maps, so a little path followed your movements along the street on a Google Map pane. That too can be tested in the emulator, but more fun to download the latest version of the app being developed to your phone and unplug it and out for a walk. Another project was uploading an app to Google Play; it costs $25 to register, one time only, then upload as many apps as you like (hat tip to Eric).
I enjoyed the career at MATC a great deal and figure I built it around my particular talents, such as they are, at the same time filling a need; my avocation had become my profession and that is a formula for job satisfaction. My deans were usually accommodating. You had to do your part - make the case that a course was appropriate and in demand and fill the seats. Then the school would give you some scope for action - let you take initiative and do things. What else can you ask?
Mike Bertrand
December 31, 2013